Uno script per lanciare molti script

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
Un software esterno mi crea una serie di file Script che, una volta lanciati, generano un disegno.

Sostanzialmente ho una cartella contenente i file:
P01.scr
P02.scr
P03.scr
...

e vorrei lanciarli in sequenza, per poi salvarli come:
P01.dwg
P02.dwg
P03.dwg
...

Ho provato con "ScriptWriter.lsp" di Lee Mac, ma non riesco a fargli gestire gli Script ma solo dei DWG.

Qualcuno del Forum ha una soluzione?
 

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
Mi rispondo da solo ... anche se utilizzo un sistema un po' strano: uso un file BATCH esterno.

Creo un file di testo (con blocco note), ma gli metto estensione BAT anzichè TXT. Il BAT verrà eseguto dal prompt di DOS.

Nel file metto il seguente comando:

for %%f in (*.scr) do "C:\Program Files\Autodesk\AutoCAD 2019 - Italiano\acad.exe" /nologo /b %%f

Sostanzialmente faccio scorrere tutti i file SCR della cartella corrente e per ogniuno gli faccio aprire Autocad eseguire lo script (con l'opzione /b).
/nologo serve per velocizzare un po' l'apertura e non visualizzare il logo Autocad.

Ai file script (i precedentemente citati P01.scr P02.scr ecc) vanno aggiunte un paio di righe cioè:

_saveas
<-- Questa riga vuota serve come INVIO
P01
_quit

Questa cosa la si può fare manualmente o sempre con un bat, facendo un TYPE (per concatenare al fondo quello che mi serve) e FOR ... DO ... ecc
(ma ci stò ancora lavorando).

Concludendo:
questa non è una soluzione "definitiva" poichè per ogni Script viene:
- Aperto Autocad
- Eseguito lo script
- Fatto il salvataggio
- Chiuso Autocad

... insomma ci vuole un sacco di tempo; ma lo si può lanciare in pausa pranzo!

Se qualcuno ha una soluzione migliore, lo ringrazio anticipatamente!
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
Creati i file vuoti P01.dwg, P02.dwg, etc.
rinomina i file P01.scr in scrP01.scr, etc.
dwg e scr devono stare nella stessa directory.
usa il file ScriptConPreview.xlsm usando lo script "SCRIPT"
il software apre il dwg P01, lancia lo script scrP01, salva e chiude il file, passa al P02 etc..

n.b.: lo script è composto dal solo testo "FILE.SCR" che viene trasformato in:
ammettendo che il file dwg sia in c:\lisp
(command "_script" "c:/lisp/scrP01.scr")
 

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
Grazie Rpor .... ma non è possibile utilizzare dei dwg vuoti, poichè gli script creano ogni volta un nuovo dwg (partendo da un particolare dwt).
Insomma, per non dover "riscrivere" lo script, mi conviene aggiungerci al massimo delle cose al fondo.
Ho visto che comunque è possibile lanciare un nuovo scripts dallo script precedente, quindi l'aggiunta consisterebbe nell'attaccarci il lancio dello script successivo; questo mi consente di non dover uscire e rientrare in Autocad ma "concatenare" semplicemente gli script.
Stò meditando a tal proposito di fare un lisp... o fare un exe con QB64 in modo che l'operazione di concatenamento sia fruibile anche con Autocad LT.
Condividerò con il forum i risutati.
Grazie mille!
 

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
Non è stato facile ma ho trovato una soluzione ... in DOS!
Ho creato 2 file BAT da salvare nella cartella che contiene i file SCR da elaborare.
Ho preferito provare ad utilizzare file BAT e non utilizzare Autolisp .... per poter fare il lavoro anche utilizzando Autocad LT.

START.BAT (è un semplice file txt rinominato .bat):

------------------------------------------------------------
@echo off
REM
REM Per ogni file SCR aggiunge comandi di salvataggio e uscita dal file
REM ... e li rinomina mettendoci aaa davanti al nome del file
REM

echo 0 > count.txt

for %%f in (*.scr) do (

echo FILEDIA 0 _saveas %%f FILEDIA 1 _quit > count.txt

type > aaa%%f %%f count.txt
)
------------------------------------------------------------

Quindi viene lanciato il secondo BAT ...

SCRIPT.BAT è ....

------------------------------------------------------------
@echo off
REM
REM Lancia autocad per ogni file (quelli con aaa davanti)
REM ... poi esce e passa al prossimo file
REM
for %%f in (aaa*.scr) do "C:\Program Files\Autodesk\AutoCAD LT 2019\acadlt.exe" /nologo /b /six %%f
echo END
-------------------------------------------------------------

Questi 2 file BAT vanno semplicemente salvati nella cartella in cui ci sono gli script e poi lanciati in sequenza.
Il risultato sono tanti DWG salvati nella stessa cartella.
 

x11start

Utente Standard
Professione: Disegnatore prefabbricati
Software: Autocad
Regione: Piemonte
Ho riunito i 2 script in 1 solo, da lanciare 2 volte.
Il BAT va copiato nella cartella contenente i file da "trattare".

La prima volta che si lancia lo SCRIPT.BAT, vengono creati dei file aaanomescript1.scr, aaanomescript2.scr, aaanomescript3.scr ... ecc.
Praticamente aggiunge al nome degli script "aaa", ma soprattutto aggiunge in coda ad ogni file, i comandi per il salvataggio.

Al secondo lancio segue una serie di: Apertura, salvataggio e chiusura di Autocad. Andate a prendervi un caffè e lasciatelo lavorare per voi!

Ovviamente SCRIPT.BAT va modificato con il percorso corretto dell'eseguibile di Autocad ....nel mio caso:
"C:\Program Files\Autodesk\AutoCAD LT 2019\acadlt.exe"

PS.
Ho dovuto rinominare SCRIPT.BAT in SCRIPT.TXT per poterlo allegare: rinominatelo con l'estensione BAT per utilizzarlo!
 

Allegati