Tovább a tartalomhoz

Parancssori eszközök szkriptjei

A szkriptek felhasználhatók olyan parancssori eszközök létrehozására, amelyek kihasználják a QCAD funkcióit. Egy ilyen szkript például generálhat egy rajzot paraméterek alapján, konvertálhat egy rajzot vagy elemezhet egy rajzot.

Egy parancssori eszköz szkriptjének alapvető szerkezete például az alábbiak szerint nézhet ki. Ez egyben egy teljesen működőképes példaszkript is, amely parancssori eszközként használható arra, hogy egy adott rajzhoz hozzáadjon egy vonalat 0,0-tól 100,100-ig, és a rajzot új fájlnév alatt exportálja:

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();
}

Parancssori eszközök szkriptjeinek futtatása

Szekció neve “Parancssori eszközök szkriptjeinek futtatása”

Tegyük fel, hogy ez a szkript a scripts/Tools/ExTool/ExTool.js néven van elmentve.

Ezután a következőképpen futtatható:

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

Ha a szkript egy webszolgáltatás részeként fut, ügyeljen arra, hogy a -no-gui és az -allow-multiple-instances kapcsolókat is átadja, hogy jelezze a QCAD-nak, hogy nincs elérhető grafikus felület, és több példány is futtatható párhuzamosan:

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

Egy szerveren általában a -platform offscreen kapcsolót is átadná a fej nélküli (headless) futtatáshoz (azaz X11 szerver nélkül Linuxon):

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