Aller au contenu

[RESOLU] lire le chemin d'une XREF


Messages recommandés

Posté(e)

Bonjour à Toutes et à Tous,

 

Je cherche la syntaxe pour lire simplement le chemin de la XREF sélectionnée ?! (via un ENTSEL par exemple)... Stcoker le chemin dans un SETQ pour le réutiliser par la suite...

 

J'ai regardé du coté des (ENTNEXT) mais visiblement pas de chemin ?

 

Je remarque également qu'une XREF est reconnue comme un BLOC !

 

Merci pour votre aide.

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

Salut,

 

Il faut chercher dans la définition de bloc de la référence externe.

 

Un petit exemple (sans vérifications de la sélection) :

(setq chemin
      (cdr
 (assoc
   1
   (tblsearch
     "block"
     (cdr (assoc 2 (entget (car (entsel "\nSélectionnez une référence externe: ")))))
   )
 )
      )
)

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

Posté(e)

Hello

 

Voici un excellente Routine de DannyNL qui t'aidera peut etre !?

 

Elle cree un fichier texte avec le Nom de TOUTEs les XREFs du dessin ...

 

Bye, lecrabe

 

;; 
;; https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/list-all-xrefs-in-a-dwg-and-open-in-notepad/m-p/7409660#M359267
;; 
;; Routine: ListXref by DannyNL
;; 

(vl-load-com)

(defun c:ListXref ()

   (setq activedocument (vla-get-activedocument (vlax-get-Acad-Object)));_setq finit
   (setq lesblocks (vla-get-blocks activedocument));_setq finit
   (setq xrefliste '());_setq finit
   (vlax-for item lesblocks
       (setq ouixref (vlax-get-property item 'isXref));_setq finit
       (if (= ouixref :vlax-true);_si c'est vrai...
           (progn
               (setq ablock (vlax-get-property item 'Name));... Lisez le nom du block ...
               (setq xrefliste (append (list ablock) xrefliste));... ajoutez le nom de la liste ...
           );_progn finit
       );_if finit
   );_vlax for finit
   (defun ouvreznotepad (listexref skille / f of)
       (setq f (strcat (getvar 'TEMPPREFIX) "§XrefsTemp§.txt")
           of (open f "w"))
       (setq n 0)
       (mapcar
           (function
               (lambda (lp)
                   (princ (setq n (1+ n)) of)(princ skille of)(princ lp of)
                   (princ "\n" of)
               )
           )
       listexref
       )
       (close of)
       (startAPP (strcat "notepad.exe " f))
       (princ)
   )
   (print xrefliste)
   (ouvreznotepad xrefliste "\t")
   (princ)
);_defun finit

(princ)

Autodesk Expert Elite Team

Posté(e)

Une version plus "robuste" avec quelques commentaires :

 

(if
 (and
   (setq xref (car (entsel)))		; une entité est sélectionnée
   (= "INSERT" (cdr (assoc 0 (entget xref)))) ; c'est une référence de bloc
   (setq def (tblsearch "block" (cdr (assoc 2 (entget xref))))) ; la définition du bloc
   (= 4 (logand 4 (cdr (assoc 70 def)))) ; c'est une référence externe
 )
  (setq chemin (cdr (assoc 1 def)))	; le chemin de la référence
)

 

Ou, plus simple, avec les nouvelles fonctions (2012) :

 

(if
 (and
   (setq xref (car (entsel))); une entité est sélectionnée
   (= (getpropertyvalue xref "LocalizedName") "Référence externe"); c'est une référence externe
 )
  (setq chemin (getpropertyvalue xref "ExternalPath")); le chemin de la référence
)

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

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é