Dr inż. Jacek WARCHULSKI Dr inż. Marcin WARCHULSKI Mgr inż. Stanisław GRZYWIŃSKI Wojskowa Akademia Techniczna WYKORZYSTANIE PROGRAMU AUTOCAD DO GENEROWANIA PUNKTÓW WĘZŁOWYCH POLILINII Streszczenie: W referacie zaprezentowano możliwości wykorzystania programu AutoCAD do generowania punktów węzłowych polilinii. Przedstawiono możliwość wykorzystania języka programowania AutoLISP w procesie automatyzacji zadań grafiki. USE OF AUTOCAD SOFTWARE TO GENERATE NODAL POINT OF THE POLYLINE Abstract: The paper presents the the possibility of using AutoCAD to generate the nodal points of the polyline. Possibility of using AutoLISP programming language in the process of automating tasks graphics was presented. Słowa kluczowe: AutoCAD, punkt węzłowy, AutoLISP, polilinia Keywords: AutoCAD, nodal point, AutoLISP, polyline 1. WPROWADZENIE Obecnie na rynku dostępnych jest wiele środowisk i aplikacji, które wspomagają wszelkie prace związane z rozwojem produktu, poczynając od projektu geometrii, poprzez cyfrową analizę i weryfikację, aż do jego wytworzenia. Etapy projektowania koncepcyjnego, konstrukcyjnego oraz produkcji dają możliwości nie tylko wirtualnego badania kompletnego produktu zanim zostanie on fizycznie wykonany, ale przede wszystkim możliwości uzyskania dokładnej dokumentacji, na podstawie której uzyskuje się znaczną powtarzalność i dokładność wykonania produktu końcowego. Wobec szybkiego postępu technologii oprogramowania oraz produkcji, praktycznie wszystkie kręgi produkcyjne pozostają stale pod działaniem nacisku zmierzającego do osiągnięcia coraz doskonalszych produktów w coraz krótszym czasie. Aby był możliwy wzrost wydajności obróbki przy jednoczesnym spełnieniu wymagań odnośnie do dokładności wymiarowo- -kształtowej, niezbędny jest rozwój obrabiarek pod względem konstrukcyjnym, ale także rozwój systemów sterowania ich pracą. Lista obrabiarek, które pozwalają realizować proces obróbki materiałów, jest bardzo długa, a same maszyny posiadają różny stopień złożoności i możliwości, który jest ściśle związany z ich kosztem. Obecnie dostrzega się wiele branż przemysłu, w których możliwość zastosowania taniego odpowiednika dla drogich urządzeń CNC (z ang. Computerized Numerical Control) stanowiłaby istotny atut i pozwoliłaby podnieść efektywność oraz potencjał dotychczasowych rozwiązań produkcji. Należy podkreślić, że w ogromnej większości działów przemysłu złożoność oraz duże możliwości obecnych urządzeń CNC (rys. 1a) są zbędne. Postępujący rozwój elementów wykonawczych, 713
mikroprocesorów oraz w efekcie robotów kartezjańskich umożliwił zastosowanie ich w mniej wymagających branżach przemysłu (rys. 1 b). Ponadto możliwości sterowania programowego w oparciu o samą ścieżkę posuwu narzędzia dają pole rozwoju dla nowego, nieskomplikowanego i taniego oprogramowania. Rys. 1. Obrabiarki sterowane numerycznie: a) zaawansowana maszyna CNC, b) robot kartezjański przystosowany do nieskomplikowanych zastosowań Możliwość zainstalowania powszechnie dostępnych narzędzi obróbki materiału na robotach kartezjańskich stwarza duże możliwość ich wykorzystania w szeroko pojętym przemyśle (rys. 2). Zalety precyzyjnej i przede wszystkim powtarzalnej pracy robotów kartezjańskich są z powodzeniem wykorzystywane np. w przemyśle stolarskim oraz kamieniarskim, gdzie bardzo często ręczna obróbka elementów nie daje wymaganych rezultatów powtarzalności i szybkości pracy. Nie zmienia to jednak faktu, że w większości przypadków mamy do czynienia z bardzo drogim oprogramowaniem, które często skutecznie blokuje rozwój produkcyjny firmy. Rys. 2. Zastosowanie zintegrowanego robota kartezjańskiego z ręczną frezarką w przemyśle stolarskim W polskich realiach wydatek rzędu kilkudziesięciu, czy nawet kilku tysięcy euro za licencję na aplikację umożliwiającą m.in. wygenerowanie ścieżek posuwu dla narzędzia, może okazać się niełatwy do realizacji. Na przykład oprogramowanie NX CAM dostarcza obszerny i łatwy w użyciu zestaw narzędzi do tworzenia ścieżek NC oraz do przeprowadzania symulacji i ich weryfikacji. NX CAM zapewnia efektywną obróbkę dowolnych kształtów od otworów do profili lotniczych. Jego modułowa budowa zapewnia skalowalność i dostosowanie do konkretnych potrzeb klientów. Oprogramowanie to mimo niewątpliwych zalet, ze względu na cenę jest często rozwiązaniem nieosiągalnym dla wielu przedsiębiorców. Obecnie sterowanie numeryczne obrabiarek rozwija się bardzo intensywnie, a zastosowanie 714
jako układu sterującego minikomputera umożliwia znaczne zwiększenie zakresu i jakości sterowania, które często sprowadza się wyłącznie do wprowadzenia listy punktów, które stanowią ścieżki posuwu narzędzia. Tam, gdzie nie jest wymagana znacząca złożoność operacji obróbki materiału, wykorzystanie możliwości, jakie dają stosunkowo niedrogie roboty kartezjańskie oraz nowoczesne oprogramowanie CAM może przyczynić się do projektowania coraz bardziej skomplikowanych kształtów. Ze względu na dostępność oraz cenę oprogramowania CAD zdecydowano się na wykonanie aplikacji, która umożliwiłaby generowanie ścieżki narzędzia wykorzystując geometrię modelu wykonaną w oprogramowaniu AutoCAD. Rozwiązanie to ma na celu radykalną poprawę efektywności i zyskowności przeprowadzanych operacji, np. w przedsiębiorstwie stolarskim (rys. 3c). Rys. 3. Modele robotów kartezjańskich: a) możliwości posuwu narzędzia, b) przykładowa konfiguracja robota kartezjańskiego, c) przykład wykorzystania robota kartezjańskiego w przemyśle Celem artykułu jest opis generowania punktów węzłowych polilinii zaprojektowanej geometrii. Pozwoli to na przeprowadzenie w dalszym etapie np. procesu frezowania regionów płaskich, z uwzględnieniem liczby dodatkowych ścieżek generowanych w osi Z. W kolejnym artykule zostaną przedstawione sprzętowe rozwiązania robotów kartezjańskich zaadaptowanych na potrzeby obróbki stolarskiej. 2. PRZYKŁAD PRAKTYCZNY Zasada działania prezentowanej w niniejszej pracy aplikacji jest następująca: wskazanie w obszarze modelu programu AutoCAD pojedynczego obiektu typu polilinia skutkuje wygenerowaniem współrzędnych jej punktów węzłowych i zapisaniem ich w pliku tekstowym. Po uruchomieniu programu AutoCAD i otworzeniu projektu zawierającego krzywiznę, która ma być analizowana, w pierwszej kolejności należy uruchomić polecenie punkty_polilinii. Następnie należy wskazać do bufora edycji analizowany element oraz określić format zapisu danych (wykładniczy lub dziesiętny) i ich dokładność (patrz rys. 4). 715
Rys. 4. Zasada działania polecenia punkty_polilinii Kolejne współrzędne punktów węzłowych analizowanej krzywej mogą być odczytane z wykorzystaniem kodów DXF obiektu typu polilinia lub dzięki zastosowaniu funkcji umożliwiających dostęp do obiektów OLE (z wykorzystaniem funkcji vla). Do opracowania polecenia punkty_polilinii wykorzystano język AutoLISP i środowisko Visual LISP, które jest zintegrowane z pełną wersją programu AutoCAD. Fragment pliku tekstowego przedstawiający punkty węzłowe polilinii w zapisie dziesiętnym i wykładniczym przedstawiono poniżej. 54.1824 7.3110 0 54.6646 7.0256 0 54.9624 6.8686 0 55.4478 6.6358 0 55.9533 6.4206 0 56.4814 6.2244 0 56.9237 6.0850 0 5.4182E+01 7.3110E+00 0.0000E+00 5.4665E+01 7.0256E+00 0.0000E+00 5.4962E+01 6.8686E+00 0.0000E+00 5.5448E+01 6.6358E+00 0.0000E+00 5.5953E+01 6.4206E+00 0.0000E+00 5.6481E+01 6.2244E+00 0.0000E+00 5.6924E+01 6.0850E+00 0.0000E+00 716
57.4246 5.9291 0 57.9477 5.7922 0 58.4775 5.6696 0 58.9436 5.5853 0 59.5116 5.4971 0 5.7425E+01 5.9291E+00 0.0000E+00 5.7948E+01 5.7922E+00 0.0000E+00 5.8477E+01 5.6696E+00 0.0000E+00 5.8944E+01 5.5853E+00 0.0000E+00 5.9512E+01 5.4971E+00 0.0000E+00 Przykład, który zostanie szczegółowo omówiony, dotyczy generowania ścieżki punktów węzłowych polilinii przedstawiającej dużą literę S (dla czcionki Consolas). Edycja (zdegradowanie klasy) wprowadzonego w obszarze modelu programu AutoCAD dowolnego tekstu możliwa jest za pomocą polecenia explode narzędzia Express Tools. Polecenie to zmienia obiekt tekstowy na obiekt typu polilinia. Aby wygenerować źródłową ścieżkę dla narzędzia frezującego, należy zdefiniować obwiednię przesuniętą o połowę szerokości wcześniej zdefiniowanego tekstu (np. za pomocą polecenia odsuń). Rys. 5. Czcionka True Type, jej obwiednia (po operacji Explode) oraz ścieżka narzędzia (polilinia) zdefiniowana w programie AutoCAD Realizacja zadań programowania zadań grafiki możliwa jest w oparciu o interfejs automatyzacji OLE oraz języki programowania wbudowane w systemy CAx [1-3]. Do zdefiniowania narzędzia wspomagania projektowania (w naszym przykładzie nowego polecenia systemu CAx), które wykona w sposób automatyczny sformułowane wcześniej zadanie, można wykorzystać język AutoLISP i środowisko Visual LISP. Kod programu odczytującego punkty węzłowe obiektu typu polilinia powinien składać się z elementów: a) definiujących dostęp do składników rysunkowych aktualnego projektu (defun c:punkty_polilinii() (vl load com) (setq _acad_ (vlax get acad object) _model_ (vla get ModelSpace (vla get ActiveDocument _acad_))) (setq PL (entsel "\nwskaż polilinię: ")) (if (= PL nil) (prong )) (alert "Musisz wskazac polilinię!") (vl exit with value 0) 717
(setq PL (car PL)) (setq ilość_wierzchołków 0) (setq vla_pl (vlax ename >vla object PL) ilość_wierzchołków (vlax curve getendparam vla_pl)) Działanie powyższego kodu jest następujące: wykorzystanie polecenia defun pozwala na utworzenie nowego polecenia punkty_polilinii, które nie posiada żadnych parametrów wejściowych, funkcja vl-load-com pozwala na wywołanie poleceń pozwalających na programowanie obiektowe, do zmiennej globalnej _acad_ przypisywany jest dokument programu AutoCAD, natomiast do zmiennej _model_ przestrzeń modelu aktywnego rysunku, do zmiennej PL przywiązywany jest zbiór wskazań (następuje także sprawdzenie, czy nie jest on zbiorem pustym, jeśli tak to następuje automatyczne zakończenie działania programu), zmienna ilość_wierzchołków jest na początku zerowana, a później definiowana na wartość odczytywaną z obiektu, który jest zbiorem wskazań (przez wykorzystanie funkcji vlax-ename->vla-object oraz vlax-curve-getendparam). b) odczytujących punkty węzłowe analizowanego obiektu (setq i 0) (setq Pętla (fix ilość_wierzchołków)) (setq Dane_i (list)) (repeat (+ Pętla 1) (setq Punkt (vlax curve getpointatparam vla_pl i)) (setq P1_x (car Punkt)) (setq P1_y (cadr Punkt)) (setq P1_z (caddr Punkt)) (setq Dane_i (cons i Dane_i)) (setq Dane_i (cons P1_x Dane_i)) (setq Dane_i (cons P1_y Dane_i)) (setq Dane_i (cons P1_z Dane_i)) (setq i (1+ i)) );repeat (setq Dane_i (reverse Dane_i)) Działanie powyższego kodu jest następujące: funkcja setq definiuje zmienne pomocnicze i, Pętla oraz Dane_i, które służą do inkrementacji numeracji wierzchołków polilinii, określania ilości powtórzeń odczytu wierzchołków (rzutowanie typu zmiennej Double na Integer za pomocą funkcji fix) oraz tworzą pustą listę (macierz danych) odpowiadającą za przechowywanie danych, funkcja repeat pozwala na wyodrębnienie poszczególnych parametrów punktów węzłowych polilinii i zapisanie ich w macierzy Dane_i (wykorzystywane są tu funkcje vlax-curve-getpointatparam, car, cadr, caddr, cons i reverse, które to odpowiednio wybierają punkty do analizy, wybierają ich współrzędne w układzie kartezjańskim oraz tworzą obiekt tekstowy je przedstawiający), 718
w związku z tym, że funkcja cons dodaje elementy do początku listy, następuje też odwrócenie danych w liście Dane_i za pomocą funkcji reverse. c) definiujących format i dokładność zapisywanych danych (princ "\n") (princ "Wybierz typ zapisu danych: 1 zapis wykładniczy, 2 zapis dziesiętny \n") (setq N (getint "Wybierz 1 lub 2 i naciśnij ENTER: ")) (princ "\n") (princ "Wybierz dokładność zapisu danych (ilść miejsc po przecinku) \n") (setq IMPP (getint "Wybierz dokładność: 0..12 i naciśnij ENTER: ")) (setq K 0) (setq plik_nazwa (getfiled "Wskaż nazwę plików z danymi:" "C:\\" "txt" 1)) (setq plik (open plik_nazwa "w")) (setq wiersz (list)) (repeat (+ Petla 1) (progn (setq Nr (nth K Dane_i)) (setq Nr_ (rtos Nr N 0)) (setq X (nth (+ K 1) Dane_i)) (setq X_ (rtos X N IMPP)) (setq Y (nth (+ K 2) Dane_i)) (setq Y_ (rtos Y N IMPP)) (setq Z (nth (+ K 3) Dane_i)) (setq Z_ (rtos Z N IMPP)) (setq wiersz (strcat X_ (chr 9) Y_ (chr 9) Z_)) (write line wiersz plik) (setq K (+ K 4)) );progn );repeat (close plik) );defun Działanie powyższego kodu jest następujące: wykorzystanie polecenia princ pozwala na wyświetlenie w linii poleceń tekstu stanowiącego argument tego polecenia (składnia \n powoduje przejście do następnego wiersza), funkcja getint pozwala na wprowadzenie zmiennych pomocniczych odpowiedzialnych za wprowadzenie typu zapisu danych oraz dokładności ich zapisu, następnie definiowana jest ścieżka dostępu do zapisu pliku tekstowego, który jest otwierany w trybie zapisu danych (przez użycie funkcji open), wypełnienie pliku tekstowego danymi punktów węzłowych polilinii następuje z wykorzystaniem funkcji nth, rtos, strcat i write-line, które to pozwalają na wybór n-tego elementu macierzy danych, przekształcają współrzędną punktu węzłowego do wybranego formatu zapisu danych, łączą łańcuchy tekstowe w procesie wprowadzania danych do pliku (separatorem wprowadzanych współrzędnych jest w tym procesie znak tabulatora chr 9) oraz zapisują pojedynczy wiersz w pliku, wykorzystanie funkcji close powoduje zamknięcie możliwości edycji pliku i jego zapis. 719
XVIII Międzynarodowa Szkoła Komputeroweg go Wspomagania Projektowania, Wytwarzania i Eksploatacji 3. PODSUMOWANIE Zaprezentowany w artykule przykład użycia języka AutoLISP udowadnia, że wykorzystanie języków programowania wbudowanychh w systemy CAx pozwala na rozwiązanie zdania inżynierskiego. Problemem w tym procesie może być natomiast odczytywanie punktów węzłowych dla polilinii o niewielkiej liczbie segmentów (patrz rysunek 6). Rys. 6. Punkty węzłowe polilinii (10, 20 i 30 segmentów) W takim przypadku należy wykorzystać możliwości programistyczne systemu CAx i stworzyć nowe polecenia realizujące takie zadanie lub skorzystać ze standardowych poleceń programu AutoCAD w niestandardowym zastosowaniu (przykładowo można wykorzystać podział dowolnego obiektu na zdefiniowaną liczbę segmentów lub odmierzanie odległości wzdłuż ścieżek za pomocą poleceń podziel lub zmierz). Przedstawione procedury oraz metodykaa nie wyczerpują podjętego tematu. Istniejee jeszcze wiele problemów, których rozwiązanie pozwoli na generowanie e ścieżek posuwu narzędzia dla skomplikowanych obiektów. Niemniej jednak zaprojektowane procedury w języku AutoLISP stanowią programową podstawę dla aplikacji umożliwiającej generowanie punktów węzłowych polilinii zaprojektowanej geometrii. W wyniku podjętego p tematu zapewniono możliwość transformacji cyfrowego modelu do postaci zbioru punktów, które mogą być wykorzystane jako ścieżka do sterowaniaa robotem kartezjańskim. LITERATURA [1] Czyżycki W., Lisowski E.: Automatyzacja zadań grafiki za pomocą Delphi, Helion, Gliwice, 2002. [2] Dudek M.: AutoLISP. Praktyczny kurs, Helion, Gliwice, 1997. [3] Warchulski J., Warchulskii 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., Warchulskii M., Grzywiński S.: Program punkty_polilinii.lsp, Wojskowa Akademia Techniczna, Warszawa, 2014. 720