JLAN Posté(e) le 14 juin 2006 Posté(e) le 14 juin 2006 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'avanceJean
(gile) Posté(e) le 14 juin 2006 Posté(e) le 14 juin 2006 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
JLAN Posté(e) le 14 juin 2006 Auteur Posté(e) le 14 juin 2006 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 encoreJean [Edité le 19/6/2006 par JLAN]
Patrick_35 Posté(e) le 14 juin 2006 Posté(e) le 14 juin 2006 SalutQue 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"exempleC'est le même chemin que pour savoir s'il est en xrefEncore 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
JLAN Posté(e) le 15 juin 2006 Auteur Posté(e) le 15 juin 2006 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.MerciJean
Patrick_35 Posté(e) le 15 juin 2006 Posté(e) le 15 juin 2006 J'ai un peu de mal à te comprendreSi le vla-get-path est vide, cela veux dire qu'autocad n'a pas trouvé le xrefSi tu souhaites attacher un xref, utilise AttachExternalReferenceS'il est lié, la fonction booléenne Bind, mais pas forcement trouvéLa fonction Detach pour enlever un xrefLa fonction reload pour recharger un xrefLa 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
JLAN Posté(e) le 16 juin 2006 Auteur Posté(e) le 16 juin 2006 Désolé de ne pas être clair, alors je vais expliquer différementDans 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 encoreJean
tyrese69_ Posté(e) le 17 juin 2006 Posté(e) le 17 juin 2006 Bonjour,Depuis les versions récentes d'AutoCAD cette fonction est intégrée ! Daniel
tyrese69_ Posté(e) le 17 juin 2006 Posté(e) le 17 juin 2006 Avec la version complète, en bas à droite de l'écrans'affiche un petit message qui indique que quelqu'una modifié l'xref "toto" utilisée dans votre dessin etqu'lle nécessite un rechargement !Cette action est dynamique. Une programmation estnécessaire dans le cas où les noms des fichiers on changés(issus d'une armoire à plan avec indice automatique !) @+ Daniel
tyrese69_ Posté(e) le 17 juin 2006 Posté(e) le 17 juin 2006 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
JLAN Posté(e) le 19 juin 2006 Auteur Posté(e) le 19 juin 2006 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant