Ir al contenido

Scripts de herramientas de línea de comandos

Los scripts se pueden usar para crear herramientas de línea de comandos que aprovechan la funcionalidad de QCAD. Un script de este tipo podría, por ejemplo, generar un dibujo a partir de parámetros, convertir un dibujo o analizar un dibujo.

La estructura básica de un script de herramienta de línea de comandos puede tener, por ejemplo, el aspecto que se muestra a continuación. Este es además un script de ejemplo totalmente funcional que se puede usar como herramienta de línea de comandos para añadir una línea de 0,0 a 100,100 a un dibujo dado y exportar ese dibujo con un nuevo nombre de archivo:

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;
}
// crear un nuevo documento (fuera de pantalla):
var doc = new RDocument(new RMemoryStorage(), new RSpatialIndexNavel());
var di = new RDocumentInterface(doc);
// importar el archivo dado:
if (di.importFile(inFile) != RDocumentInterface.IoErrorNoError) {
di.destroy();
print("Cannot import file:", inFile);
return;
}
// añadir una línea al dibujo (con la QCAD Simple API):
startTransaction(di);
addLine(0, 0, 100, 100);
endTransaction();
// exportar al archivo dado (-o)
if (!di.exportFile(outFile)) {
di.destroy();
print("Cannot export file:", outFile);
return;
}
di.destroy();
}
if (typeof(including) == 'undefined' || including === false) {
main();
}

Ejecutar scripts de herramientas de línea de comandos

Sección titulada «Ejecutar scripts de herramientas de línea de comandos»

Supongamos que este script está guardado en scripts/Tools/ExTool/ExTool.js.

Entonces se puede ejecutar de la siguiente manera:

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

Si el script se ejecuta como parte de un servicio web, asegúrese de pasar también los conmutadores -no-gui y -allow-multiple-instances para indicar a QCAD que no hay interfaz gráfica disponible y que se pueden ejecutar varias instancias en paralelo:

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

En un servidor, normalmente también pasaría -platform offscreen para ejecutar sin pantalla (headless) (es decir, sin servidor X11 en Linux):

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