Hoe kan ik in lisp de (unreferenced) status van een specifieke xref uitlezen?
Ik kan via lisp-code "(tblsearch "block" xref)" (waarbij "xref" de naam van de xref-tekening is) bepalen of in een tekening een specifieke xref "attached" of overlayed" is, maar ik zou ook willen weten of deze specifieke xref ook "unreferenced" is of niet.
Iemand een idee?
edit: de term "geladen" was slecht gekozen en heb deze term vervangen door "attached" en "overlayed"
(tblsearch "block" xref) geeft geen uitsluitsel of een xref geladen is (in de zin van gevonden).
; (XrefState "BestaatNiet") => nil
; (XrefState "GeenXref") => nil
; (XrefState "Xref") => (<Resolved: T/nil> <Referenced: T/nil>)
(defun XrefState (nme / elst enm)
(if
(and
(setq enm (tblobjname "block" nme))
(setq elst (entget enm))
(= 4 (logand (cdr (assoc 70 elst)) 4))
)
(list
(= 32 (logand (cdr (assoc 70 elst)) 32)) ; Resolved.
(vl-some ; Referenced. (= 64 (logand (cdr (assoc 70 elst)) 64)) is niet altijd accuraat.
'(lambda (sub)
(and
(= 331 (car sub))
(not (vlax-erased-p (cdr sub)))
)
)
(entget (cdr (assoc 330 elst))) ; BLOCK_RECORD.
)
)
)
)
Citaat van: roy_043 op vr 15 09 2017, 16:41:43
(tblsearch "block" xref) geeft geen uitsluitsel of een xref geladen is (in de zin van gevonden).
"Geladen" is misschien het verkeerde woord, maar eerder "attached" of "overlayed" in de tekening.
Bedankt voor de code Roy, mits aanpassing heb ik de code kunnen gebruiken voor mijn doel, top!