Komandinės eilutės įrankių scenarijai
Įvadas
Section titled “Įvadas”Scenarijus galima naudoti komandinės eilutės įrankiams, kurie išnaudoja QCAD funkcionalumą, kurti. Toks scenarijus gali, pavyzdžiui, generuoti brėžinį pagal parametrus, konvertuoti brėžinį arba analizuoti brėžinį.
Pavyzdys
Section titled “Pavyzdys”Pagrindinė komandinės eilutės įrankio scenarijaus struktūra gali atrodyti, pavyzdžiui, kaip parodyta žemiau. Tai taip pat visiškai veikiantis pavyzdinis scenarijus, kurį galima naudoti kaip komandinės eilutės įrankį linijai nuo 0,0 iki 100,100 pridėti prie nurodyto brėžinio ir tam brėžiniui eksportuoti nauju failo pavadinimu:
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; }
// sukurti naują dokumentą (ne ekrane): var doc = new RDocument(new RMemoryStorage(), new RSpatialIndexNavel()); var di = new RDocumentInterface(doc);
// importuoti nurodytą failą: if (di.importFile(inFile) != RDocumentInterface.IoErrorNoError) { di.destroy(); print("Cannot import file:", inFile); return; }
// pridėti liniją prie brėžinio (naudojant QCAD Simple API): startTransaction(di); addLine(0, 0, 100, 100); endTransaction();
// eksportuoti į nurodytą failą (-o) if (!di.exportFile(outFile)) { di.destroy(); print("Cannot export file:", outFile); return; }
di.destroy();}
if (typeof(including) == 'undefined' || including === false) { main();}Komandinės eilutės įrankių scenarijų paleidimas
Section titled “Komandinės eilutės įrankių scenarijų paleidimas”Tarkime, kad šis scenarijus išsaugotas kaip scripts/Tools/ExTool/ExTool.js.
Tada jį galima paleisti taip:
qcad -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfJei scenarijus paleidžiamas kaip žiniatinklio paslaugos dalis, būtinai perduokite ir jungiklius -no-gui bei -allow-multiple-instances, kad praneštumėte QCAD, jog nėra grafinės sąsajos ir kad galima lygiagrečiai paleisti kelis egzempliorius:
qcad -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfServeryje paprastai taip pat perduotumėte -platform offscreen, kad paleistumėte be ekrano (t. y. be X11 serverio Linux sistemoje):
qcad -platform offscreen -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf