CADsite forum

AutoCAD => Autolisp => Topic gestart door: gery op vr 15 09 2017, 12:36:39

Titel: OPGELOST - hoe xref status van een specifieke xref ophalen in lisp?
Bericht door: gery op vr 15 09 2017, 12:36:39
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"
Titel: Re: hoe xref status van een specifieke xref ophalen in lisp?
Bericht door: 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).

; (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.
      )
    )
  )
)
Titel: Re: hoe xref status van een specifieke xref ophalen in lisp?
Bericht door: gery op vr 15 09 2017, 18:50:33
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.
Titel: Re: hoe xref status van een specifieke xref ophalen in lisp? (OPGELOST)
Bericht door: gery op za 16 09 2017, 10:20:46
Bedankt voor de code Roy, mits aanpassing heb ik de code kunnen gebruiken voor mijn doel, top!