31 agosto 2020

AutoCAD Core Console, il motore di AutoCAD

Un programma aggiuntivo ad AutoCAD fornito per elaborare (molti) file di disegno tramite file Script...

Immaginate di acquistare un'automobile. Al momento della consegna il concessionario oltre all'auto vi fa trovare un motore. Un motore identico a quello della vostra nuova auto.

In fondo è come se fosse una seconda auto, però senza carrozzeria, sedili, strumenti di guida e segnalazione.

Qualcosa di simile avviene con AutoCAD. Nella cartella principale del programma oltre ad acad.exe - l'eseguibile che avvia il programma - esiste un altro programma a cui però manca l'interfaccia grafica (menu, ribbon , ecc.) e il collegamento con le perfiferiche di input grafico. Ci sono solo linea di comando e output tramite comandi di stampa ed esportazione.

Il nome di questo eseguibile e ACCORECONSOLE.EXE ed è fornito con AutoCAD sin dalla  versione 2013.

Il programma è un AutoCAD senza un'area grafica per mostrare il disegno, può ricevere solo input via linea di comando o tramite file Script.

Il fatto che il programma sia privo di interfaccia grafica e che quindi non carichi una consistente parte di codice lo rende estremamente veloce.

Se il programma si richiama tramite file batch è possibile iterare l'azione di esecuzione di file Script per ogni file contenuto nella cartella specificata.

Durante la sua esecuzione si può tranquillamente continuare a lavorare con AutoCAD, i 2 programmi sono indipendenti.

A chi serve

Serve a chi ha la necessità di eseguire delle operazioni su disegni tramite comandi su un grande numero di file dwg (anche migliaia) in tempi ridotti.

Le operazione possono essere quelle di disegno, di controllo, di pulizia, di stampa. L'unico limite è quello che non possono essere utilizzati comandi che usano riquadri di dialogo e che quindi richiedono in maniera interattiva un input all'utente.

Immaginate una azienda che per un elevato numero di disegni debba cambiare solo il cartiglio o una intestazione per caratterizzare i disegni per un nuovo cliente o progetto.

In aggiunta l'eseguibile riesce a sfruttare i singoli core della CPU e quindi più processi potrebbero essere lanciati in parallelo.

Rappresenta dunque una alternativa all'uso di programmi sviluppati in altri linguaggi o a tool di terze parti per applicare script su gruppi di file DWG.

Potrebbe essere utilzzato all'interno di processi di generazione di disegni parametrici, gestito da sw proprietari come il componente delegato a creare il file DWG.

Il programma è anche un ottimo strumento di test per gli sviluppatori che utilizzano le librerie software  di Autodesk  per la modifica e creazione di disegni attraverso il Cloud.

Infine, in qualche maniera, è gratuito. ACcoreconsole non verifica se è attiva una licenza (io ho testato la versione presente in AutoCAD 2020 al termine del periodo di trial di 30 giorni).

Come funziona

Se si prova ad avviare con un doppio click il programma Accoreconsole.exe, presente nella cartella principale del programma AutoCAD, si vedrà una finestra tipo questa:

la finestra in modalità testo di Accoreconsole.exe

Nella finestra possiamo notare alcune informazioni relative alla versione, al percorso dell'eseguibile e le le informazioni riguardo  l'uso "Usage".

Nella parte inferiore il familiare "Command" pronto a ricevere comandi che possono essere digitati ed eseguiti. Già in questa fase si potrebbe immettere una sequenza di comandi e parametri tipo:

linea
10,10
30,20
<invio>
salva

Avremmo creato così un disegno nuovo contenente una linea dal punto 10.10 al punto 20,20.

Immettere un comando per volta, digitando tutti i suoi parametri, non è proprio il massimo della praticità. Ecco perchè ad ACCORECONSOLE si danno 'in pasto' dei file script che contengono sequenze di comandi.

Cosa sono i file SCRIPT

I file SCRIPT sono file che contengono delle sequenze di comandi AutoCAD così come si digitano su linea di comando, con la stessa sintassi.

I file che hanno estensione .SCR possono essere eseguiti all'interno di AutoCAD tramite il comando Script.

Ad esempio, uno script che contenesse la sequenza seguente disegnerebbe un cerchio di raggio 20 nel punto 0,0 e poi eseguirebbe uno zoom sullo stesso.

Cerchio
0,0
r
20
zoom
o
u

La grande potenzialità di questo sistema è che ai comandi si possono affiancare delle funzioni AutoLISP.

Il supporto del linguaggio AutoLISP e ARX consente in realtà di eseguire operazioni più complesse ed ad avere un maggior controllo, senza doversi affidare alla sequenza di comandi e loro opzioni che comunque vanno inseriti con la giusta sintassi. 

In definitiva il file Script potrebbe servire solo ad avviare un comando LISP o ARX.

Per chi volesse approfondire i dettagli sull'argomento può consultare la guida AutoCAD sul comando Script.

Processare più file DWG

Se poi Accoreconsole è richiamato tramite un file batch (.bat) è possibile far applicare le sue azioni (guidate dai comandi del file script) per ogni file dwg presente in una cartella.

Questa è la situazione che permette di trarre il mssimo beneficio dal programma : l'applicazione su numerosi file DWG, senza ingolfare il PC ed in tempi rapidi.

I file batch sono file di testo che contengono sequenze di comandi del sistema operativo. Nel nostro caso quello che sfrutteremo sarà la capacità di elencare i file presenti in una cartella.

I file batch rappresentano lo strumento più semplice per reiterare l'azione di Accoreconsole su più file ma, in ambiente Windows, si potrebbero utilizzare anche degli script Visual Basic (.vbs), leggermente più complessi ma con un ventaglio di funzioni più esteso.

Una tipica sequenza di comandi di un file batch per elencare i file di una cartella è:

FOR %%f in <nome_cartella> DO <nome programma da lanciare> %%f

in pratica nella variabile %%f viene ciclicamente memorizzato il nome del file e poi passato come parametro al programma da lanciare. 

Quindi nel caso concreto che volessimo lanciare Accoreconsole per ogni file presente nella cartella c:\bak\lavori\dwg\ avremmo:

FOR %%f in (c:\bak\lavori\dwg\*.dwg) DO c:\"program files"\"AutoCAD 2020"\accoreconsole.exe /i %%f

Questo tipo di sintassi è un po' criptica per l'utente che non ha mai 'masticato' il sistema operativo  DOS prima dell'avvento di Windows.

Un concetto da capire è quello dei  parametri. Accoreconsole può ricevere dei parametri che lo istruiscono su come comportarsi. Li riceve sempre nel file batch quando viene richiamato ed eseguito.

Il /i %%f utilizzato nell'esempio precedente è un parametro che indica ad Accoreconsole il nome del file dwg da aprire (i sta per input).

Se osserviamo l'immagine della finestra del programma mostrata in precedenza si nota l'elencazione dei parametri supportati :

AcCoreConsole.exe [/i <input dwg>] /s <script>[/product <product>] [/l <language>] [/isolate <userid> <userDataFolder>] [/readonly] [/p[rofile] <profile>]

quelli opzionali sono tra parentesi quadre.

/i indica il file dwg da aprire;

/s il nome del file script da eseguire;

/product il nome del prodotto verticale di AutoCAD da eseguire, nel caso ci sia;

/isolate non salva le modifiche alla variabili di sistema impostate dallo script;

/readonly apre idisegni in sola lettura;

/p il nome del profilo personalizzato da utilizzare;

/l carica una lingua - eventalmente installata - diversa dall'originale.

Tanti parametri ma, in definitiva, i più importanti sono 2: 

  1. /i 
  2. /s

quindi nel nostro file batch una sintassi completa potrebbe essere:

FOR %%f in (c:\bak\lavori\dwg\*.dwg) DO c:\"program files"\"AutoCAD 2020"\accoreconsole.exe /i %%f /s c:\script\ins_blk.scr

Il /s indica il nome di un file script che Accoreconsole deve eseguire nel disegno che apre.

Attenzione alle virgolette quando nel percorso ci sono degli spazi! Chi volesse approfondire la sintassi dei comandi del sistema  operativo Windows può consultare questa pagina dedicata ai window-commands.

Un esempio pratico

Immaginiamo di dover creare dai nostri disegni delle versioni in formato DXF che non abbiano il cartiglio (rappresentato dal blocco "Cartiglio") ed abbiano tutti gli oggetti sul layer 0.
Inoltre il nome del file DXF deve essere lo stesso del DWG ma con il suffisso "-2020".
Per prima cosa creiamo lo Script.

Creeremo uno Script contenente comandi CAD e codice LISP.
Utilizziamo i comandi in lingua inglese preceduti da "_" così sono riconoscibili qualunque sia la lingua dell'AutoCAD utilizzato.

Nel primo rigo , tramite un po' di codice LISP, selezioniamo il blocco "cartiglio" e lo cancelliamo.

(command "_erase" (ssget "x" '((2 . "cartiglio"))) "")

Successivamente eseguiamo uno Zoom estensione
_ZOOM
_e

Poi tramite il comando Cambia (Change) spostiamo tutti gli oggetti sul layer "0"
_CHANGE
_all

_p
_layer
0

Un Elimina (Purge) occorre per eliminare la definizione del blocco Cartiglio precedentemente cancellato.
Occorre usare la versione senza finestra di dialogo e per farlo bisogna richiamare -Elimina (-Purge)
_-PURGE
_all
*
_n

Infine l'esportazione in DXF. Il LISP ci aiuta a comporre il nome del file con il suffisso "-2020".
_DXFOUT
(STRCAT(GETVAR"DWGPREFIX")(vl-filename-base(GETVAR"DWGNAME"))"-2020.DXF")
16

Per chiuder il disegno senza salvarlo:
_CLOSE
_yes

Riassumendo questo è il contenuto del file script:
(command "_erase" (ssget "x" '((2 . "cartiglio"))) "")
_ZOOM
_e
CHANGE
_all

_p
_layer
0

_-PURGE
_all
*
_n
_DXFOUT
(STRCAT(GETVAR"DWGPREFIX")(vl-filename-base(GETVAR"DWGNAME"))"-2020.DXF")
16
_CLOSE
_yes


Per sicurezza è bene testare lo Script in un file singolo tramite il comando Script. In questa maniera ci si assicura che lo script funzioni correttamente.

Il secondo step è quello di creare il file .bat per iterare l'azione di Accoreconsole sui file DWG presenti in una cartella, ma questo lo abbiamo già visto prima:
FOR %%f in (c:\bak\lavori\dwg\*.dwg) DO c:\"program files"\"AutoCAD 2020"\accoreconsole.exe /i %%f /s c:\creadxf.scr

Per maggiore chiarezza potete consultare i 2 file di esempio da questi link:
  1. file script : creadxf.scr
  2. file batch : avvia-acc.bat
Quando si è certi che la procedura funziona si può inibire la visione della serie di messaggi che il programma emette reindirizzando l'output in NUL (sono comandi batch del DOS) velocizzando l'esecuzione:

FOR %%f in (c:\bak\lavori\dwg\*.dwg) DO c:\"program files"\"AutoCAD 2020"\accoreconsole.exe /i %%f /s c:\creadxf.scr > NUL

Nel video seguente la simulazione di questo processo di trasformazione eseguito grazie a Accoreconsole.



Nessun commento:

Posta un commento