Komentorivityökalujen skriptit
Johdanto
Section titled “Johdanto”Skripteillä voidaan luoda komentorivityökaluja, jotka hyödyntävät QCADin toimintoja. Tällainen skripti voi esimerkiksi luoda piirustuksen parametrien pohjalta, muuntaa piirustuksen tai analysoida piirustusta.
Esimerkki
Section titled “Esimerkki”Komentorivityökaluskriptin perusrakenne voi näyttää esimerkiksi alla olevalta. Tämä on myös täysin toimiva esimerkkiskripti, jota voidaan käyttää komentorivityökaluna lisäämään viiva pisteestä 0,0 pisteeseen 100,100 annettuun piirustukseen ja viemään kyseinen piirustus uudella tiedostonimellä:
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();}Komentorivityökaluskriptien ajaminen
Section titled “Komentorivityökaluskriptien ajaminen”Oletetaan, että tämä skripti on tallennettu sijaintiin scripts/Tools/ExTool/ExTool.js.
Se voidaan sitten ajaa seuraavasti:
qcad -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfJos skripti ajetaan osana verkkopalvelua, muista välittää myös valitsimet -no-gui ja -allow-multiple-instances kertoaksesi QCADille, ettei graafista käyttöliittymää ole käytettävissä ja että useita instansseja voidaan ajaa rinnakkain:
qcad -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfPalvelimella välittäisit tyypillisesti myös valitsimen -platform offscreen ajaaksesi ilman näyttöä (eli ilman X11-palvelinta Linuxissa):
qcad -platform offscreen -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf