8
MECHANIK 7/2013 XVII Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji 815 Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Mgr inż. Witold BUŻANTOWICZ Wojskowa Akademia Techniczna SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD Streszczenie: W referacie przedstawiono możliwości wykorzystania języka programowania AutoLISP oraz interfejsu automatyzacji OLE w procesie automatyzacji zadań grafiki. Przeanalizowano możliwości pomiaru kątów w przestrzeni trójwymiarowej. METHODS FOR MEASURING ANGLES IN AutoCAD Abstract: The paper presents examples of the use of AutoLISP programming language and OLE interface to automate the graphic tasks in AutoCAD. The abilities to measure angles in 3-dimentional space are analyzed. Słowa kluczowe: AutoLISP, Visual LISP, OLE, pomiar kąta, AutoCAD Keywords: AutoLISP, Visual LISP, OLE, angle measuremet, AutoCAD 1. WPROWADZENIE W programie AutoCAD istnieją możliwości programowania czynności związanych z obsługą danych, automatyzacją zadań grafiki oraz wykonywaniem i dzieleniem informacji o rysunku z innymi aplikacjami. Tworzenie aplikacji dla programu AutoCAD w środowisku Windows jest możliwe za pomocą wbudowanych narzędzi programistycznych (np. środowisko programowania Visual LISP oparte na języku AutoLISP) i języków programowania ogólnego zastosowania (Delphi czy C++) [1-3]. W przypadku projektowania elementów, pomiar kątów jest możliwy za pomocą standardowych poleceń znajdujących się w: menu (Narzędzia – Zapytania – Kąt), wstążce (karta Narzędzia główne – panel Narzędzia – menu rozwijalne Zmierz – Kąt), pasku narzędzi (Zapytania – Narzędzia pomiarowe – Kąt). W przypadku pomiaru położenia kątowego obiektów, które nie mają punktów wspólnych, standardowe polecenia program AutoCAD nie pozwolą użytkownikowi na uzyskanie wyniku pomiaru kąta (patrz poniższy rysunek). Pomiar kąta pomiędzy liniami [1] i [2]: Rys. 1. Pomiar kąta dla obiektów niewspółpłaszczyznowych

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD · operacje matematyczne powodujące wyznaczenie kąta są identyczne jak w programie „o1.lsp”. 3. POMIAR KĄTÓW Z WYKORZYSTANIEM

Embed Size (px)

Citation preview

Page 1: SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD · operacje matematyczne powodujące wyznaczenie kąta są identyczne jak w programie „o1.lsp”. 3. POMIAR KĄTÓW Z WYKORZYSTANIEM

MECHANIK 7/2013 XVII Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji

815

Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Mgr inż. Witold BUŻANTOWICZ Wojskowa Akademia Techniczna

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Streszczenie: W referacie przedstawiono możliwości wykorzystania języka programowania AutoLISP oraz interfejsu automatyzacji OLE w procesie automatyzacji zadań grafiki. Przeanalizowano możliwości pomiaru kątów w przestrzeni trójwymiarowej.

METHODS FOR MEASURING ANGLES IN AutoCAD

Abstract: The paper presents examples of the use of AutoLISP programming language and OLE interface to automate the graphic tasks in AutoCAD. The abilities to measure angles in 3-dimentional space are analyzed. Słowa kluczowe: AutoLISP, Visual LISP, OLE, pomiar kąta, AutoCAD Keywords: AutoLISP, Visual LISP, OLE, angle measuremet, AutoCAD

1. WPROWADZENIE W programie AutoCAD istnieją możliwości programowania czynności związanych z obsługą danych, automatyzacją zadań grafiki oraz wykonywaniem i dzieleniem informacji o rysunku z innymi aplikacjami. Tworzenie aplikacji dla programu AutoCAD w środowisku Windows jest możliwe za pomocą wbudowanych narzędzi programistycznych (np. środowisko programowania Visual LISP oparte na języku AutoLISP) i języków programowania ogólnego zastosowania (Delphi czy C++) [1-3]. W przypadku projektowania elementów, pomiar kątów jest możliwy za pomocą standardowych poleceń znajdujących się w: menu (Narzędzia – Zapytania – Kąt), wstążce (karta Narzędzia główne – panel Narzędzia – menu rozwijalne Zmierz – Kąt), pasku narzędzi (Zapytania – Narzędzia pomiarowe – Kąt). W przypadku pomiaru położenia kątowego obiektów, które nie mają punktów wspólnych, standardowe polecenia program AutoCAD nie pozwolą użytkownikowi na uzyskanie wyniku pomiaru kąta (patrz poniższy rysunek).

Pomiar kąta pomiędzy liniami [1] i [2]:

Rys. 1. Pomiar kąta dla obiektów niewspółpłaszczyznowych

Page 2: SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD · operacje matematyczne powodujące wyznaczenie kąta są identyczne jak w programie „o1.lsp”. 3. POMIAR KĄTÓW Z WYKORZYSTANIEM

MECHANIK 7/2013 XVII Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji

816

