AutoCAD LT korisnici dobili su mnogo vrednosti sa izdanjem AutoCAD LT 2024. Prvi put, AutoCAD LT 2024 sada uključuje AutoLISP – što dodatno omogućava organizacijama da optimizuju radne tokove, primenjuju CAD standarde i koriste hiljade prethodno postojećih automatizacija za programe zasnovane na AutoCAD-u.
Ovo je odlična vest za zajednicu AutoCAD LT. Ne samo da postojeći korisnici AutoCAD LT-a imaju novi alat za istraživanje, već otvara celu grupu korisnika AutoCAD-a da iskoriste AutoLISP. I nije vam potrebno postati programer da biste to uradili.
Verovatno je sigurno reći da većina postojećih korisnika AutoCAD LT-a ne zna mnogo o AutoLISP-u. I zašto biste znali? Niste mogli da ga koristite, i niko ne uči funkciju ili programski jezik koji ne može da koristi. Ali možda ima nekoliko vas koji su svesni (u nekoj meri) šta AutoLISP može da uradi. Za obe grupe moglo bi biti dosta pitanja. Sada kada imate AutoLISP, šta možete da radite s njim? Gde možete pronaći kôd? Šta radite sa kôdom kada ga imate?
Nema potrebe za brigom! Ovde ćemo istražiti šta sada imate i kako da pronađete i koristite AutoLISP kôd u koji možete da imate poverenja i koji će vam pomoći u vašim svakodnevnim zadacima.
AutoLISP 101
AutoLISP je dijalekat programskog jezika Lisp. Razvijen 1958. godine, Lisp je drugi najstariji jezik koji se i dalje koristi, odmah posle Fortrana. AutoLISP je dodat AutoCAD verziji 2.18 još 1986. godine kao sučelje za proširenje njegove funkcionalnosti.
Ne samo da ga možete koristiti za automatizaciju zadataka sličnih (ali mnogo moćnijih od) skripti, već vam takođe omogućava da interagujete sa uređivačem na poznate načine. AutoLISP vam omogućava da definišete tačke, birate objekte, unosite alfa-numeričke podatke na liniji komande ili dajete ulaz putem dijaloških kutija koje se kreiraju pomoću njegovog pridruženog jezika, DCL (Dialog Control Language).
Brzi saveti za početak korišćenja AutoLISP-a
Jedna od najvažnijih razlika između AutoCAD-a i AutoCAD LT-a je činjenica da korisnici AutoCAD LT-a sada mogu koristiti AutoLISP kôd. VLIDE, što označava Visual LISP Integrated Development Environment, nije uključen u AutoCAD LT. On je integrisan u puni AutoCAD i tamo se obično piše i debaguje AutoLISP kôd.
Sa ili bez ugrađenog LISP uređivača, AutoLISP je jednostavan za korišćenje i za ne-programere. Jedan od razloga zbog kojeg je lakši jeste činjenica da je AutoCAD LT sam svoj interpretator za vaš kôd. Drugim rečima, možete uneti komad AutoLISP kôda direktno na komandnu liniju i on će ga pokrenuti za vas.
Kako vam ovo može biti od koristi? Pa, AutoLISP može obavljati matematiku. Možda ćete pronaći da je brže koristiti malo kôda umesto korišćenja QuickCalc alata ili čak Windows kalkulatora. Sintaksa može biti malo čudna za vas, pošto operator ili funkcija idu prvo, pa tako za zbrajanje 2 i 2, uneli biste (+ 2 2). On će vratiti vrednost 4. Molimo vas da zapamtite da AutoLISP izjava uvek vraća vrednost. To znači da možete koristiti AutoLISP izjavu da odgovorite na AutoCAD zahtev.
Recimo da AutoCAD LT traži rastojanje, a vi prvo trebate izračunati vrednost. Recimo da je to Pi puta 12 podeljeno sa 2 (jer zašto ne?). Unesite (/ (* pi 12) 2) na zahtev za rastojanje. AutoLISP vraća 18.8496 kao rastojanje (u zavisnosti od vaših podešavanja jedinica).
Šta ako želite vrednost kao niz na multivođu? Unesite (rtos (/ (* pi 12) 2) 4 2) kada se traži tekst. Ta rtos funkcija konvertuje vrednost u niz ili, u ovom slučaju, 1′ – 6 ¾”.
Možda imate kompleksan skup objekata za biranje i znate da će vam biti potrebno da ih još nekoliko puta izaberete u vašoj sesiji. Nema problema kada imate AutoLISP uz sebe. Samo unesite (setq SS (ssget)). Funkcija ssget će vas zamoliti da izaberete objekte kao što ste navikli. Sada nastavite i izvršite svoj kompleksan izbor.
U osnovi, kôd koji ste uneli (setq) će dodeliti izabrani skup objekata promenljivoj SS, koju će AutoLISP zapamtiti dok crtež ostane otvoren. Takođe vam pruža jednostavan mehanizam za njegovo povlačenje. Dakle, sledeći put kada vam budu potrebni ti objekti, unesite !SS na liniju komande. Baš tako, imate isti skup izbora. Kako budete nalazili ove male dragulje, kopirajte ih i zalepite u tekstualni dokument koji držite pri ruci. Samo malo izmenite tekst ako je potrebno, pa zatim kopirajte i zalepite!
Jedna stvar koju treba napomenuti o AutoLISP kôdu. Uvek koristite običan tekst, nikada ništa formatirano. Notepad je savršen za ovo. Samo izbegavajte svoj omiljeni program za obradu teksta.
Učitavanje i pokretanje AutoLISP kôda
DIjelovi kôda komandnoj liniji su korisni, ali verovatno ćete koristiti svoj omiljeni pretraživač i pronaći potpuno razvijene AutoLISP rutine na internetu, što će biti još korisnije. Obično će biti u jednom fajlu sa ekstenzijom .lsp, pa će vam biti potrebno znati kako da ih učitate i šta treba da uradite da biste ih pokrenuli.
Napomena: AutoCAD LT takođe dozvoljava učitavanje i pokretanje .vlx i .fas fajlova, koji su kompilirani formati, pa ih nećete moći otvoriti i čitati.
Najlakši način je komanda APPLOAD. Takođe možete pronaći njen ikonicu na panelu Aplikacije na traci za Manage. Pokretanje će prikazati dijalog Load/Unload Applications, gde ćete navigirati do vašeg AutoLISP fajla i kliknuti na Učitaj. Prilično jednostavno. Ali raditi na taj način znači da morate to raditi svaki put kada ponovo uđete u vaš crtež. AutoLISP fajlovi se ne učitavaju trajno podrazumevano. U donjem desnom uglu dijaloga Load/Unload Applications se nalazi nešto što se zove “Startup Suite“. Ako tu stavite vaš fajl, učitaće se svaki put kada otvorite crtež.
Takođe, možete da koristite sam AutoLISP da otvorite fajl. Samo otkucajte (load “filename.lsp”) i to je sve. To je u slučaju da se fajl nalazi na definisanoj putanji. Ukoliko to nije slučaj, moraćete da navedete punu putanju pre naziva fajla. A to zahteva izvesno poznavanje AutoLISP-a, pa možda nećete želeti da koristite ovaj metod.
Evo još jednog dobrog saveta. Možete da prevučete svoj AutoLISP fajl u vašu LT sesiju. Učitaće je i možete da počnete da radite. Ili ne možete? Vaš AutoLISP fajl je učitan, ali kako da ga pokrenete? Ponekad je programer prijateljski nastrojen i uključiće upit koji vam kaže šta da ukucate, pa obratite pažnju na Command Line history. Ukoliko to nije slučaj, moraćete da otvorite AutoLISP fajl (dupli klik) i pronađete red koji definište kako da ga pokrenete. Potražite sledeći kôd:
(defun C: commandNameHere …
Velika slova nisu važna, pa ne brinite zbog toga. Tražite reč defun (koji se koristi da definiše funkciju za AutoLISP) i C:, koji govori AutoLISP-u da je naredna reč naziv komande. To ćete ukucati u Command prompt da biste pokrenuli vašu AutoLISP rutinu.
AutoLISP za automatizaciju
Izvršavanje kôda pri otvaranju datoteke je odlično, ali postoji još! Šta mislite o mogućnosti da pokrenete kôd koji želite svaki put kada otvorite datoteku? Razmislite o tome kakve to posledice može imati.
Možete analizirati slojeve da biste se uverili da se poklapaju sa vašim standardima i popraviti ih, ako ne odgovaraju. Isti postupak možete primeniti na sve vaše stilove. Možete proveriti naziv datoteke, fasciklu ili putanju da biste osigurali usaglašenost na osnovu vrste crteža ili discipline kojoj pripada. Sve se lako može uraditi pomoću kôda koji možete pronaći na internetu uz nekoliko ključnih reči u pretraživaču.
Kako da počnete? Postoji posebna datoteka koja će se učitati svaki put kada se otvori crtež. U punom AutoCAD-u, zove se ACADDOC.lsp, ali u LT-u verziji sada se zove ACADLTDOC.lsp. Prvo ne postoji, pa ćete morati da je kreirate (setite se svog prijatelja, Notepada) i osigurate da se nalazi u fascikli koja je u vašim putanjama pretrage. Funkcionisaće kao Startup Suite u Load/Unload Applications dialogu, ali umesto samo učitavanja rutina da biste imali pristup njima, možete takođe izvršiti komande.
Tipično, ovo je i mesto gde ćete kontrolisati vaše LT okruženje. Možda postoji neke sistemski promenljive ili okružne promenljive koje želite da uvek budu podešene prema vašem ukusu. Evo primera AutoLISP izjava koje bi kompanija mogla dodati u datoteku ACADLTDOC.lsp:
(setvar “FILEDIA” 1)
(setvar “CMDDIA” 1)
(setvar “ATTDIA” 1)
(setenv “ShowFullPathInTitle” “1”)
To su samo AutoLISP iskazi, pa kada se fajl učita, oni automatski funkcionišu bez potrebe da se unosi naziv komande. Ovo je sjajan način da standardizujete svoje postavke.
Takođe, možete kreirati skraćene ili male pomoćne komande. Samo budite sigurni da ste zapamtili naziv komande (deo posle C:). I opet, ovaj kôd se učitava i spreman je da ga koristite. Evo primera komande sa skraćenim nazivom sličnom aliasu komande. Samo ukucajte MP kako biste pokrenuli MATCHPROP.
(defun c:mp () (command “_matchprop”) (princ))
Ili možda neku vrstu pomoćne komande. Sledeći kôd će okrenuti vaš odabrani objekat za 180° oko tačke koju ste definisali.
(defun C:flip () (command “_rotate” (car (entsel)) “” (getpoint) “180”) (princ))
Istraživanje Visual Lisp-a
Sve o čemu smo dosad razgovarali uključuje korišćenje sirovog AutoLISP-a. Međutim, možda naiđete na proširenje koje je široko korišćeno. Kada pogledate kôd, obratite pažnju na sledeću izjavu na vrhu fajla: (vl-load-com). To je vaš trag da vaš kôd primenjuje funkcije srodne ActiveX-u. Takođe, tražite komande koje počinju sa “vla-“ ili ‘vlax-“.
Nalaženje ovoga nije nužno loša stvar, jer vaša nova i unapređena LT podržava njegovu upotrebu. Međutim, u zavisnosti od toga šta pokušava da uradi, možda neće pravilno funkcionisati. Na primer, ActiveX u AutoLISP-u može kreirati i menjati 3D objekte, ali pošto LT ne podržava 3D, to ne bi radilo. Isti slučaj bio bi i sa ograničenjima, profilima, spoljnim aplikacijama, itd.
Ali postoji jedna vrsta ActiveX-a u AutoLISP kôdu koja bi vam mogla biti korisna, i koja bi trebalo da radi za vas. Zar ne bi bilo sjajno ako nešto vreba u pozadini vaše sesije crtanja, čekajući da se desi samo jedna stvar?
Razmislite o ovom scenariju. Korišćenje opcije „Exploding dimensions“ je strogo zabranjena u vašoj kancelariji. Ali se ipak desilo da je korišćena. Koliko bi bilo dobro da imate deo skrivenog kôda koji je programiran tako da nešto uradi samo ako se upotrebi komanda EXPLODE na dimenziji? Korisnik pokuša da je upotrebi, kôd preuzme situaciju i spreči izvršenje komande.
Ovo se naziva programiranje vođeno događajima i postiže se korišćenjem reaktora. To je malo napredno, ali možete pronaći radne primere. Reaktor i funkcija koju pokreće kada je aktivirana (“callback funkcija”) takođe bi mogli biti smešteni u ACADLTDOC.lsp fajlu.
Pronalazak AutoLISP i vizualnog Lisp kôda
Možda prvobitno nećete pisati kôd iz početka, već ćete ga uglavnom pronaći na internetu. Na kraju ćete (verovatno) uraditi ono što je skoro svaki AutoLISP programer uradio na početku. Pronaći ćete neki kôd, pokušati ga pročitati, promeniti nešto i videti da li i dalje radi.
Evo male AutoLISP funkcije koja menja sve tekstualne stilove da koriste font ROMANS.
(defun C:MakeRomans (/ rewind next name)
(setq rewind T)
(while (setq next (tblnext “STYLE” rewind))
(setq name (cdr (assoc 2 next)))
(if (not (wcmatch name “*|*”))
(command “-style” name “romans” “” “” “” “” “” “”))
(setq rewind nil))
(princ))
Verovatno vam sve ovo izgleda strano, ali ako pažljivije pogledate, možda ćete prepoznati neke stvari. Znate za komandu STYLE, i naravno, ROMANS vam je poznat. Zapravo, cela ta linija izgleda dosta slično tome kako biste je napisali u skripti. Možda ste spremni da vidite šta će se desiti ako nešto promenite.
Možda biste prvo pokušali sa drugim fontom. Promenite ROMANS u ARIAL. Sačuvajte, učitajte, pokrenite… i eto! Radi!
Nazad na internet. Tako ćete prvobitno pronaći svoj kôd. Jedna stvar koju gotovo potpuno mogu da vam garantujem je da ako imate dobru ideju za zadatak koji bi AutoLISP trebalo da reši, niste prvi koji to radi. Još jedna stvar o programerima AutoLISP-a – vole da pokažu svoj rad. To takođe znači da vole da pomognu jedni drugima. To je dobra kombinacija za vas.
Prvo, moraćete postati vešti u korišćenju određenih ključnih reči i fraza kako biste pronašli tačno ono što vam je potrebno. Pazite da uključite celu reč AutoLISP (ne samo Lisp). Uvek započnite sa AutoCAD-om takođe. Ne uključujte LT. Trenutno nema AutoLISP kôda za LT – još!
Koristite glagol ili glagole koji opisuju šta želite da vaš kôd uradi, i koristite jezik AutoCAD-a. Na primer, koristite Copy, a ne Duplicate. Izbegavajte članove i predloge. Pokušajte da napravite pretragu sličnu ovoj: AutoCAD AutoLISP Export Layer Table
Vremenom ćete saznati šta dobro funkcioniše za vas, a šta ne. Takođe ćete početi da primećujete obrasce u rezultatima. Određeni sajtovi će se često pojavljivati. Takođe ćete dobiti osećaj koji vam pruža najbolje rezultate. I obrnuto, naravno.
Čak možete isprobati i nešto od najnovijeg u veštačkoj inteligenciji. Sigurno ste čuli o sajtovima za AI ćaskanje koji su se pojavili ove godine. Samo pitajte jednog od njih da vam napiše neki kôd! Ali budite oprezni jer pruža rezultate sa nekim “početničkim” greškama. Koliko brzo se tehnologija menja i razvija, možda će biti usavršeno do trenutka kada ovo budete čitali.
Izvori za učenje
Nadam se da vas je sve ovo zainteresovalo da saznate više. I postoje mnogi resursi koji vam mogu pomoći da započnete.
Najbolje mesto gde možete pronaći pomoć u razumevanju značenja vašeg kôda je Autodesk-ov AutoLISP Developer’s Guide. I ako ste spremni da idete toliko daleko, možda biste voleli da odete još malo dalje. Postoji čak i tutorijal za početnike koji će vam pomoći na vašem putu. I, naravno, postoje AutoLISP forumi.