FastFiber

OPGELOST - hoe xref status van een specifieke xref ophalen in lisp?

Gestart door gery, vr 15 09 2017, 12:36:39

Vorige topic - Volgende topic

gery

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"
AutoCAD 2020 - Windows 10

roy_043

#1
(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.
      )
    )
  )
)

gery

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.
AutoCAD 2020 - Windows 10

gery

Bedankt voor de code Roy, mits aanpassing heb ik de code kunnen gebruiken voor mijn doel, top!
AutoCAD 2020 - Windows 10