Dla obiektów leżących na jednej płaszczyźnie lub obiektów mających wspólne punkty, w przypadku pomiaru kątów w przestrzeni trójwymiarowej można wykorzystać metodę wskazywania dwóch linii lub wskazanie wierzchołka i punktów końcowych mierzonego kąta.

Rys. 2. Metody pomiaru kąta

Rys. 3. Wynik pomiaru kąta po wskazaniu 2 linii

Rys. 4. Wynik pomiaru kąta po wskazaniu wierzchołka i 2 punktów końcowych

W referacie przeanalizowano możliwość wykorzystania nowo utworzonych poleceń języka AutoLISP oraz programu z wykorzystaniem interfejsu typu klient-serwer do pomiaru dowolnych kątów w przestrzeni trójwymiarowej. 2. POMIAR KĄTÓW Z WYKORZYSTANIEM JĘZYKA AutoLISP AutoLISP jest specjalną odmianą języka programowania LISP (List Processing) pracującą w środowisku programu AutoCAD. Język AutoLISP pozwala na przetwarzanie zmiennych liczbowych, tekstowych i list, 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 Visual LISP, które posiada własny edytor i kompilator [7, 8].

Rys. 5. Wybrane elementy środowiska Visual LISP

Page 3: SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD · operacje matematyczne powodujące wyznaczenie kąta są identyczne jak w programie „o1.lsp”. 3. POMIAR KĄTÓW Z WYKORZYSTANIEM

MECHANIK 7/2013 XVII Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji

817

Język programowania AutoLISP i środowisko Visual LISP programu AutoCAD zostały wykorzystane do opracowania nowych poleceń, które umożliwiają pomiar dowolnych kątów w przestrzeni trójwymiarowej programu AutoCAD [4,5].

Nowo opracowane polecenia „o1” i „o2” umożliwiają pomiar kątów, bazując na obiektach typu linia lub punktach charakterystycznych, takich jak wierzchołek i ramiona badanego kąta. Oba polecenia w procesie wyznaczania kąta wykorzystują obliczany iloczyn skalarny oraz długości wektorów definiujących dany kąt.

Rys. 6. Działanie poleceń „o1” i „o2” w procesie pomiaru kąta

Kod programu „o1.lsp” pokazany jest na poniższym rysunku.

Rys. 7a. Kod programu „o1.lsp”

Page 4: SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD · operacje matematyczne powodujące wyznaczenie kąta są identyczne jak w programie „o1.lsp”. 3. POMIAR KĄTÓW Z WYKORZYSTANIEM

MECHANIK 7/2013 XVII Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji

818

Rys. 7b. Kod programu „o1.lsp”

Powyższy program działa w następujący sposób: tworzone jest „nowe” polecenie programu AutoCAD – „o1”, które nie posiada żadnych

parametrów wejściowych, do zmiennej „prosta” przywiązywany jest zbiór wskazań pierwszej linii (następuje także

sprawdzenie, czy zbiór wskazań nie jest zbiorem pustym, jak również sprawdzenie, czy należy on do obiektu typu linia, w przeciwnym razie następuje automatyczne zakończenie działania programu),

Page 5: SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD · operacje matematyczne powodujące wyznaczenie kąta są identyczne jak w programie „o1.lsp”. 3. POMIAR KĄTÓW Z WYKORZYSTANIEM

MECHANIK 7/2013 XVII Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji

819

w procesie sprawdzania, czy zbiór wskazań jest linią, wykorzystywane jest polecenie assoc które przeszukuje listę asocjacji definiowaną przez zmienną „ent_dxf”, która to z kolei jest definiowana przez wykorzystanie polecenia entget zwracającego listę zawierającą dane zmiennej „entity”, czyli wskazanego do zbioru wskazań obiektu typu linia (przepływ danych pokazany jest na poniższym rysunku),

Rys. 8. Lista zawierająca dane uzyskane za pomocą funkcji entget

poprzez sprawdzanie 10. i 11. kodu DXF zmiennej „dana” definiowane są współrzędne

X,Y oraz Z początkowego i końcowego punktu pierwszej linii definiującej kierunek badanego kąta,

w ten sam sposób definiowane są współrzędne drugiej linii definiującej badany kąt, następną operacją jest zdefiniowanie długości wektorów definiujących badany kąt, w następnym fragmencie kodu programu definiowany jest iloczyn skalarny wektorów

definiujących badany kąt, ostatnia operacja powoduje wyznaczenie kąta poprzez wykorzystanie funkcji

trygonometrycznych.

Kod programu „o2.lsp” pokazany jest na poniższym rysunku.

Rys. 9a. Kod programu „o2.lsp”

Page 6: SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD · operacje matematyczne powodujące wyznaczenie kąta są identyczne jak w programie „o1.lsp”. 3. POMIAR KĄTÓW Z WYKORZYSTANIEM

MECHANIK 7/2013 XVII Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji

820

Rys. 9b. Kod programu „o2.lsp”

Powyższy program działa w następujący sposób: tworzone jest „nowe” polecenie programu AutoCAD – „o2”, które nie posiada żadnych

parametrów wejściowych, funkcja (vl-load-com) pozwala na wywołanie funkcji pozwalających na programowanie

obiektowe, do zmiennej globalnej _acad_ przypisywany jest dokument programu AutoCAD, natomiast do zmiennej _model_ przestrzeń modelu aktywnego rysunku,

poprzez wykorzystanie polecenie getpoint definiowane są współrzędne X,Y oraz Z początkowego i końcowego punktu kąta oraz jego wierzchołka,

operacje matematyczne powodujące wyznaczenie kąta są identyczne jak w programie „o1.lsp”.

3. POMIAR KĄTÓW Z WYKORZYSTANIEM INTERFEJSU AUTOMATYZACJI

OLE Automatyzacja pomiaru kątów możliwa jest między innymi za pomocą wykorzystania interfejsu automatyzacji OLE. Przez pojęcie automatyzacji OLE (OLE Automation) definiuje się możliwość programowego sterowania obiektami innego programu oraz protokół, za pomocą którego dany program może uzyskać dostęp do obiektu znajdującego się w innym programie. Aby można było korzystać z metod i obiektów interfejsu, używając programu zewnętrznego, niezbędne jest nawiązanie połączenia z serwerem OLE programu AutoCAD 2013. Uzyskanie połączenia z serwerem OLE dla programów pisanych w Delphi przedstawiono w module PolaczAutoCAD. W module tym procedura PolaczZACAD pozwala uzyskać dostęp do uruchomionego obiektu aplikacji. Zmodyfikowany kod modułu PolaczAutoCAD, który umożliwia dostęp do interfejsu automatyzacji w wersji 2013 programu AutoCAD, przedstawia się następująco [1, 3]:

Page 7: SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD · operacje matematyczne powodujące wyznaczenie kąta są identyczne jak w programie „o1.lsp”. 3. POMIAR KĄTÓW Z WYKORZYSTANIEM

MECHANIK 7/2013 XVII Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji

821

Rys. 10. Kod modułu PolaczAutoCAD

Do wyznaczania kąta w przestrzeni trójwymiarowej można wykorzystać funkcje bazujące na definiowaniu kierunków wektorów u

i v

, których początek i koniec znajdują się

w odpowiednich punktach wskazanych przez użytkownika. Uzyskanie kierunku zgodnego ze wskazanym odbywa się poprzez obliczenie kąta zgodnie z poniższą zależnością:

arccos u vu v

Po uruchomieniu programu „Kąt 3D” [6], na ekranie pojawia się okno, które pozwala użytkownikowi na wskazanie linii definiujących wektory lub początkowych i końcowych punktów wektorów kierunku. Na podstawie tak zdefiniowanych danych, program wyznacza rzeczywiste wartości kąta w przestrzeni trójwymiarowej.

Page 8: SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD · operacje matematyczne powodujące wyznaczenie kąta są identyczne jak w programie „o1.lsp”. 3. POMIAR KĄTÓW Z WYKORZYSTANIEM

MECHANIK 7/2013 XVII Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji

822

Rys. 11. Działanie programu „Kąt 3D” 4. WNIOSKI W referacie przeanalizowano możliwość wykorzystania nowo utworzonych poleceń języka AutoLISP oraz programu z wykorzystaniem interfejsu typu klient-serwer do pomiaru dowolnych kątów w przestrzeni trójwymiarowej. Opracowanie takich funkcji i programów ma praktyczne znaczenie w przypadku tworzenia aplikacji korzystających z pomiaru kierunków definiowanych przez dowolne wektory. Wyżej wymienione funkcje mogą być wykorzystane w procesie uzyskiwania dostępu do obiektów serwera automatyzacji, jakim jest program AutoCAD. Z wykorzystaniem tych modułów programowych można wprowadzać i edytować dowolne obiekty rysunkowe.

W referacie przedstawiono przykład wykorzystania systemu CAx w procesie automatyzacji zadań grafiki z wykorzystaniem języka AutoLISP i środowiska Visual LISP [2, 7, 8], a także interfejsu automatyzacji OLE [1, 3]. LITERATURA [1] Czyżycki W., Lisowski E.: Automatyzacja zadań grafiki za pomocą Delphi, Helion, 2002. [2] Dudek M.: AutoLISP. Praktyczny kurs, Helion, 1997.

[3] Warchulski J., Warchulski M.: Przykłady automatyzacji zadań grafiki w programie AutoCAD, XIV Międzynarodowa Szkoła Komputerowego Wspomagania Projektowania, Wytwarzania i Eksploatacji, Jurata 10-14 maja 2010, Materiały konferencyjne, s. 515-522.

[4] Warchulski J., Warchulski M.: Program „o1.lsp”, Wojskowa Akademia Techniczna, Warszawa, 2013.

[5] Warchulski J., Warchulski M.: Program „o2.lsp”, Wojskowa Akademia Techniczna, Warszawa, 2013.

[6] Warchulski J., Warchulski M., Bużantowicz W.: Program „Kąt 3D.exe”, Wojskowa Akademia Techniczna, Warszawa, 2013.

[7] http://forum.cad.pl/autocad.html [8] http://www.kojacek.republika.pl