AutoCAD... AutoLISP... VisualLISP...

  [28] Status XREF-a

index  

  W AutoCAD-zie można dołączyć osobny plik *.dwg do bieżącego rysunku jako element (rysunek) wskazywany przez odniesienie (ZODN - Zewnętrzny ODNośnik / XREF - eXternal REFerence). Odnośniki są swego rodzaju blokami. Przy wykorzystaniu odnośników zewnętrznych wszelkie zmiany w dołączonym rysunku są widoczne w rysunku bieżącym. Wstawione odnośniki są dołączane, ale nie wstawiane, do rysunków. XREF-y mogą mieć szerokie zastosowanie w pracy grupowej, i/lub w przypadku wykonywania dokumentów branżowych. Technika ta pozwala też, tworzyć rysunki o znacznie większych rozmiarach, przy mniej znaczącym spadku wydajności.
Dla programów lispowych operujących na odnośnikach zewnętrzych, dla wielu zadań, ważnym jest sprawdzenie jego statusu. Taki problem został zasygnalizowany na www.cad.pl - Jak odczytać status XREFa?.
Ponieważ dołączone XREF-y są traktowane tak jak bloki, należy "zbadać" listę kodów DXF, takiego odnośnika, ze szcególnym naciskiem na wartość kodu 70. Poniżej funkcja realizująca to zadanie. Argumentem funkcji jest nazwa odnośnika.
;;; =================================================================;;;
;;; zwraca status XREF-a                                             ;;;
;;; =================================================================;;;
(defun jk:BLK_XRefStat (Name / Data Obj Res) 
  (if 
    (setq Obj (tblobjname "BLOCK" Name)) 
    (progn 
      (setq Data (entget Obj)) 
      (if 
        (= (logand (setq Res (cdr (assoc 70 Data))) 4) 4) 
        Res 
        Nil 
      ) 
    ) 
    Nil 
  ) 
)
Funkcja może zwrócić NIL lub liczbę (INT), która to liczba jest większa lub równa 4. Wartość NIL w (dwóch przypadkach) oznacza: nie ma bloku (podanego jako argument funkcji NAME) lub istniejący blok NAME nie jest XREF-em. Zwrócona liczba INT może być równa 4 (można zastosować ReLoad) lub większa od 4 (np. 36) i wtedy można zastosować UnLoad.
Internetowe Dzienniki Biegowe