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

  [21] Obiekty niegraficzne (1)

index  

  Większość z użytkowników AutoCAD-a, a z pewnością wszyscy programujący w języku AutoLISP, spotkali się z określeniem "rysunkowa baza danych AutoCAD-a". Najogólniej mówiąc są to struktury danych opisujących wszystkie elementy i obiekty tworzące dokument (rysunek) AutoCAD-a. AutoLISP posiada dostęp do rysunkowej bazy danych AutoCAD-a, interpretując dane w postaci list par kropkowych (zwanym ogólnie formatem DXF). Programujący w AutoLISP-ie, mogą zwiększać użyteczność swoich aplikacji wykorzystując możliwości jakie oferują obiekty niegraficzne. Niniejsze omówienie dotyczy obiektów niegraficznych typu słownik (DICTIONARY) i danych o nazwie XRECORD. Wszystkie omawiane zagadnienia (oraz przedstawione przykłady i programy), dotyczą AutoCAD-a 2000 (i wyższych). Użytkownicy wcześniejszych wersji muszą liczyć się z faktem, że niektóre prezentowane metody manipulacji obiektami niegraficznymi, nie będą miały zastosowania.

»  Obiekty a elementy

Rysunkowa baza danych AutoCAD-a składa się z obiektów graficznych i niegraficznych. W celu łatwej identyfikacji możemy przyjąć że definicja obiektów różni się od elementów w ten sposób: obiekty nie mają reprezentacji graficznej a elementy mają. Obiektami graficznymi są wobec tego wszystkie entycje (np. LINE, CIRCLE, 3DSOLID itd.), a obiektami niegraficznymi są tablice symboli (LAYER, LTYPE, BLOCK_RECORD itd.), oraz tzw. SŁOWNIKI (obiekty o nazwie DICTIONARY). W związku z tym, jeżeli nie zostało to inaczej zaznaczone, w niniejszym tekście słowo elementy odnościć się będzie do obiektów graficznych, a słowo obiekt do obiektów niegraficznych. Słowniki pojawiły się w AutoCAD-zie R13 wraz z pojawieniem się elementów typu MLINE (multilinia lub wielolinia) i GROUP (grupy - nazwane zbiory wskazań). W kolejnych wersjach AutoCAD-a, można zauważyć rosnące znaczenie słowników (i związanych z nimi innych obiektów niegraficznych), w konsekwencji skutkującymi nowymi właściwościami programu.
Obiekty mogą być definiowane przez AutoCAD-a, bądz też przez programy mające dostęp do ARX API. AutoLISP oferuje kilka narzędzi dostępu od niegraficznych obiektów rysunku AutoCAD-a.

»  Słownik nazwanych obiektów (Named Objects Dictionary)

Słownik nazwanych obiektów jest głównym właścicielem wszystkich niegraficznych obiektów, wchodzących w skład rysunku, za wyjątkiem obiektów i klas powiązanych ze strukturą DXF AutoCAD-a R13 lub wcześniejszą. Podobnie jak i w innych słownikach, rekord słownika nazwanych obiektów składa się wyłącznie z powiązanych ze sobą par nazw elementów oraz odnośników w postaci stałych wskaŸników przynależności do skojarzonego obiektu. Dostęp do słownika nazwanych obiektów otwiera nam standardowa funkcja namedobjdict.
Wywołanie w linii poleceń:
(namedobjdict)
zwraca nazwę obiektu np.: {Nazwa elementu: 1847860}
natomiast wywołanie:
(entget (namedobjdict))
może zwrócić listę podobną do tej:
((-1 . {Nazwa elementu: 1847860}) (0 . "DICTIONARY") (330 . {Nazwa elementu: 0}) (5 . "C")
(
100 . "AcDbDictionary") (280 . 0) (281 . 1) (3 . "ACAD_GROUP") (350 . {Nazwa elementu: 1847868}) (3 . "ACAD_LAYOUT") (350 . {Nazwa elementu: 184ac38}) (3 . "ACAD_MLINESTYLE")
(
350 . {Nazwa elementu: 1847870}) (3 . "ACAD_PLOTSETTINGS") (350 . {Nazwa elementu: 184ac40})
(
3 . "ACAD_PLOTSTYLENAME") (350 . {Nazwa elementu: 184ac28}))


Jak widać otrzymana lista jest "zwykłą" listą danych DXF, podobną do listy danych każdego obiektu graficznego. Zwróćmy uwagę że, nazwa (klucz) obiektów tworzonych przez AutoCAD-a poprzedzana jest zawsze przedrostkiem ACAD_. Pozostałe aplikacje Autodesk-u mają zarezerwowane prawo do użycia przedrostków zaczynających się od AC. Aby uniknąć kolizji nazw tworząc własne słowniki (i/lub dodając wpisy do słownika) należy zdefiniować własną unikalną nazwę. Dobrym zwyczajem (ułatwiającym rozpoznawanie, zarządzanie i modyfikowanie wpisów) jest tworzenie nazw składających się z jednolitego przedrostka po którym następuje właściwa nazwa. Nie zagłębiając się teraz w szczegóły, w tej chwili interesować nas będą wartości par kropkowych o kodach 3 (nazwa pozycji) i 350 (identyfikator obiektu pozycji).
     
Powyższy rysunek ilustruje drzewiastą strukturę Named Objects Dictionary. Poszczególne gałęzie są obiektami typu DICTIONARY. Wszystkie są utworzone przez AutoCAD-a.

Niniejszy tekst jest nieco zmienioną (zaktualizowaną) częścią tekstu który napisałem w 2000 roku(!) na temat obiektów niegraficznych.
Zobacz także: Własny XRECORD, Obiekty niegraficzne - XRECORD