Σενάρια εργαλείων γραμμής εντολών
Εισαγωγή
Ενότητα με τίτλο «Εισαγωγή»Τα σενάρια μπορούν να χρησιμοποιηθούν για τη δημιουργία εργαλείων γραμμής εντολών που αξιοποιούν τη λειτουργικότητα του QCAD. Ένα τέτοιο σενάριο μπορεί για παράδειγμα να δημιουργήσει ένα σχέδιο βάσει παραμέτρων, να μετατρέψει ένα σχέδιο ή να αναλύσει ένα σχέδιο.
Παράδειγμα
Ενότητα με τίτλο «Παράδειγμα»Η βασική δομή ενός σεναρίου εργαλείου γραμμής εντολών μπορεί να μοιάζει για παράδειγμα όπως φαίνεται παρακάτω. Αυτό είναι επίσης ένα πλήρως λειτουργικό παράδειγμα σεναρίου που μπορεί να χρησιμοποιηθεί ως εργαλείο γραμμής εντολών για την προσθήκη μιας γραμμής από 0,0 έως 100,100 σε ένα δοσμένο σχέδιο και την εξαγωγή αυτού του σχεδίου με νέο όνομα αρχείου:
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; }
// δημιουργία νέου εγγράφου (εκτός οθόνης): var doc = new RDocument(new RMemoryStorage(), new RSpatialIndexNavel()); var di = new RDocumentInterface(doc);
// εισαγωγή του δοσμένου αρχείου: if (di.importFile(inFile) != RDocumentInterface.IoErrorNoError) { di.destroy(); print("Cannot import file:", inFile); return; }
// προσθήκη γραμμής στο σχέδιο (με το QCAD Simple API): startTransaction(di); addLine(0, 0, 100, 100); endTransaction();
// εξαγωγή στο δοσμένο αρχείο (-o) if (!di.exportFile(outFile)) { di.destroy(); print("Cannot export file:", outFile); return; }
di.destroy();}
if (typeof(including) == 'undefined' || including === false) { main();}Εκτέλεση σεναρίων εργαλείων γραμμής εντολών
Ενότητα με τίτλο «Εκτέλεση σεναρίων εργαλείων γραμμής εντολών»Ας υποθέσουμε ότι αυτό το σενάριο είναι αποθηκευμένο στο scripts/Tools/ExTool/ExTool.js.
Μπορεί στη συνέχεια να εκτελεστεί ως εξής:
qcad -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfΕάν το σενάριο εκτελείται ως μέρος μιας διαδικτυακής υπηρεσίας, φροντίστε να περάσετε επίσης τους διακόπτες -no-gui και -allow-multiple-instances για να ενημερώσετε το QCAD ότι δεν υπάρχει διαθέσιμο GUI και ότι μπορούν να εκτελεστούν πολλά στιγμιότυπα παράλληλα:
qcad -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfΣε έναν διακομιστή θα περνούσατε συνήθως και το -platform offscreen για εκτέλεση χωρίς οθόνη (δηλαδή χωρίς διακομιστή X11 σε Linux):
qcad -platform offscreen -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf