Skip to content

Scripturi pentru instrumente din linia de comandă

Scripturile pot fi utilizate pentru a crea instrumente din linia de comandă care valorifică funcționalitatea QCAD. Un astfel de script poate, de exemplu, să genereze un desen pe baza unor parametri, să convertească un desen sau să analizeze un desen.

Structura de bază a unui script pentru un instrument din linia de comandă poate arăta, de exemplu, așa cum se arată mai jos. Acesta este, de asemenea, un script exemplu complet funcțional care poate fi utilizat ca instrument din linia de comandă pentru a adăuga o linie de la 0,0 la 100,100 la un desen dat și pentru a exporta acel desen sub un nou nume de fișier:

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;
}
// creează un document nou (în afara ecranului):
var doc = new RDocument(new RMemoryStorage(), new RSpatialIndexNavel());
var di = new RDocumentInterface(doc);
// importă fișierul dat:
if (di.importFile(inFile) != RDocumentInterface.IoErrorNoError) {
di.destroy();
print("Cannot import file:", inFile);
return;
}
// adaugă o linie la desen (folosind QCAD Simple API):
startTransaction(di);
addLine(0, 0, 100, 100);
endTransaction();
// exportă în fișierul dat (-o)
if (!di.exportFile(outFile)) {
di.destroy();
print("Cannot export file:", outFile);
return;
}
di.destroy();
}
if (typeof(including) == 'undefined' || including === false) {
main();
}

Rularea scripturilor pentru instrumente din linia de comandă

Section titled “Rularea scripturilor pentru instrumente din linia de comandă”

Să presupunem că acest script este salvat ca scripts/Tools/ExTool/ExTool.js.

Acesta poate fi apoi rulat după cum urmează:

qcad -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf

Dacă scriptul este rulat ca parte a unui serviciu web, asigurați-vă că transmiteți și comutatoarele -no-gui și -allow-multiple-instances pentru a comunica QCAD că nu este disponibilă nicio interfață grafică și că pot fi rulate mai multe instanțe în paralel:

qcad -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf

Pe un server, de obicei ați transmite și -platform offscreen pentru a rula fără ecran (adică fără un server X11 pe Linux):

qcad -platform offscreen -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf