metody uruchamiania programów jĘzyka autolisp · pdf filejĘzyka autolisp w...

8
959 Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Wojskowa Akademia Techniczna METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP W ŚRODOWISKU AutoCAD Streszczenie: W referacie przedstawiono możliwości tworzenia poleceń w programie AutoCAD z wykorzystaniem interfejsu automatyzacji OLE oraz języka AutoLISP i środowiska VisualLISP. METHODS OF RUNNING AutoLISP PROGRAMS IN AutoCAD ENVIRONMENT Abstract: The paper presents the possibilities of creating commands in AutoCAD application using OLE Automation interface, AutoLISP language and VisualLISP environment. 1. WPROWADZENIE Wykorzystując programy komputerowego wspomagania projektowania, użytkownicy dążą do automatyzacji zadań związanych z obsługą powtarzalnych zadań projektowych. W tym celu wykorzystuje się specjalizowane programy lub polecenia, które standardowo nie są dołączane do programów typu CAD. Programy te wykorzystują API (ang. Application Programming Interface), czyli interfejs programowania aplikacji (sposób komunikacji z systemem operacyjnym i innymi programami) [1, 2]. Interfejs programowania aplikacji determinuje sposób wprowadzania poleceń w systemach CAD. Rozwój API w systemach CAD przedstawiony zostanie na przykładzie programu komputerowego wspomagania projektowania, jakim jest AutoCAD. AutoCAD 2.0, który ukazał się w roku 1984, zawierał język programowania menu, zapewniał zmiany układu pozycji menu, submenu oraz tworzenie skryptów i makropoleceń. Nie posiadał jeszcze typowego środowiska programistycznego, które umożliwiałoby definiowanie zmiennych oraz tworzenie instrukcji sterujących programu. Podstawą do stworzenia takiego środowiska uczyniono język LISP (ang. LISt Processing), a dokładniej jego odmianę XLISP, którą rozwinięto i nazwano AutoLISP. Użytkownicy mogli wykorzystywać w kodzie tego języka standardowe polecenia programu AutoCAD i odwrotnie – wywoływać polecenia języka AutoLISP z linii poleceń programu macierzystego. AutoLISP ściśle zintegrowano z programem AutoCAD, dzięki czemu mógł być wykorzystywany do znacznego rozbudowywania możliwości programu. W maju 1986 roku umożliwiono wywoływanie z poziomu programu AutoCAD poleceń zewnętrznych (shellowych). W 1992 r. wbudowano język DCL (Dialog Control Language) służący do definiowania okien dialogowych. W tym samym roku AutoCAD R12 otrzymał interpreter języka DIESEL (Direct Interpretively Evaluated String Expression Language – język wyrażeń łańcuchowych). Następnym krokiem na drodze rozwoju API programu AutoCAD było dodanie języka kompilowanego. Wybrano język C, który rozszerzono o zestaw bibliotek, nazwano ADS(AutoCAD Development System) i dołączono w roku 1990 do wersji jedenastej programu

Upload: votuong

Post on 24-Mar-2018

232 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP · PDF fileJĘZYKA AutoLISP W ŚRODOWISKU AutoCAD ... Application Programming Interface), czyli interfejs programowania aplikacji (sposób

959

Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Wojskowa Akademia Techniczna

METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP W ŚRODOWISKU AutoCAD

Streszczenie: W referacie przedstawiono możliwości tworzenia poleceń w programie AutoCAD z wykorzystaniem interfejsu automatyzacji OLE oraz języka AutoLISP i środowiska VisualLISP.

METHODS OF RUNNING AutoLISP PROGRAMS

IN AutoCAD ENVIRONMENT

Abstract: The paper presents the possibilities of creating commands in AutoCAD application using OLE Automation interface, AutoLISP language and VisualLISP environment.

1. WPROWADZENIE Wykorzystując programy komputerowego wspomagania projektowania, użytkownicy dążą do automatyzacji zadań związanych z obsługą powtarzalnych zadań projektowych. W tym celu wykorzystuje się specjalizowane programy lub polecenia, które standardowo nie są dołączane do programów typu CAD. Programy te wykorzystują API (ang. Application Programming Interface), czyli interfejs programowania aplikacji (sposób komunikacji z systemem operacyjnym i innymi programami) [1, 2]. Interfejs programowania aplikacji determinuje sposób wprowadzania poleceń w systemach CAD. Rozwój API w systemach CAD przedstawiony zostanie na przykładzie programu komputerowego wspomagania projektowania, jakim jest AutoCAD. AutoCAD 2.0, który ukazał się w roku 1984, zawierał język programowania menu, zapewniał zmiany układu pozycji menu, submenu oraz tworzenie skryptów i makropoleceń. Nie posiadał jeszcze typowego środowiska programistycznego, które umożliwiałoby definiowanie zmiennych oraz tworzenie instrukcji sterujących programu. Podstawą do stworzenia takiego środowiska uczyniono język LISP (ang. LISt Processing), a dokładniej jego odmianę XLISP, którą rozwinięto i nazwano AutoLISP. Użytkownicy mogli wykorzystywać w kodzie tego języka standardowe polecenia programu AutoCAD i odwrotnie – wywoływać polecenia języka AutoLISP z linii poleceń programu macierzystego. AutoLISP ściśle zintegrowano z programem AutoCAD, dzięki czemu mógł być wykorzystywany do znacznego rozbudowywania możliwości programu. W maju 1986 roku umożliwiono wywoływanie z poziomu programu AutoCAD poleceń zewnętrznych (shellowych). W 1992 r. wbudowano język DCL (Dialog Control Language) służący do definiowania okien dialogowych. W tym samym roku AutoCAD R12 otrzymał interpreter języka DIESEL (Direct Interpretively Evaluated String Expression Language – język wyrażeń łańcuchowych). Następnym krokiem na drodze rozwoju API programu AutoCAD było dodanie języka kompilowanego. Wybrano język C, który rozszerzono o zestaw bibliotek, nazwano ADS(AutoCAD Development System) i dołączono w roku 1990 do wersji jedenastej programu

Page 2: METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP · PDF fileJĘZYKA AutoLISP W ŚRODOWISKU AutoCAD ... Application Programming Interface), czyli interfejs programowania aplikacji (sposób

960

AutoCAD. Przykładem możliwości nowego środowiska był opracowany w ADS system modelowania bryłowego AME. Na przełomie 1993 i 1994 roku wprowadzono nowe środowisko ARX (AutoCAD Runtime Extension). Wersja R12 zawierała interpretery do rekompilacji menu i tworzenia makr, wbudowany translator języka AutoLISP, interpreter języka DIESEL oraz zintegrowane środowisko programistyczne ADS/ARX. W latach dziewięćdziesiątych firma Autodesk zaczęła wykorzystywać w budowie i w działaniu oprogramowania technikę obiektową, w której istotny był dostęp do struktur obiektów. W roku 1995 stworzono całkowicie nową technikę ObjectARX, która zapewniła (przez ActiveX Automation w systemie Windows) dostęp do obiektów także z innych środowisk programistycznych, takich jak Visual Basic, Visual C++ czy Delphi. ObjectARX i ActiveX Automation stały się podstawowymi środowiskami do tworzenia nowych aplikacji. Pierwszą technikę wykorzystywano do budowania skomplikowanych programów, drugą – by umożliwić dostęp do obiektów w innych systemach. W marcu 1998 roku do programu AutoCAD R14 dołączono język VisualLISP (stał się on integralną częścią programu AutoCAD). VisualLISP opracowano na bazie języka AutoLISP i obiektowej techniki ObjectARX, dzięki czemu uzyskano integrację API z Microsoft Windows. W następnych wersjach programu AutoCAD dodano kolejne języki programowania, w tym m.in. Javę. W ten sposób program AutoCAD zaczął oferować użytkownikom narzędzia programistyczne, takie jak: Java, AutoLISP, Visual Basic, Visual Basic for Applications (VBA), Visual LISP, Visual C++ (przez ObjectARX), Delphi, technikę ActiveX Automation i COM (Component Object Model). Dostosowanie programu AutoCAD polega na dodaniu do środowiska systemu CAD własnych poleceń które pozwolą na przeprowadzenie pożądanych operacji, np. automatyczne generowanie elementów składowych rysunku na podstawie przeprowadzonych obliczeń inżynierskich. Głównym powodem stosowania automatyzacji jest zatem oszczędność czasu przy wykonywaniu czynności powtarzalnych, co prowadzi również do bardziej produktywnego wykorzystania systemów CAD [3]. 2. DEFINIOWANIE PAKIETU URUCHOMIENIOWEGO PROGRAMU AutoCAD AutoLISP jest specjalną odmianą języka programowania LISP (List Processing) pracującą w środowisku programu AutoCAD. Język AutoLISP pozwala przetwarzać zmienne liczbowe, tekstowe i listy, umożliwia obsługiwanie plików i wprowadzanie obiektów, używając do tego celu interpretera graficznego programu AutoCAD. Ogromną zaletą języka AutoLISP jest możliwość tworzenia poleceń, które w sposób automatyczny wprowadzają obiekty, np. na podstawie wyników z bazy danych czy danych zawartych w plikach tekstowych. Programy języka AutoLISP tworzone są w środowisku VisualLISP, które posiada własny edytor i kompilator.

Rys. 1. Uruchamianie poleceń języka AutoLISP

Page 3: METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP · PDF fileJĘZYKA AutoLISP W ŚRODOWISKU AutoCAD ... Application Programming Interface), czyli interfejs programowania aplikacji (sposób

961

Aplikacje i procedury języka AutoLISP mogą współdziałać z programem AutoCAD na wiele sposobów. Procedury te mogą monitować użytkownika o wprowadzenie danych, bezpośrednio wywoływać wbudowane polecenia programu AutoCAD i modyfikować lub tworzyć obiekty w bazie danych rysunku. Poprzez tworzenie procedur AutoLISP można dodawać do programu AutoCAD nowe polecenia, specyficzne dla dziedziny pracy użytkownika. Wiele standardowych poleceń programu AutoCAD to w rzeczywistości aplikacje AutoLISP, przykładem mogą tu być polecenia narzędzia, jakim jest Express Tools. Język AutoLISP stosuje trzy opcje formatu pliku dla tworzonych aplikacji: plik LSP (*.lsp) – plik tekstowy ASCII zawierający kod programu AutoLISP plik FAS (*.fas) – skompilowana, binarna wersja pojedynczego pliku programu LSP plik VLX (*.vlx) – skompilowany zestaw jednego lub więcej plików LSP lub plików

języka sterowania oknami dialogowymi (DCL). Program AutoCAD pozwala na definiowanie pakietu uruchomieniowego, czyli zbioru programów, które mają być automatycznie wczytywane po starcie systemu CAD (patrz poniższy rysunek).

Rys. 2. Definiowanie pakietu uruchomieniowego

Page 4: METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP · PDF fileJĘZYKA AutoLISP W ŚRODOWISKU AutoCAD ... Application Programming Interface), czyli interfejs programowania aplikacji (sposób

962

Procedury języka AutoLISP można wczytywać przy każdorazowym uruchomieniu programu AutoCAD. Można również wykonywać pewne polecenia lub funkcje w określonym momencie podczas sesji rysunkowej. Program AutoCAD automatycznie wczytuje zawartość trzech definiowanych przez użytkownika plików acad.lsp, acaddoc.lsp oraz pliku *.mnl, który określa bieżący plik dostosowywania menu programu. Domyślnie plik acad.lsp jest wczytywany tyko raz przy uruchomieniu programu AutoCAD, natomiast plik acaddoc.lsp jest wczytywany wraz z każdym dokumentem (lub rysunkiem). Domyślną metodę wczytywania tych plików startowych można zmienić przez zmianę ustawień zmiennej systemowej ACADLSPASDOC (określa ona, czy plik acad.lsp będzie wczytywany dla każdego rysunku czy tylko do pierwszego rysunku otwartego w danej sesji: 0 – wczytuje acad.lsp do pierwszego rysunku otwartego w sesji, 1 –wczytuje acad.lsp do każdego otwieranego rysunku). Pliki startowe acad.lsp i acaddoc.lsp nie są dostarczane z programem AutoCAD. Tworzenie i utrzymywanie tych plików zależy tylko od użytkownika. Innym sposobem definiowania pakietu uruchomieniowego jest wczytanie ścieżek dostępu do plików *.lsp z poziomu dostosowywania interfejsu użytkownika (przy wykorzystaniu polecenia CUI).

Rys. 3. Dostosowanie interfejsu użytkownika programu AutoCAD

Kolejną możliwością wczytywania poleceń programu AutoCAD jest wykorzystanie (edycja) pliku acad.pgp (pliku dostosowania interfejsu poleceń użytkownika).Za każdym razem, kiedy otwierany jest nowy lub istniejący rysunek, program AutoCAD przeszukuje ścieżkę katalogu pomocniczego i odczytuje parametry pierwszego napotkanego pliku acad.pgp. Poprzez edycję pliku acad.pgp można w czasie pracy z programem AutoCAD wywoływać inne programy i narzędzia, takie jak polecenia systemu Windows. Można zdefiniować zewnętrzne polecenie przez określenie nowej nazwy, jaka ma być wywołana z wiersza polecenia programu AutoCAD, można także zdefiniować ciąg poleceń wykonawczych, które mają być przekazane do systemu operacyjnego. W sekcji „Skróty poleceń” tego pliku można zmienić domyślne ustawienia skrótów i poleceń programu AutoCAD, natomiast w sekcji „Skróty poleceń użytkownika”, który znajduje się na końcu pliku acad.pgp, zaleca się umieszczanie nowo tworzonych poleceń programu.

Page 5: METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP · PDF fileJĘZYKA AutoLISP W ŚRODOWISKU AutoCAD ... Application Programming Interface), czyli interfejs programowania aplikacji (sposób

963

Rys. 4. Edytowanie parametrów programu AutoCAD

3. TWORZENIE POLECEŃ ZA POMOCĄ JĘZYKA AutoLISP Dla potrzeb przetestowania możliwości utworzenia nowego polecenia za pomocą języka programowania AutoLISP opracowano program komputerowy „3p.lsp” [4]. Jest to nowe polecenie programu AutoCAD, które pozwala na wprowadzenie w obszarze modelu okręgu przechodzącego przez trzy kolejno wskazane punkty. Na poniższym rysunku przedstawiono okrąg przechodzący przez trzy kolejne punkty P1, P2 i P3.

Rys. 5. Środek okręgu przechodzący przez trzy punkty

Współrzędne poszczególnych wskazanych punktów (p1.x, p1.y, p2.x, p2.y p3.x, p3.y) służą do wyznaczenia położenia środka (Xs,Ys) i promienia okręgu przechodzącego przez te punkty.

푋 =12∙푝 . ∙ 푝 . + 푝 . ∙ 푝 . − 푝 . ∙ 푝 . + 푝 . ∙ 푝 . − 푝 . ∙ 푝 . + 푝 . ∙ 푝 .

푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 . + 푝 . ∙ 푝 . + 푝 . ∙ 푝 .+

+12∙

푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 .

푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 . + 푝 . ∙ 푝 . + 푝 . ∙ 푝 .

(1.1)

푌 =12∙−푝 . ∙ 푝 . + 푝 . ∙ 푝 . + 푝 . ∙ 푝 . + 푝 . ∙ 푝 . + 푝 . ∙ 푝 . + 푝 . ∙ 푝 .

푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 . + 푝 . ∙ 푝 . + 푝 . ∙ 푝 .+

+12∙−푝 . ∙ 푝 . − 푝 . ∙ 푝 . + 푝 . ∙ 푝 . − 푝 . ∙ 푝 . + 푝 . ∙ 푝 . − 푝 . ∙ 푝 .

푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 . − 푝 . ∙ 푝 . + 푝 . ∙ 푝 . + 푝 . ∙ 푝 .

(1.2)

Page 6: METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP · PDF fileJĘZYKA AutoLISP W ŚRODOWISKU AutoCAD ... Application Programming Interface), czyli interfejs programowania aplikacji (sposób

964

Język programowania AutoLISP wykorzystuje „specyficzne” operatory działań arytmetycznych, w związku z tym kod programu pozwalający na obliczenie parametrów środka okręgu jest bardziej rozbudowany [4].

Rys. 6a. Kod programu wyznaczający współrzędne środka okręgu

przechodzącego przez trzy punkty

Page 7: METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP · PDF fileJĘZYKA AutoLISP W ŚRODOWISKU AutoCAD ... Application Programming Interface), czyli interfejs programowania aplikacji (sposób

965

Rys. 6b. Kod programu wyznaczający współrzędne środka okręgu

przechodzącego przez trzy punkty Wynik działania nowegopolecenia„3p” programu AutoCAD pokazany jest na poniższym rysunku (przykładowe wprowadzenie okręgu na bazie wierzchołków trójkąta).

Rys. 7. Wywołanie i wynik działania nowego polecenia „3p”

Page 8: METODY URUCHAMIANIA PROGRAMÓW JĘZYKA AutoLISP · PDF fileJĘZYKA AutoLISP W ŚRODOWISKU AutoCAD ... Application Programming Interface), czyli interfejs programowania aplikacji (sposób

966

4. WNIOSKI W referacie przedstawiono sposoby uruchamiania programów i przykład tworzenia polecenia języka AutoLISP w systemie CAx. Użytkownicy wykorzystujący różne sposoby automatyzacji procesu projektowego w tym procesie mogą wykorzystać: dostosowywanie interfejsu użytkownika (CUI) definiowanie pakietu uruchomieniowego utworzenie (edycję) plików acad.lsp i acaddoc.lsp edytowanie parametrów programu AutoCAD (acad.pgp).

Wybór konkretnej metody wczytywania poleceń języka AutoLISP uzależniony jest od potrzeb użytkownika systemu CAD. W przypadku migracji ustawień pomiędzy różnymi wersjami oprogramowania zaleca się wykorzystanie częściowych plików dostosowania interfejsu użytkownika, natomiast w przypadku tworzenia indywidualnej bazy własnych poleceń najprostszą metodą jest definiowanie pakietu uruchomieniowego czy też utworzenie pliku acad.pgp lub acaddoc.lsp. W przypadku tworzenia własnej biblioteki poleceń zaleca się kompilację wielu programów utworzonych w języku AutoLISP (*.lsp, *.fas) do binarnej biblioteki *.vlx. W przypadku tworzenia poleceń wykorzystujących interfejs automatyzacji OLE(Object Linking and Embedding) zaleca się wykorzystanie metody wprowadzania poleceń z wykorzystaniem edycji parametrów programu AutoCAD (acad.pgp). LITERATURA [1] Czyżycki W., Lisowski E.: Automatyzacja zadań grafiki za pomocą Delhi, Helion 2002. [2] Dudek M.: AutoLISP. Praktyczny kurs, Helion 1997. [3] Warchulski J., Warchulski M.: Wykorzystanie systemów CAx do wizualizacji danych ze

strzelań rakietowych, XIII Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji, Jurata 11-15 maja 2009, materiały konferencyjne, s. 391-398.

[4] Warchulski J., Warchulski M.: Program „3p.lsp”, Wojskowa Akademia Techniczna, Warszawa 2012.