Skripty pre nástroje príkazového riadka
Skripty možno použiť na vytváranie nástrojov príkazového riadka, ktoré využívajú funkcie QCAD. Takýto skript môže napríklad vygenerovať výkres na základe parametrov, previesť výkres alebo výkres analyzovať.
Príklad
Section titled “Príklad”Základná štruktúra skriptu nástroja príkazového riadka môže vyzerať napríklad tak, ako je znázornené nižšie. Toto je zároveň plne funkčný ukážkový skript, ktorý možno použiť ako nástroj príkazového riadka na pridanie čiary z 0,0 do 100,100 do daného výkresu a exportovanie tohto výkresu pod novým názvom súboru:
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; }
// create new document (off screen): var doc = new RDocument(new RMemoryStorage(), new RSpatialIndexNavel()); var di = new RDocumentInterface(doc);
// import given file: if (di.importFile(inFile) != RDocumentInterface.IoErrorNoError) { di.destroy(); print("Cannot import file:", inFile); return; }
// add line to drawing (using QCAD Simple API): startTransaction(di); addLine(0, 0, 100, 100); endTransaction();
// export to given file (-o) if (!di.exportFile(outFile)) { di.destroy(); print("Cannot export file:", outFile); return; }
di.destroy();}
if (typeof(including) == 'undefined' || including === false) { main();}Spúšťanie skriptov nástrojov príkazového riadka
Section titled “Spúšťanie skriptov nástrojov príkazového riadka”Predpokladajme, že tento skript je uložený pod scripts/Tools/ExTool/ExTool.js.
Potom ho možno spustiť takto:
qcad -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfAk sa skript spúšťa ako súčasť webovej služby, nezabudnite odovzdať aj prepínače -no-gui a -allow-multiple-instances, aby ste QCAD-u oznámili, že nie je dostupné žiadne grafické rozhranie a že možno paralelne spustiť viacero inštancií:
qcad -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfNa serveri by ste zvyčajne odovzdali aj -platform offscreen na spustenie bez grafického výstupu (t. j. bez servera X11 v systéme Linux):
qcad -platform offscreen -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf