Scripts til kommandolinjeværktøjer
Introduktion
Sektion kaldt “Introduktion”Scripts kan bruges til at oprette kommandolinjeværktøjer, der udnytter QCAD-funktionalitet. Et sådant script kan for eksempel generere en tegning baseret på parametre, konvertere en tegning eller analysere en tegning.
Eksempel
Sektion kaldt “Eksempel”Den grundlæggende struktur af et script til et kommandolinjeværktøj kan for eksempel se ud som vist nedenfor. Dette er også et fuldt funktionelt eksempelscript, der kan bruges som kommandolinjeværktøj til at tilføje en linje fra 0,0 til 100,100 til en given tegning og eksportere den tegning under et nyt filnavn:
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; }
// opret nyt dokument (uden skærm): var doc = new RDocument(new RMemoryStorage(), new RSpatialIndexNavel()); var di = new RDocumentInterface(doc);
// importer den givne fil: if (di.importFile(inFile) != RDocumentInterface.IoErrorNoError) { di.destroy(); print("Cannot import file:", inFile); return; }
// tilføj linje til tegningen (med QCAD Simple API): startTransaction(di); addLine(0, 0, 100, 100); endTransaction();
// eksporter til den givne fil (-o) if (!di.exportFile(outFile)) { di.destroy(); print("Cannot export file:", outFile); return; }
di.destroy();}
if (typeof(including) == 'undefined' || including === false) { main();}Kørsel af scripts til kommandolinjeværktøjer
Sektion kaldt “Kørsel af scripts til kommandolinjeværktøjer”Lad os antage, at dette script er gemt under scripts/Tools/ExTool/ExTool.js.
Det kan derefter køres som følger:
qcad -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfHvis scriptet køres som en del af en webtjeneste, skal du også sørge for at sende switchene -no-gui og -allow-multiple-instances for at fortælle QCAD, at der ikke er nogen GUI tilgængelig, og at der kan køres flere instanser parallelt:
qcad -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfPå en server ville du typisk også sende -platform offscreen for at køre uden skærm (dvs. uden en X11-server på Linux):
qcad -platform offscreen -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf