Script di strumenti da riga di comando
Introduzione
Sezione intitolata “Introduzione”Gli script possono essere usati per creare strumenti da riga di comando che sfruttano le funzionalità di QCAD. Uno script di questo tipo potrebbe ad esempio generare un disegno in base a parametri, convertire un disegno o analizzare un disegno.
Esempio
Sezione intitolata “Esempio”La struttura di base di uno script di strumento da riga di comando può ad esempio avere l’aspetto mostrato di seguito. Si tratta anche di uno script di esempio pienamente funzionante che può essere usato come strumento da riga di comando per aggiungere una linea da 0,0 a 100,100 a un disegno dato ed esportare tale disegno con un nuovo nome di file:
include("scripts/simple.js");include("scripts/Tools/arguments.js");
function printHelp() { print("Usage: " + args[1] + " [OPTION]... <drawing file>"); print(); print("This tool does..."); print(); print(" -f, -force Overwrite existing output file"); print(" -h, -help Display this help"); print(" -o, -outfile=FILE Set output file to FILE"); print(" -p, -parameter Some parameter..."); print(" ..."); printGenericUsage(); print();}
function main() { if (testArgument(args, "-h", "-help")) { printHelp(); return; }
if (args.length < 3) { print("No input file given. Try -h for help."); return; }
var inFile = args[args.length - 1]; if (inFile.indexOf("-") === 0) { print("No input file. Try -h for help."); return; }
var fi = new QFileInfo(inFile); if (!fi.isAbsolute()) { inFile = RSettings.getLaunchPath() + QDir.separator + inFile; fi = new QFileInfo(inFile); }
var outFile = getArgument(args, "-o", "-outfile"); if (outFile !== undefined) { outFile = getAbsolutePathForArg(outFile); } else { print("No output file. Try -h for help."); }
if (new QFileInfo(outFile).exists() && !testArgument(args, "-f", "-force")) { print("Output file exists already, not overwriting: ", outFile); print("Use -f to force overwrite"); return; }
// crea un nuovo documento (fuori schermo): var doc = new RDocument(new RMemoryStorage(), new RSpatialIndexNavel()); var di = new RDocumentInterface(doc);
// importa il file dato: if (di.importFile(inFile) != RDocumentInterface.IoErrorNoError) { di.destroy(); print("Cannot import file:", inFile); return; }
// aggiungi una linea al disegno (con la QCAD Simple API): startTransaction(di); addLine(0, 0, 100, 100); endTransaction();
// esporta nel file dato (-o) if (!di.exportFile(outFile)) { di.destroy(); print("Cannot export file:", outFile); return; }
di.destroy();}
if (typeof(including) == 'undefined' || including === false) { main();}Eseguire script di strumenti da riga di comando
Sezione intitolata “Eseguire script di strumenti da riga di comando”Supponiamo che questo script sia salvato in scripts/Tools/ExTool/ExTool.js.
Può quindi essere eseguito come segue:
qcad -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfSe lo script viene eseguito come parte di un servizio web, assicurarsi di passare anche gli switch -no-gui e -allow-multiple-instances per indicare a QCAD che non è disponibile alcuna interfaccia grafica e che è possibile eseguire più istanze in parallelo:
qcad -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfSu un server, di solito si passerebbe anche -platform offscreen per un’esecuzione senza schermo (headless) (ossia senza server X11 su Linux):
qcad -platform offscreen -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf