|
AutoCAD... AutoLISP... VisualLISP... |
|
[59] Tablice symboli |
AutoCAD obsługuje dwa rodzaje obiektów niegraficznych. Są to słowniki (obiekty typu DICTIONARY) oraz tablice symboli (obiekty TABLE). Tablice symboli to obiekty niegraficzne rysunkowej bazy danych AutoCAD-a, w których znajdują się definicje innych nazwanych obiektów takich jak bloki, rodzaje linii, style tekstu, widoki itd. W każdym rysunku istnieją tablice o następujących nazwach:
ai_utils.lsp. Plik ten jest zawsze wczytywany wraz ze startem programu. Znajduje się w nim (między innymi) niezykle użyteczna funkcja o nazwie AI_TABLE. Umożliwia ona dostęp do wszystkich tablic symboli i zwraca nazwy zawartych w nich obiektów. Funkcja ma dwa argumenty: nazwę tablicy (STR) oraz bit (INT) określajacy filtrowanie.
Wartości bitów i ich znaczenia są następujące:
(ai_table "BLOCK" (+ 2 4 8))
zwraca listę wszystkich bloków w rysunku z wyłączeniem bloków anonimowych, bloków zależnych od odnośników zewnętrzych, oraz samych odnośników)
Sposób w jaki funkcja ai_table działa można przeanalizować w pliku ai_utils.lsp, znajduje się on w katalogu Support instalacji AutoCAD-a.
Pomimo tego że ai_table jest bardzo przydatna, w wielu zastosowaniach potrzebowałem takiej funkcji która umożliwiała by przegląd dowolnej tablicy w oknie dialogowym, wybór jednego lub kilku obiektów. Ponieważ chciałem wykorzystywać jedną funkcję służącą do tego celu, w wielu programach, w wielu różnych zastosowaniach, padł pomysł aby napisać taką uniwersalną funkcję biblioteczną. W części odwołuje się właśnie do ai_table, zatem działać będzie tylko w przypadku załadowania ai_utils.lsp. Funkcja nazywa się
jk:TBL_Table i wymaga siedmiu argumentów:(jk:TBL_Table Table Bit Title WText MSel Pos TypeRes)Kolejno są to:
(jk:TBL_Table "APPID" 0 "Aplikacje" nil nil 0 1)wyświetli okno dialogowe: |
![]() |
i zwróci (jeżeli wybrany zostanie przycisk OK): ("ACAD") |
Inne przykłady działania funkcji jk:TBL_Util to: |
|
![]()
aktualizacja: 25-02-2010
Plik: tableutil.fas
|
|
![]() |
|
|
|
|