Guida introduttiva agli script per Autocad

Questo articolo rappresenta una introduzione ai famosi script di Autocad. Gli script che tratteremo non devono essere confusi con gli script in visual basic, ne tantomeno con quelli in lisp, essi non sono altro che una lista di comandi salvati in un file di testo con estensione ".src".

Per essere più chiari diciamo che i comandi a cui mi riferisco sono quelli che digitiamo nell'interfacci grafica di Autocad, per cui se io volessi disegnare una linea che va dal punto (0,0) al punto (1,1) dovrei digitare la seguente sequenza di comandi:

linea
0,0
1,1
(invio)

Ricordo che in Autocad la virgola separa le coordinate, mentre il punto distingue la parte intera di un numero da quella decimale.

Ora noi prendiamo questi comandi, li inseriamo in un file di testo, salvandolo col nome "prova.scr" avremo creato il nostro primo script. Per lanciarlo basterà usare da autocad il comando script e successivamente inserire il nome dello file di script oppure tramite il menu "Strumenti"->"Esegui Script".

Vediamo di migliorarlo ancora un poco. Il comando linea abbiamo capito che necessita di due parametri il modo che usiamo di solito (step-by-step) funziona bene, potremo specificare i parametri separandoli da uno spazio e per terminare il comando usate una riga vuota:

linea 0,0 1,1 
(riga vuota)

In questo modo i comandi possono esse più leggibili. Usare lo spazio nell'interfaccia grafica è un po difficile dato che esso viene interpretato come INVIO.

Un altro consiglio, che potrebbe aiutare a leggere meglio e capire uno script, sono i commenti, infatti Autocad ignorerà tutte le righe che iniziano con un punto e virgola ";".

In altri articoli ho già spiegato il concetto dei nomi dei comandi, i quali sono personalizzati a seconda del pacchetto linguistico installato, quindi se si usa un autocad in lingua inglese il nostro script precedente non potrà mai funzionare dato che il comando per creare una linea sarà "LINE", quindi a scanso di equivoci, se volete scrivere degli script portabili, vi consiglio di usare i comandi nativi di autocad, che solitamente sono uguali a quelli in inglese ma preceduti dal carattere "_" per cui il comando "LINEA" diventerà "_LINE".

Come avrete capito per scrivere degli script è assolutamente necessario conoscere i comandi e i vari parametri; in questo ci aiuta la guida ai comandi di Autocad, strumento indispensabile se non si vuole procedere alla cieca o per tentativi.

Per ricaricare uno script appena terminato usate il comando _rscript. Per riprendere il processo dello script usate il comando _resume.

Soppressione finestre di dialogo

 Alcuni comandi per poter funzionare in autonomia dalle finestre di dialogo hanno bisogno delle variabili di sistema FILEDIA e CMDDIA impostate a zero, quindi è buona norma eseguirne il backup, impostarle a zero e una volta eseguito il comando devono essere ripristinate. Se non verranno ripristinate l'utente dovrà farlo manualmente, sempre che ne sia capace...

Un semplice esempio:

filedia 0
(comandi)
filedia 1

Ad ogni modo nelle ultime versioni di autocad i comandi lanciati da script non necessitano di questo accorgimento, che secondo me , per ragioni di compatibilità è sempre meglio inserire.

Un altro modo per evitare alcune finestre di dialogo è quella di usare il segno " - " prima del comando, in questo modo si potranno inserire in maniera testuale i vari parametri.

Ad esempio, immettendo layer alla riga di comando, viene visualizzato il Gestore proprietà layer. Immettendo -layer, invece, vengono visualizzate le opzioni equivalenti della riga di comando.

Comando: -TRATTEGGIO

Modello di tratteggio corrente: SOLID
Specificare il punto interno o [Proprietà/Seleziona oggetti/Disegna
contorno/elimina Contorni/Avanzate/ORdine di
visualizzazione/Origine/annotatiVo]: 0,0
Selezione totale...
Selezione di tutto quello che si può vedere...
Analisi dei dati selezionati...

Analisi di isole interne in corso...

Modello di tratteggio corrente: SOLID
Specificare il punto interno o [Proprietà/Seleziona oggetti/Disegna
contorno/elimina Contorni/Avanzate/ORdine di
visualizzazione/Origine/annotatiVo]:

