Skip to content

Skripte za alate naredbenog retka

Skripte se mogu koristiti za stvaranje alata naredbenog retka koji koriste QCAD funkcionalnost. Takva skripta mogla bi, primjerice, generirati crtež na temelju parametara, pretvoriti crtež ili analizirati crtež.

Osnovna struktura skripte za alat naredbenog retka može izgledati, primjerice, kako je prikazano u nastavku. Ovo je ujedno i potpuno funkcionalna primjerna skripta koja se može koristiti kao alat naredbenog retka za dodavanje linije od 0,0 do 100,100 u zadani crtež i izvoz tog crteža pod novim imenom datoteke:

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

Pokretanje skripti za alate naredbenog retka

Section titled “Pokretanje skripti za alate naredbenog retka”

Pretpostavimo da je ova skripta spremljena pod scripts/Tools/ExTool/ExTool.js.

Tada se može pokrenuti na sljedeći način:

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

Ako se skripta pokreće kao dio web-usluge, obavezno proslijedite i prekidače -no-gui i -allow-multiple-instances kako biste QCAD-u dali do znanja da nije dostupno grafičko sučelje i da se više instanci može pokrenuti usporedno:

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

Na poslužitelju biste obično proslijedili i -platform offscreen za rad bez zaslona (tj. bez X11 poslužitelja na Linuxu):

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