Coucou @reb_c2
Si tu veux accéder au chemin de ton XREF, tu peux passer par les propriétés Visual ou bien DXF.
En Visual LISP par exemple, si tu sélectionnes ton objet :
command: (setq XREF (vlax-ename->vla-object (car (entsel "\nSélectionner une référence externe : "))))
command: (vlax-dump-object XREF)
; IAcadExternalReference: Interface IAcadExternalReference
; Valeurs de propriétés:
; Application (RO) = #<VLA-OBJECT IAcadApplication 00007ff76b526d40>
; Document (RO) = #<VLA-OBJECT IAcadDocument 000001a5a60148a8>
; EffectiveName (RO) = "XREF_C3744_CHARME_2021041_plan topo_LAMBERT CC46 (ID 206032)"
; EntityTransparency = "DuCalque"
; Handle (RO) = "2F33AE"
; HasAttributes (RO) = 0
; HasExtensionDictionary (RO) = 0
; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 000001a5d37410e8>
; InsertionPoint = (0.0 0.0 0.0)
; InsUnits (RO) = "Mètres"
; InsUnitsFactor (RO) = 1.0
; IsDynamicBlock (RO) = 0
; Layer = "UBS-900-XREF TOPO"
; LayerPropertyOverrides (RO) = -1
; Linetype = "ByLayer"
; LinetypeScale = 1.0
; Lineweight = -1
; Material = "ByLayer"
; Name = "XREF_C3744_CHARME_2021041_plan topo_LAMBERT CC46 (ID 206032)"
; Normal = (0.0 0.0 1.0)
; ObjectID (RO) = 46
; ObjectName (RO) = "AcDbBlockReference"
; OwnerID (RO) = 47
; Path = "..\\..\\..\\206032\\L\\L\\XREF_C3744_CHARME_2021041_plan topo_LAMBERT CC46 (ID 206032).dwg"
; PlotStyleName = "ByLayer"
; Rotation = 0.0
; TrueColor = #<VLA-OBJECT IAcadAcCmColor 000001a5d37402a0>
; Visible = -1
; XEffectiveScaleFactor = 1.0
; XScaleFactor = 1.0
; YEffectiveScaleFactor = 1.0
; YScaleFactor = 1.0
; ZEffectiveScaleFactor = 1.0
; ZScaleFactor = 1.0
T
Avec la listes des propriétés Visual LISP de ta référence ci-dessus, on peut remarquer la propriété 'Path', qui correspond au chemin pour ton dessin DWG. Ainsi tu peux récupérer son chemin via
command: (vla-get-Path XREF)
"..\\..\\..\\206032\\L\\L\\XREF_C3744_CHARME_2021041_plan topo_LAMBERT CC46 (ID 206032).dwg"
Je t'ai affiché la liste de l'ensemble des propriétés Visual LISP de l'objet XREF afin de voir que la date par exemple n'ai pas visible ici.
En LISP vanilla, tu peux y accéder à partir de la définition de bloc de ta référence externe, comme ceci :
command: (setq XREF (car (entsel "\nSélectionner une référence externe : ")))
<Nom d'entité: 1a5b1e56ae0>
command: (setq NAME (cdr (assoc 2 (entget XREF))))
"XREF_C3744_CHARME_2021041_plan topo_LAMBERT CC46 (ID 206032)"
command: (setq XREF (tblsearch "BLOCK" NAME))
((0 . "BLOCK") (2 . "XREF_C3744_CHARME_2021041_plan topo_LAMBERT CC46 (ID 206032)") (70 . 36) (4 . "") (10 0.0 0.0 0.0) (1 . "..\\..\\..\\206032\\L\\L\\XREF_C3744_CHARME_2021041_plan topo_LAMBERT CC46 (ID 206032).dwg") (-2 . <Nom d'entité: 1a59c4a0e60>))
command: (setq PATH (cdr (assoc 1 XREF)))
"..\\..\\..\\206032\\L\\L\\XREF_C3744_CHARME_2021041_plan topo_LAMBERT CC46 (ID 206032).dwg"
Donc ici aussi, la date n'est pas visible dans la liste DXF de ta référence externe.
Je continue de creuser pour voir comment accéder aux propriétés que tu as énuméré mais pour l'instant, à part son chemin je ne trouve pas. Très certainement contenu dans un dictionnaire ou une extension de dictionnaire, à voir.
PS: Ou bien en effet en passant par la fonction (getpropertyvalue) avec les propriétés "External Path" et "BlockTableRecord/PathName" comme suggéré par @_gile 🙂
Bisous,
Luna