Per fare questo da script :

;Prima di lanciare questo script disegnare un cerchio con origine nel punto (0,0)


-tratteggio 0,0


;fine script (attenzione ad inserire le 2 righe vuote finali)

Tutto molto semplice.

Un altro esempio di soppressione della finestra di dialogo è il comando -INSER , con il quale potremo inserire un blocco all'interno del disegno.

;Inserimento blocco ([nome] [punto base] [scalaX] [scalaY] [rotazione])


-inser aaa 0,0,0 1 1 0

;fine

Il trucco del segno meno di fronte ai comandi naturalmente si può usare anche con i comandi in formato nativo, per cui il comando STAMPA corrisponderebbe al comando PLOT, e il comando -STAMPA corrisponderebbe al comando _-PLOT e non a -_PLOT.

Comandi trasparenti

Molti comandi possono essere utilizzato in modo trasparente. In altre parole, possono essere digitati alla riga di comando mentre è in uso un altro comando. I comandi trasparenti modificano frequentemente le impostazioni o la visualizzazione del disegno, ad esempio GRIGLIA o ZOOM. Nella Guida di riferimento dei comandi, i comandi trasparenti vengono indicati con un apostrofo posto prima del nome del comando.

Per utilizzare in modo trasparente un comando, occorre digitare un apostrofo ( ' ) prima del comando. Alla riga di comando, i messaggi di richiesta relativi ai comandi trasparenti sono preceduti da parentesi angolari doppie (>>). Al termine dell'esecuzione del comando trasparente, viene ripresa l'esecuzione del comando originario. Nell'esempio riportato di seguito viene illustrato come attivare la griglia di punti e impostarne l'intervallo di spaziatura su una unità durante il disegno di una linea, senza interrompere tale operazione.

Comando: linea
Specificare primo punto:'grid
>>Specificare spaziatura griglia (X) o [ON/OFF/Snap/Aspetto] <0,000>: 1

(Ripristino del comando LINEA)


Specificare primo punto:

In genere, i comandi che non selezionano oggetti, non creano nuovi oggetti o non concludono una sessione di disegno possono essere usati in modo trasparente. Le modifiche effettuate in una finestra di dialogo aperta in modo trasparente non potranno tuttavia avere effetto finché non sarà stato completato il comando interrotto. Analogamente, se una variabile di sistema viene reimpostata in modo trasparente, il nuovo valore non sarà attivo finché non verrà avviato il comando successivo.

Usare AutoLISP negli script

Come accade per i comandi manuali dalla finestra di testo di autocad, per usare un comando lisp basta usare le parentesi tonde. Questo può tornare utile quando si ha bisogno di un comando più elaborato dove si usano magari delle variabili.

Esempio:

;Disegna una linea utilizzando 2 variabili


(setq pt1 '(1 1) pt2 '(1 5))
(command "_line" pt1 pt2 "")

;Inserisce un testo al punto (0,0) altezza carattere 0.2 e rotazione 0


(setq A 1)
(command "_text" "0,0" "0.2" "0" A)

;Fine

E' implicito che per questo tipo di comandi occorre conoscere la funzioni lisp e la struttura del linguaggio.

Usare le macro in uno script

Un altro metodo per automatizzare una successione dei comandi è l'action recorder ovvero il registratore macro.
In pratica si tratta di uno strumento presente nelle versioni più recenti di Autocad, che permette di registrare passo passo tutte le azioni compiute nell'interfaccia utente e successivamente modificarle tramite una intuitiva finestra di dialogo. alla fine la macro viene salvata in un file ".actm" nella cartella predisposta automaticamente dall'applicazione.
Questo significa che la macro non viene conservata all'interno del file e quindi per poterla eseguire su un'altra postazione occorre copiare questo file.

Pe ritornare al discorso degli script potremo creare una macro e poi lanciarla semplicemente da script seplicemente scrivendone il nome. Se nella macro erano previsti dei dati in ingresso, essi potranno essere forniti alla macro scrivendoli nelle righe successive al suo nome.

Come esempio usero una macro chiamata MacroTesto001 che inserisce un particolare testo nella posizione da noi specificata (2,2):

;Inserisce testo


MacroTesto001
1,1


;fine

 

 

Compago