Download - AutoCAD-AutoLisp programiranje
Univerzitet u TuzliMašinski fakultetOdsjek: Proizvodno mašinstvoTuzla, 08.01.2016 godine
SEMINARSKI RAD
Predmet: CAD/CAM SISTEMI
Tema:
Auto Lisp
Student: Mustafić Zaim
Br. indeksa: II-463/11 Prof: Dr.sc. Emir Šarić, van.prof
SADRŽAJ:
UVOD:.....................................................................................................................................................3
CAD/CAM...............................................................................................................................................4
CAD (Computer Aided Design)............................................................................................................4
CAM (Computer Aided Manufacturing)..............................................................................................4
AutoCAD.................................................................................................................................................5
AutoLISP.................................................................................................................................................6
PROGRAMIRANJE CNC STROJEVA...........................................................................................................8
Premještanje nulte tačke....................................................................................................................9
Primjer primjene AutoLISP-a................................................................................................................12
LITERATURA:.........................................................................................................................................21
2
UVOD:
AutoLISP je programski jezik nastao od rane verzije programskog jezika XLISP, (integriranog u svaki AutoCAD od verzije 2.18 nadalje) koji omogućuje manpilaciju naredbama AutoCAD-a i njihovo povezivanje u nizove funkcija. Naredbe se pokreću putem komandne linije u AutoCAD-ovom sučelju. Uz već ugrađene funkcije AutoCAD-a, uz pomoć Visual LISP editora moguće je programirati funkcije prilagođene vlastitim potrebama. Ovdje vidimo prednost ovog programskog jezika za struke koje isključivo koriste AutoCAD kao glavni alat za izradu grafičkih prikaza.
Još jedna prednost korištenja AutoCAD-a je mogućnost izrade vlastitih izbornika i alatnih traka te povezivanje aktivnih polja sa naredbama pogramiranima u AutoLISP-u. To nam omogućuje visoki stupanj prilagodbe korisničkog sučelja vlastitim potrebama.
3
CAD/CAMRazvoj proizvoda pomoću CAD/CAM sistema ubrzava razvoj, analizu, redizajniranje modela i donošenje odluka o pravim rješenjima koja predstavljaju optimalna rješenja koja zadovoljavaju zahtjeve uz minimalnu cijenu i maksimalnu kvalitetu. Projektiranje proizvoda predstavlja kritičnu aktivnost proizvodnog procesa jer se procjenjuje da je njen udio 70-80% od cijene razvoja i proizvodnje.
CAD (Computer Aided Design)
Computer-Aided Design (CAD) je program koji koristi kompjutersku grafiku za razvoj, analizu i izmjene tokom postupka oblikovanja proizvoda. Prema definiciji CAD aplikacija (alat), bilo koja aplikacija koja sadrži računarsku grafiku i aplikacija prilagođena inženjerskim funkcijama u procesu dizajna je klasificirana kao CAD aplikacija. To ustvari znači da CAD aplikacije mogu biti raznolike, varirajući od geometrijskih alata za manipulaciju oblicima do alata za vizualizaciju rezultata koje analiziramo.
Kako je osnova svih aktivnosti u proizvodnji definiranje geometrije, upravo to bi bila osnovna zadaća CAD alata.
Osnovna konfiguracija CAD sustava:Konfiguracija CAD sastoji se od triju osnovnih cjelina: Ulaza(eng.input) – tastatura i/ili miš, grafička ploča(engl. Graphics tablet), digitalizator(eng. Digitizer) Obrade – PC računar, operacijski sustav OS i pripadni CAD programski paket Izlaza(eng. Output) – crtač(engl. plotter), pisač(engl. printer)
CAM (Computer Aided Manufacturing)
Prema definiciji, CAM je računarom podržana priprema za proizvodnju i obuhvaća prevođenje projektnih informacija u tehnološke informacije i proizvodnju sa različitim razinama automatizacije. To se ostvaruje različitim tipovima NC (Numerical Control), odnosno CNC (Computer Numerical Control) strojevima kao što su CNC glodalice, CNC bušilice i mnogi drugi slični strojevi.
Kako je CAM oblik proizvodnje koja koristi računare, da bi sama proizvodnja bila što jednostavnija, postoji uska integracija sa CAD-om koja je u realnosti ostvarena postojanjem CAD baze podataka iz koje onda CNC strojevi uzimaju geometrijske predloške za proizvodnju proizvoda koji se nadopunjuju unosima operatera strojeva.
4
AutoCAD
AutoCAD je jedan od najpoznatijih CAD (projektiranje potpomognuto računalom) proizvoda tvrtke Autodesk iz široke palete softverskih alata i pomagala za različita ekspertna područja. Osnovna namjena računalnog programa AutoCAD je dvodimenzionalno ili trodimenzionalno digitalno modeliranje prostora. Novije verzije nude i mogućnosti realističnog prikaza izrađenih 3D modela (rendering). Najčešće korišteni formati kojima AutoCAD upravlja su njegov vlastiti format .dwg, te format .dxf, koji je zbog iznimno velikog utjecaja CAD programa i velikog broja korisnika,postao standardni format za razmjenu za sve CAD tehnologije.
Slika 1. Sučelje AutoCAD-a
Sučelje AutoCAD-a sastoji se od nekoliko područja. Na gornjem dijelu nalaze se padajući izbornici. Osim već ugrađenih izbornika tu možemo dodavati i svoje izbornike, kao i uklanjati već postojeće. U redu ispod izbornika nalaze se alatne trake. Alatne trake sastoje se od ikona. Klikom na njih pokrećemo neku od funkcija AutoCAD-a, bilo predefiniranu, bilo vlastitu (programiranu u AutoLISP-u). Alatne trake mogu se nalaziti smještene u gornjem, lijevom, desnom i donjem dijelu sučelja, gdje su fiksirane. Mogu se i nalaziti u ''plutajućem'' stanju u prostoru za crtanje. Prostor za crtanje nalazi se u sredini sučelja i okružen je izbornicima, alatnim trakama i komandnom linijom. Na dnu sučelja nalazi se komandna linija u koju upisujemo naredbe preko kojih pokrećemo funkcije AutoCAD-a. Putem komandne linije dobivamo povratnu informaciju o onome što se događa na prostoru za crtanje, kao i ostale informacije o funkcijama koje koristimo.
5
AutoLISP
AutoLISP je inačica programskog jezika LISP koja dolazi u paketu sa svakom inačicom AutoCAD-a od verzije 2.18. Usprkos rastućoj popularnosti novih programskih jezika (npr. VBA i .NET) AutoLISP je još uvijek glavni programski jezik AutoCAD-a. Od verzije AutoCAD 2000, AutoLISP je zamijenjen programskim jezikom Visual LISP, koji uz nadogradnje sadrži i kompletni AutoLISP programski jezik sa svim njegovim funkcijama.
Slika 2. Sučelje AutoLISP-a
Funkcija ili program isprogramiran u AutoLISP-u sve svoje operacije izvršava unutar jedne dwg-datoteke. Ovo može biti problem kod rješavanja nekih zadataka koji zahtjevaju primjerice kopiranje nekog sadržaja iz jedne u drugu dwg-datoteku, ali za zadatak koji je riješen ovim diplomskim radom pokazao se kao sasvim dovoljan.Visual LISP Editor se iz sučelja AutoCAD-a pokreće preko naredbe TOOLS > AutoLISP > Visual LISP Editor ili upisivanjem naredbe ''vlisp'' u komandnu liniju. Nakon toga nam se u novom okviru otvara Visual Lisp Editor.AutoLISP kao i gotovo svaki programski jezik radi s osnovnim tipovima podataka, a to su:- INTEGER: cijeli brojevi od vrijednosti - 2147 do + 2147483,- REAL: realni brojevi, brojevi s decimalnom tačkom do 14 decimalnih mjesta,- STRING: skupina znakova, pišu se unutar navodnika, jedan string ograničen je na 132 znaka,- LIST: lista znakova ili brojeva, piše se unutar zagrada, omogućuju jednostavno spremanje skupine sličnih ili povezanih podataka,- SYMBOL: oznaka koja se sastoji od bilo slova, brojeva ili interpunkcijskih znakova, ne može se sastojati samo od brojeva,- FILE DESCRIPTOR: oznake koje se dodaju datotekama kako bi bile jednoznačno označene prilikom pozivanja od strane AutoCAD-a ili AutoLISP-a,- ENTITY NAMES: skupina brojeva, primarni ključ nekog objekta AutoCAD-a preko kojega AutoLISP može pozvati podatke tog objekta iz baze podataka, primjerice njegove koordinate ako se radi o tački,
6
- SELECTION SET: skupine objekata definirane preko AutoLISP-a radi lakšeg izvođenja nekih operacija (primjerice selections set ''linije'' u koji spremamo sve linije koje se nalaze iscrtane u aktivnoj dwg-datoteci),- SURBS i EXTERNAL SURBS: predefinirani potprogrami AutoLISP-a, primjerice ''princ'' koji daje naredbu AutoCAD-u da ispiše neku poruku u komandnu liniju.- CONSTANTS: konstante, nepromjenjive vrijednosti, primjerice PI
7
PROGRAMIRANJE CNC STROJEVA
Proces izrade dijelova na CNC sastoji se od slijedećih aktivnosti:1. razrada tehnologije i utvrđivanje redoslijeda zahvata, alata i režima rada2. priprema alata3. programiranje4. priprema stroja5. izrada prvog komada u seriji6. serijska proizvodnja
Postoji nekoliko tačaka rada koje su karakteristične za CNC mašine. Prije svega to su: referentna tačka R, nulta tačka mašine M, nulta tačka radnog predmeta W i startna tačka alata B.Obradak se postavlja na radni sto i pri tome radni sto ima definisanu svoju nultu tačku. Radni sto se može kretati ili mirovati. Softverski se definišu i koji se alat koristi. Alati su definisani pomoću sifri T00, T01, T02...Programiranje rada CNC mašina se vrši pomoću g koda,tj ručno unošenje naredbi pomoću računara u mašinu.
Slika 3. Referentne tačke CNC glodalice
Slika 4. Referentne tačke CNC struga
8
Premještanje nulte tačke
Kod EMCO struga nulta tačka( M ) leži u osi rotacije stezne glave (amerikanera). Kako ova tačka nije pogodna kao početna tačka rada, koordinatni sistem je moguće promijeniti i postaviti ga na drugu povoljniju tačku u radnom prostoru NC stroja.
Kada se odredi novi koordinatni sistem W na čelu izratka pozivom naredbe G54 upravljačka jedinica će automatski unijeti vrijednosti koordinata tačke W, te se nulta tačka promijeni iz pozicije M (nulta tačke mašine ) u W (nulta tačka izratka).Prva naredba u programiranju je upravo funkcija pomaka nulte tačke kojom se dakle premješta koordinatni sistem u povoljniju poziciju.U praksi se obično kod struga prvi pomak vrši funkcijom G54(G55-G57) na čelo amerikanera (A) a zatim drugim funkcijama G58-G59 ili funkcijom TRANS(ATRANS) na čelo obrađene površine izratka. Time se lako određuje položaj točke W mjerenjem dužine izratka.
Slika 5. Premještanje nulte tačke (strug)
9
Kod glodalica pomak nulte tačke vrši se direktno pomoću G54 na izradak ili češće pomoću dvije funkcije. Prvi pomak je na čelo nepomične čeljusti škripca (tačka A) a drugi pomak je na izradak (G58… ili TRANS…).
Slika 6. Premještanje nulte tačke (glodalo)
U nastavku se nalazi spisak osnovnih G funkcija potrebnih za programiranje:
KOD OPIS
G00 Brzi hod
G01 Radni hod pravolinijsko kretanje
G02 Radni hod u smijeru kazaljke na satu (CW)
G03 Radni hod u suprotnom smijeru od kazaljke na satu (CCW)
G17 Odabir XY ravni za funkcije G02, G03
G18 Odabir XZ ravni za funkcije G02, G03
G19 Odabir YZ ravni za funkcije G02, G03
G40 Isključenje korekcije radijusa alata
G41 Korekcija radijusa alata (lijeva)
G42 Korektura radijusa alta (desna)
G43 Kompenzacija dužine alata (pozitivna)
10
G44 Kompenzacija dužine alata (negativna)
G49 Poništavanje kompenzacije dužine alata G43/G44
G52 Postavljanje koordinatnog sistema
G53 Opoziv koordinatnog tekućeg sistema
G54 – G59 Nulte tačke poredane od broja 1 do broja 6.
G74 Urezivanje navoja
G80 Poništavanje ciklusa 8x
G81 Ciklus bušenja
G82 Ciklus bušenja sa određenim vremenom čekanja na dnu rupe
G83 Ciklus dubokog bušenja sa vađenjem strugotine
G84 Ciklus urezivanja navoja (desni navoj)
G90 Programiranje u apsolutnom koordinatnom sistemu
G91 Programiranje u relativnom koordinatnom sistemu
G98 Povratak alata u početnu tačku u kojoj je alat bio prije upotrebe ciklusa
SPISAK M (POMOĆNIH) FUNKCIJA ZA GLODALICU
KOD OPIS
M0 Program stop
M1 Opcioni program stop
M2 Kraj programa
M3 Vreteno u smjeru kazaljke
M4 Vreteno u smjeru suprotnom od kazaljke na satu
M5 Stop vretena
M6 Izmjena ili odabir alata
M8 Rashladna tečnost uključena
M9 Rashladna tečnost isključena
M19 Orijentacija vretena
M30 Kraj programa
M97 Pozivanje lokalnog podprograma
M98 Pozivanje eksternog podprograma
M99 Povratak iz podprograma
11
Primjer primjene AutoLISP-a
Na sljedećoj slici je prikazan primjer čiju konturu ćemo programirat pomoću AutoLISP-a :
Slika 7. Primjer konture
Prije svega nacrtat ćemo konturu u AutoCAD-u prema zadatim koordinatama:
Slika 8. Izgled nacrtane konture u AutoCAD-u
12
Nakon što smo nacrtali konturu učitavamo program pomoću kojeg ćemo dobit CNC kod konture.
Program izgleda ovako:
(defun C:LW_CNC ()
(setq os (getvar "osmode"))
(setvar "OSMODE" 0) ;;; OSNAP 0-iskljucen 1-endpoint
;;;................... REŽIMI OBRADE........................................................
(SETQ ad 2.0 ;;; DUBINA
Feed 125.0 ;;; POSMAK mm/min
s 3000) ;;; BRZINA o/min
;;;................... OTVARANJE FAJLA ZA ZAPIS ............................................
(setq PUT_file (getfiled "Open DXF" "c:\\ DXF" "CNC" 1))
(setq CNC (open PUT_file "W"))
;;;....................REZIMI I ALAT........................................................
(write-line "%PRIPREMAK X100 Y100 Z10" CNC)
(write-line "G54" CNC)
(write-line "G58 X0 Y0 Z20" CNC)
(write-line "T01 D01" CNC)
(write-line (strcat "G97 S" (itoa (fix s))) CNC)
(write-line (strcat "G94 F" (itoa (fix Feed))) CNC)
(write-line "M03" CNC)
;;;.....................GEOMETRIJSKI PODACI.................................................
(setq l (entget (car (entsel "Selektuj Polyline:")))) ;;; Pridružena DXF lista za LwPolyline
(while (/= (caar l) 70) (setq l (cdr l))) ;;; isijeca prvi član liste do koda 70
(setq inchis (cdar l)) ;;; očitava vrijednost iza koda 0 ili 1
13
(if (= inchis 1) (setq inchis T) (setq inchis nil)) ;;; T zatvorena poly , "nil" otvorena
(while (/= (caar l) 10) (setq l (cdr l))) ;;; isijeca elemente liste do koda 10 .
(setq p1 (cdr (nth 0 l))
x1 (car p1)
y1 (cadr p1)
bulge (cdr (nth 3 l))
Pend p1
xprimul x1
yprimul y1)
;;; Pamti prvu taèku (posljednja za zatvorenu LW)
;;;...................RADNI ZAHVATI...........................................................
(write-line (strcat "G0 X" (rtos xprimul) " Y" (rtos yprimul)) CNC)
(write-line (strcat "G01 Z-" (rtos ad)) CNC) ;;; Zauzimanje Dubine "ad" u radnom hodu G1
(repeat 5 (setq l (cdr l))) ;;; isijeca listu do sljedeće tačke Nove verzije 5 umjesto 4
(while (> (length l) 1) ;;; petlja radi od posljednjeg elementa kod 210
(setq p2 (cdr (nth 0 l)) ;;; sljedeća tačka u listi dok ima liste
bulge1 (cdr (nth 3 l)) ;;; očitava Bulge i pamti ga kao bulge1
x2 (car p2)
y2 (cadr p2)
)
;;;.......................................................................................................
(setq u (* 4 (atan bulge))
ugrad (/ (* u 180) pi))
14
;;; Iz bulge izračunava pripadajući Ugao koji obuhvata
(if (/= bulge 0) ;;; ako je tačno do tačke 2 dolazi se arc-om ->progn
(progn
(command "ARC" p1 "E" p2 "A" ugrad)
(if (> bulge 0) (setq g "G03 ") (setq g "G02 "));;; odreðivanje interpolacije G2 ili G3 po predznaku
(setq x1 (car p1)
y1 (cadr p1)
x2 (car p2)
y2 (cadr p2)
d (sqrt (+ (* (- x1 x2) (- x1 x2)) (* (- y1 y2) (- y1 y2))))
r (sqrt (/ (* d d) 2 (- 1 (cos u)))))
;;; Izračunava radijus ARC segmenta
(if (> (abs ugrad) 180) (setq r (- r)))
(write-line (strcat g "X" (rtos x2) " Y" (rtos y2) " R" (rtos r)) CNC) ;;;Mijenja predznak R-a na bazi veličine ugla
);end progn
;;;; U SUPROTNOM DO SLJEDEćE TAčKE DOLAZI SE LINIJOM !!!
(progn
(command "LINE" p1 p2 "")
(write-line (strcat "G01 X" (rtos x2) " Y" (rtos y2)) CNC)
); end progn
); endif ;;; Zatvaranje IF petlje
;;;**********************************************************************************************************
15
(repeat 5 (setq l (cdr l))) ;;; Isijeca obraðeni segment od 4 člana u listi 10,40,41,42
(setq p1 p2 ;;; obraðenu tacku p2 proglasava tackom p1
bulge bulge1) ;;; varijablu bulge setuje na vrijednost bulge1
);End while ;;; sve dok ima tacaka *** izostavljeno
;;; ukoliko se radi o zatvorenoj konturi (inchis = T) u DXF zapisu dodana je zadnja tačka koja je koincidentna sa početnom
(if inchis
(progn
(setq u (* 4 (atan bulge))
ugrad (/ (* u 180) pi))
(if (/= bulge 0) ;; ako je T do posljednje tačke dolazi se arc-om
(progn
(command "ARC" p1 "E" Pend "A" ugrad)
(if (> bulge 0) (setq g "G03 ") (setq g "G02 ")) ;;; određivanje interpolacije
(setq x1 (car p1)
y1 (cadr p1)
xe (car Pend)
ye (cadr Pend)
d (sqrt (+ (* (- x1 xe) (- x1 xe)) (* (- y1 ye) (- y1 ye))))
r (sqrt (/ (* d d) 2 (- 1 (cos u))))
); setq
(if (> (abs ugrad) 180) (setq r (- r)))
(write-line (strcat g "X" (rtos xe) " Y" (rtos ye) " R" (rtos r)) CNC)
); end progn - thrue
16
(Progn ;; ako nije T do posljednje taèke dolazi se linijom
(command "LINE" p1 Pend "")
(write-line (strcat "G01 X" (rtos xe) " Y" (rtos ye)) CNC)
); end progn else
); end if /= bulge
); end progn
); end if inchis
;;; zatvaranje konture inchis T
;;;*******************ZAVRSNA SEKVENCA cnc PROGRAMA*******************************************
(write-line "G00 Z20" CNC)
(write-line "M05" CNC)
(write-line "M30" CNC)
;;Close CNC fAJL
(setq CNC (close CNC))
(setvar "OSMODE" os)
); End fun
(setvar "cmdecho" 0)
(princ "CADCAM_CNC učitan - ukucati LW_CNC za generisanje CNC koda")
(setvar "cmdecho" 1)
(princ)
17
Program učitavamo na ovaj način :
Slika 9. Učitavanje programa
Kada smo učitali program, u komandu traku upisujemo naredbu LW_CNC i selektujemo konturu.
Slika 10. Komandna traka
18
LITERATURA:
https://bs.wikipedia.org/wiki/CNC_ma%C5%A1ina
Programiranje CNC tokarilice i glodalice – Zdravko Blažević
AutoLISP programiranje – Dragan Cvetković
21