Komut Satırı Aracı Betikleri
Betikler, QCAD işlevselliğinden yararlanan komut satırı araçları oluşturmak için kullanılabilir. Böyle bir betik örneğin parametrelere göre bir çizim oluşturabilir, bir çizimi dönüştürebilir veya bir çizimi analiz edebilir.
Bir komut satırı aracı betiğinin temel yapısı örneğin aşağıda gösterildiği gibi olabilir. Bu aynı zamanda, belirli bir çizime 0,0’dan 100,100’e bir çizgi eklemek ve bu çizimi yeni bir dosya adı altında dışa aktarmak için komut satırı aracı olarak kullanılabilecek, tam işlevsel bir örnek betiktir:
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();}Komut Satırı Aracı Betiklerini Çalıştırma
Section titled “Komut Satırı Aracı Betiklerini Çalıştırma”Bu betiğin scripts/Tools/ExTool/ExTool.js altında kaydedildiğini varsayalım.
Bu durumda şu şekilde çalıştırılabilir:
qcad -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfBetik bir web hizmetinin parçası olarak çalıştırılıyorsa, QCAD’e hiçbir GUI’nin bulunmadığını ve birden fazla örneğin paralel çalıştırılabileceğini bildirmek için -no-gui ve -allow-multiple-instances anahtarlarını da iletmeye dikkat edin:
qcad -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfBir sunucuda, ekransız (headless) çalıştırmak için (yani Linux’ta bir X11 sunucusu olmadan) genellikle -platform offscreen da iletirsiniz:
qcad -platform offscreen -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf