Aller au contenu

Status d\'une XRef sous VBA


Messages recommandés

Posté(e)

Existe t-il un moyen de récupérer l'information du status d'une XRef pour savoir si elle est chargée, à mettre à jour ou introuvable, dans un programme VB, comme on la trouve dans le gestionnaire des XRef?

Merci d'avance

Jean

Posté(e)

Salut

 

Je ne connais rien en VBA, mais je pense que pour accéder aux propriétés d'une xref il faut la retrouver dans la collection de blocs du dessin dans une boucle avec ActiveDocument, Item, Blocks, Name et la propriété, eventuellement IsXref puis récupérer les propriétés de l'objet bloc/xref.

 

en VisualLISP, on fait comme çà.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Il me manque quand même la fin, car je trouve bien avec cette routine la liste des blocs qui sont des références externes, mais je n'arrive toujours pas à déterminer si ces références sont à recharger, car je ne sais pas dans quel paramètre cette information est stockée.

 

Voici mon script à affecter à un simple bouton dans une Feuille VBA

Private Sub CommandButton1_Click()
   Dim refext As AcadExternalReference
   Dim AcadObjet As AcadObject
   Dim MonBloc As AcadBlock
   Dim trouvé As Boolean
   trouvé = False
   On Error GoTo NonOK
   For Each AcadObjet In ThisDrawing.Blocks
       'MsgBox ("Les objets de la fenêtre sont: " & TypeName(AcadObjet))
       If TypeName(AcadObjet) = "IAcadBlock2" Or TypeName(AcadObjet) = "IAcadBlock" Then
           Set MonBloc = AcadObjet
           If MonBloc.IsXRef Then
               MsgBox ("Le nom de la référence externe est " & MonBloc.Name)
           End If
           trouvé = True
       End If
   Next
NonOK:
   If trouvé = False Then
       MsgBox ("Il n'y a pas de référence externe dans ce dessin")
       Exit Sub
   End If
End Sub

Quelqu'un a-t-il l'info que je cherche?

Merci encore

Jean

 

[Edité le 19/6/2006 par JLAN]

Posté(e)

Salut

Que veux tu dire par recharger ??? :casstet:

Que le xref n'a pas été trouvé par exemple ou que tu dois le recharger manuellement car il a évolué ???

Si c'est dans le premier cas, il suffit de regarder dans le chemin (path)

Un exemple en vlisp :P

(setq ch (vla-get-path (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) 2)))

le 2 est pour le premier bloc si une seule présentation et c'est pour l"exemple

C'est le même chemin que pour savoir s'il est en xref

Encore un exemple en vlisp pour que tu puisses faire la transition avec ton vba ;)

(setq ref (vla-get-isxref (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) 2)))

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Oui, c'est bien l'information qui permet à Autocad d'afficher dans le gestionnaire de programme, dans la colonne Etat, les différentes possibilités "Chargée" , "Rechargement nécessaire" , "Introuvable" . Je ne sais pas dans quel paramètre est stocké cette information.

Merci

Jean

Posté(e)

J'ai un peu de mal à te comprendre

Si le vla-get-path est vide, cela veux dire qu'autocad n'a pas trouvé le xref

Si tu souhaites attacher un xref, utilise AttachExternalReference

S'il est lié, la fonction booléenne Bind, mais pas forcement trouvé

La fonction Detach pour enlever un xref

La fonction reload pour recharger un xref

La fonction Unload pour décharger un xref

 

ce qui donne en vlisp pour recharger un xref et en conservant la même logique que précédemment

(vla-reload (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) 2))

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Désolé de ne pas être clair, alors je vais expliquer différement

Dans mon plan d'ensemble, j'ai pas mal de XRef qui sont importées, et je voudrai faire une comande qui aille recharger une des XRef qui a été modifiée, sans pour autant recharger toutes les autres, car ça prends pas mal de temps.

Il faut donc que je trouve parmis les XRef de mon plan, celle qui a été modifiée recemment, et cette information doit bien être enregistrée quelque part, car elle apparait bien dans le gestionnaire des XRef, mais il est lourd à utiliser, car il faut localiser celle-ci dans une liste assez longue, la sélectionner, puis cliquer sur le bouton recharger avant de faire OK.

A moins qu'il n'existe dans AUTOCAD une option qui permettrai de remettre à jour systématiquement une XRef qui aurait été modifiée?

Merci encore

Jean

Posté(e)

Avec la version complète, en bas à droite de l'écran

s'affiche un petit message qui indique que quelqu'un

a modifié l'xref "toto" utilisée dans votre dessin et

qu'lle nécessite un rechargement !

Cette action est dynamique. Une programmation est

nécessaire dans le cas où les noms des fichiers on changés

(issus d'une armoire à plan avec indice automatique !)

 

@+ Daniel

Posté(e)

Juste un extrait de l'aide :

Lorsque XLOADCTL a la valeur 2, une copie de chaque fichier de dessin référencé est stockée dans le dossier spécifié par la variable système XLOADPATH ou dans le dossier de fichiers temporaires (défini dans la boîte de dialogue Options). Par ailleurs, les xréfs se chargent plus rapidement lorsque vous travaillez en réseau : l'amélioration des performances prend tout son sens lorsque vous ouvrez des dessins comportant un grand nombre de xréfs.

 

Daniel

Posté(e)

Quand il n'y a pas beaucoup de références externes, j'utilise effectivement ce petit icone, mais quand il y a beaucoup de références externes, je trouve que ça prend un temps fou pour juste une petite référence à charger, et je trouve que c'est long de la chercher dans la liste. J'avoue être un peu impatient, alors je cherche une méthode pour accélérer les choses... Mais peu-être n'a t-on pas accès à infoermation autrement que par le gestionnaire des références externes?

 

Je me suis rendu compte aussi que l'on a pas accès à la modification du nom d'une référence externe AcadXref.name, alors que l'on a accès à la modification du chemin AcadXref.path.

Jean

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité