Skripty nástrojů příkazového řádku
Úvod
Sekce “Úvod”Skripty lze použít k vytváření nástrojů příkazového řádku, které využívají funkce QCAD. Takový skript může například generovat výkres na základě parametrů, převádět výkres nebo analyzovat výkres.
Příklad
Sekce “Příklad”Základní struktura skriptu nástroje příkazového řádku může vypadat například tak, jak je znázorněno níže. Toto je také plně funkční ukázkový skript, který lze použít jako nástroj příkazového řádku k přidání čáry z 0,0 do 100,100 do daného výkresu a exportu tohoto výkresu pod novým názvem souboru:
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; }
// vytvoření nového dokumentu (mimo obrazovku): var doc = new RDocument(new RMemoryStorage(), new RSpatialIndexNavel()); var di = new RDocumentInterface(doc);
// import daného souboru: if (di.importFile(inFile) != RDocumentInterface.IoErrorNoError) { di.destroy(); print("Cannot import file:", inFile); return; }
// přidání čáry do výkresu (pomocí QCAD Simple API): startTransaction(di); addLine(0, 0, 100, 100); endTransaction();
// export do daného souboru (-o) if (!di.exportFile(outFile)) { di.destroy(); print("Cannot export file:", outFile); return; }
di.destroy();}
if (typeof(including) == 'undefined' || including === false) { main();}Spouštění skriptů nástrojů příkazového řádku
Sekce “Spouštění skriptů nástrojů příkazového řádku”Předpokládejme, že tento skript je uložen pod scripts/Tools/ExTool/ExTool.js.
Poté jej lze spustit následovně:
qcad -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfPokud je skript spuštěn jako součást webové služby, nezapomeňte předat také přepínače -no-gui a -allow-multiple-instances, abyste QCAD sdělili, že není k dispozici žádné GUI a že lze paralelně spustit více instancí:
qcad -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfNa serveru byste obvykle předali také -platform offscreen pro běh bez obrazovky (tj. bez X11 serveru v systému Linux):
qcad -platform offscreen -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf