Il linguaggio Lisp nei software CAD
AutoCAD e tutti i software cloni e/o simili, a parte rari casi, danno la possibilità di sviluppare applicazioni utilizzando diversi linguaggi tra cui Lisp, che solitamente viene indicato come AutoLISP e/o Visual Lisp.
Ma ha che serve questo Lisp? Cosa posso farci? Per quale motivo sarebbe utile imparare a programmare usando il linguaggio Lisp?
La prima domanda, la più semplice, quella a cui è immediato rispondere è a cosa mi serve il linguaggio Lisp?
Il linguaggio Lisp, nei software CAD, mi serve per automatizzare le operazioni di disegno in modo che io faccia meno lavoro ottenendo risultati migliori.
Cosa posso fare?
Ma veniamo al sodo. Parliamo di cose concrete. Vediamo ora cosa si può fare usando il linguaggio Lisp.
Il primo esempio che mi viene in mente riguarda AutoCAD. Molti utenti utilizzano le funzionalità offerte da quelli che vengono chiamati "Express Tools". Queste funzioni sono raggruppate all'interno della tendina di menu "Express".
Questi strumenti includono comandi per il trattamento dei blocchi, dei testi, delle quote e molto altro.
Bene, diversi comandi degli "Express Tools" sono scritti in Lisp. Chiunque sia in possesso di un AutoCAD (non LT), o anche della versione dimostrativa, può verificare direttamente aprendo uno dei file .LSP che si trovano nella cartella "Express" presente all'interno di quella di AutoCAD (es.: "c:\Program Files\Autodesk\AutoCAD 2019\Express\").
In questa cartella possiamo trovare la definizione, in forma sorgente(leggibile e non criptata), di questi comandi e di molti altri:
- In acadinfo.lsp si trova il comando acadinfo.
- In acetess.lsp si trova il comando exp.
- In aliasedit.lsp si trova il comando ALIASEDIT.
- In aspace.lsp si trova il comando alignspace.
- In attout.lsp si trova il comando attout.
- In blocktoxref.lsp si trova il comando blocktoxref.
- In breakl.lsp si trova il comando breakline.
- In bscale.lsp si trova il comando bscale.
- In burst.lsp si trova il comando BURST.
- In cdorder.lsp si trova il comando cdorder.
- In clipit.lsp si trova il comando clipit.
- In copym.lsp si trova il comando copym.
- In count.lsp si trova il comando bcount.
- In dimassoc.lsp si trova il comando dimreassoc.
- In dwglog.lsp si trova il comando dwglog.
- In etbug.lsp si trova il comando etbug.
- In exoffset.lsp si trova il comando exOffset.
- In explan.lsp si trova il comando explan.
- In extrim.lsp si trova il comando extrim.
- In fastsel.lsp si trova il comando fastsel.
- In gatte.lsp si trova il comando gatte.
- In getsel.lsp si trova il comando GETSEL.
- In ix_edit.lsp si trova il comando imageedit.
- In layoutmerge.lsp si trova il comando layoutmerge.
- In mkshape.lsp si trova il comando mkshape.
- In movebak.lsp si trova il comando MOVEBAK.
- In mpedit.lsp si trova il comando mpedit.
- In mstretch.lsp si trova il comando mstretch.
- In plt2dwg.lsp si trova il comando plt2dwg.
- In redir.lsp si trova il comando redir.
- In shp2blk.lsp si trova il comando shp2blk.
- In sprhatch.lsp si trova il comando tframes.
- In tcase.lsp si trova il comando tcase.
- In textfit.lsp si trova il comando textfit.
- In textmask.lsp si trova il comando textunmask.
- In trex.lsp si trova il comando trex.
- In trexblk.lsp si trova il comando btrim.
- In tscale.lsp si trova il comando tSpaceInvaders.
- In txtexp.lsp si trova il comando txtexp.
- In vpscale.lsp si trova il comando vpscale.
- In vpsync.lsp si trova il comando vpsync.
- e molti altri...
Anche altri CAD utilizzano Lisp per lo sviluppo di alcune funzioni. Un altro esempio interessante è progeCAD, nel quale sono inclusi molti file Lisp, eccone alcuni (dalla versione 2019 in lingua italiana):
- Chgtocurrentlayer.lsp.
- Clone.lsp.
- Convertpoly.lsp.
- Copytolayer.lsp.
- Elevzero.lsp.
- Freezlayer.lsp.
- Isolatelayer.lsp.
- Layer.lsp.
- Locklayer.lsp.
- Markers.lsp.
- Movetolayer.lsp.
- Multiplefreeze.lsp.
- Newlayer.lsp.
- Offlayer.lsp.
- progecad.lsp.
- Setlayer.lsp.
- Trimm.lsp.
- Unlocklayer.lsp.
- var2txt.lsp.
- AutoSEZ\AutoSEZ_96.LSP.
Quindi, il primo utilizzo pratico del linguaggio Lisp è la creazione di comandi per semplificare le attività di disegno.
Ma con il linguaggio Lisp si può andare molto oltre. E' possibile creare applicazioni in grado non solo di aiutarci nel disegno ma anche applicazioni in grado di disegnare al nostro posto.
Esistono applicazioni che, dati una serie di parametri, creano interi disegni bidimensionali e/o tridimensionali.
Allo stesso modo esistono software che preparano la documentazione dei progetti leggendo direttamente i dati dal disegno e generando quanto serve senza l'intervento del disegnatore.
Un altro buon esempio di utilizzo del linguaggio Lisp è l'esecuzione di una singola procedura su un insieme, più o meno ampio, di disegni gia fatti. Ad esempio, se avessi 1000 disegni e volessi cambiare il nome ad un layer in tutti questi progetti? Lisp può farlo.
Nella pratica, all'interno del nostro CAD, qualsiasi operazione che possa essere trasformata in un algoritmo, che leggendo dei dati produce un risultato, può essere effettuata utilizzando il linguaggio Lisp.
Ovviamente ci sono dei limiti ma, sicuramente, è il sistema più semplice per realizzare automatismi all'interno del nostro software CAD.
Esempi nel "Il Mio Lisp"
Il Mio Lisp è un testo, in italiano, che spiega come approcciare al linguaggio per realizzare le proprie applicazioni.
Con il testo vengono distribuite alcune applicazioni in formato sorgente.
Ad esempio è incluso un gestore di blocchi, dotato di interfaccia grafica, che consente la creazione di una libreria personalizzabile con la quale inserire i blocchi nei disegni.
Un altro esempio è rappresentato dalla procedura che consente il salvataggio di tutti i blocchi presenti in un progetto.
Andando oltre, sempre con il libro, troverete una agenda. Una rubrica per i propri contatti da utilizzare all'interno del CAD. Per quanto questa funzionalità sia superflua dimostra che, con un po di fantasia, si può realizzare una vasta gamma di applicazioni usando un CAD e il linguaggio Lisp.
Il libro completo e gratuito è scaricabile cliccando qui.
Come usare le funzioni Lisp reperibili in rete?
Su internet è possibile reperire molte funzioni Lisp da caricare nel proprio CAD. Ma come usarle?
Il primo passaggio è scaricare la procedura. Solitamente si scaricherà uno o più file con estensione .lsp, oppure .fas o .vlx. In alcuni casi si avranno anche dei file di supporto da posizionare nella stessa cartella dei file di programma.
Facciamo un esempio pratico. Scarichiamo il file Lisp presentato in questa pagina:
In questo caso scaricheremo un solo file, accdist.lsp. Mettiamolo in una cartella qualsiasi.
A questo punto apriamo il nostro CAD e usiamo il comando di caricamento delle applicazione, _APPLOAD (possiamo tranquillamente digitarlo sulla linea di comando).
Una volta caricato il nostro file ".lsp" avremo a disposizione la nuova procedura.
Ma... come capire quali comandi sono stati aggiunti e come usarli?
Nel nostro esempio, il file accdist.lsp definisce il nuovo comando accdist che potremo eseguire digitandolo sulla linea di comando.
In senso generale, se il programma Lisp viene distribuito in formato sorgente (file .lsp non criptato) allora per capire quali nuovi comandi vengono definiti basta cercare, all'interno del file, la dicitura "defun c:". Ciò che si trova dopo il "c:" è il nome del nuovo comando.
Invece, nel caso il programma sia distribuito come file .fas e/o .vlx, è necessario avere indicazioni da parte di chi lo ha creato e/o distribuito. Solitamente vengono fornite delle istruzioni su come usare il software.
Diciamo che, l'accesso a qualche forma di documentazione semplifica molto la vita, e in alcuni casi è assolutamente indispensabile.
Concludendo
Lisp è un linguaggio che, nella sua semplicità, è adatto sia a chi si avvicina per la prima volta al mondo dello sviluppo di applicazioni per i CAD, sia a chi sviluppa applicazioni commerciali in modo professionale.
Un buon punto di ingresso nel "mondo" delle applicazioni per i CAD e un prezioso strumento per ottimizzare il lavoro.
Riferimenti
Ecco alcuni siti/pagine che trattano l'argomento Lisp e CAD:
- Il Mio Lisp. Libro gratuito, in Italiano, dedicato al linguaggio Lisp/AutoLISP/Visual Lisp.
- https://www.emicad.it/EmiCAD/prodotti/EmiCAD/EmiLISP/index.asp.
- https://www.afralisp.net/index.php.
- http://www.sepram.it/lisp.html.
- https://www.kimprojects.com/free-lisp-programs/.
- https://jtbworld.com/autolisp-visual-lisp.
Licenza articolo
Questo articolo è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale.