|
AutoCAD... AutoLISP... VisualLISP... |
|
[21] Obiekty niegraficzne (1) |
|
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 wskanikó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")
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 |
|
|
|
|
|