Script
Ci sono diversi modi per personalizzare l'applicazione e automatizzare processi ripetitivi. Il VisualLisp è un vero e proprio linguaggio di programmazione riservato alla versione full, ma anche nella versione light si possono usare script o macro, e aggiungerli ai propri menù. In sostanza si tratta di file o stringhe di testo che immettono in automatico gli stessi comandi e opzioni che normalmente inseriremmo da prompt (la finestrella dei comandi, appunto).
Se provate a scrivere i comandi dal prompt, noterete che il cad vi chiede una serie di opzioni, punti di inserimento eccetera. Se copiate il testo della procedura fino alla fine del comando, e rimuovete le domande del cad, salvandolo in un file di testo con estensione .scr potrete ripetere rapidamente l'intera sequenza con il menù Tools → Run Script… e selezionando il file appena salvato, oppure trascinando il file da explorer nel disegno.
Ad esempio volendo usare change per modificare l'elevazione di tutti gli oggetti a 0, il "dialogo" con il cad sarebbe (premete F2 per espandere il prompt) quando finito:
Command: _CHANGE
Select objects: all
166 found
26 were not in current space.
Select objects:
Specify change point or [Properties]: p
Enter property to change [Color/Elev/LAyer/LType/ltScale/LWeight/Thickness/TRansparency/Material/Annotative]: e
Specify new elevation <0.0000>:
Enter property to change [Color/Elev/LAyer/LType/ltScale/LWeight/Thickness/TRansparency/Material/Annotative]:
Occorrerà osservare alcune precauzioni:
- editare lo script in notepad, o assicurarsi che l'editor di testo salvi in ASCII e non UTF o altra codifica
- per i comandi che lanciano una finestra (es: layer) spesso c'è l'equivalente testuale distinto da un meno (es: -layer)
- per l'internazionalizzazione conviene usare il comando inglese anche nelle versioni italiane del software, anteposto da un trattino basso (es: _-layer)
- lo spazio equivale a un return/invio, ma potrebbe essere meno visibile, meglio preparare il file usando il return così sarà più facile individuarli (come a-capo)
- attenzione a non dimenticare spazi non voluti a fine linea che sarebbero interpretati come invio
- le righe che iniziano con punto e virgola verranno ignorate, saranno usate come commenti nel codice
- ricordarsi di concludere il comando con il giusto numero di a-capo (sempre almeno una riga vuota)
- attenzione ad apparenti ritorni a capo, che non sono tali, dovuti a lunghe linee (wrapping)
- se c'è un riferimanto a un file con un nome o percorso con spazi, racchiuderlo in virgolette doppie
- se usate un comando che chiede l'interazione dell'utente (ad es. selezionare un oggetto con il mouse, o cliccare in una finestra) lo script si interrompe
- se nello studiare la sequenza non sapete come rispondere ad un quesito digitate
?
dato che durante l'esecuzione dello script non si possono fare selezioni, un trucco è fare una selezione prima di lanciare lo script, e nello script medesimo usare l'opzione p (previous) quando venga richiesta una selezione, come nell'esempio è stato usato all.
Il nostro script chengeelevation.scr, tolte le interiezioni del cad, sarebbe pertanto:
_-CHANGE
; seleziona tutto
all
; ulteriore invio per concludere la selezione
; scegliamo di modificare le Proprietà
p
; di queste l'Elevazione
e
; impostiamo l'elevazione a zero
0
; usciamo dalla modialità di modifica della proprietà, ma siamo ancora nel comando Change
; ulteriore invio per terminare il comando (l'ultima linea deve esser vuota)
Scriptpro
Con l'applicazione (esterna al cad) Scriptpro si può far girare uno script su multipli file senza lanciare il cad, come magari mandarli in stampa su uno specifica stampante, specifico formato e ctb, ad esempio lanciare tutte le tavole progettate in PDF A0 in una serie di A3 sulla stampante con penne sottili.
Macro
A differenza dello script, che è un file esterno, le macro possono essere lanciate tramite l'interfaccia del cad (pulsanti, combinazioni di tasti, menù…) e si trova nella CUI o in una Tool Palette. I primi saranno più facili da trasferire tra pc o essere mantenuti in un server condiviso, il caricamento dei secondi è più complesso, non possono contenere commenti ma possono contenere autolisp e espressioni Diesel, che funzionano anche il light. Di questo parlerò in una prossima puntata.