Scripts de ferramentas de linha de comando
Introdução
Seção intitulada “Introdução”Os scripts podem ser usados para criar ferramentas de linha de comando que aproveitam a funcionalidade do QCAD. Um script desse tipo poderia, por exemplo, gerar um desenho com base em parâmetros, converter um desenho ou analisar um desenho.
Exemplo
Seção intitulada “Exemplo”A estrutura básica de um script de ferramenta de linha de comando pode, por exemplo, ter a aparência mostrada abaixo. Este é também um script de exemplo totalmente funcional que pode ser usado como ferramenta de linha de comando para adicionar uma linha de 0,0 a 100,100 a um desenho dado e exportar esse desenho com um novo nome de arquivo:
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; }
// criar um novo documento (fora da tela): var doc = new RDocument(new RMemoryStorage(), new RSpatialIndexNavel()); var di = new RDocumentInterface(doc);
// importar o arquivo dado: if (di.importFile(inFile) != RDocumentInterface.IoErrorNoError) { di.destroy(); print("Cannot import file:", inFile); return; }
// adicionar uma linha ao desenho (com a QCAD Simple API): startTransaction(di); addLine(0, 0, 100, 100); endTransaction();
// exportar para o arquivo dado (-o) if (!di.exportFile(outFile)) { di.destroy(); print("Cannot export file:", outFile); return; }
di.destroy();}
if (typeof(including) == 'undefined' || including === false) { main();}Executar scripts de ferramentas de linha de comando
Seção intitulada “Executar scripts de ferramentas de linha de comando”Vamos supor que este script esteja salvo em scripts/Tools/ExTool/ExTool.js.
Ele pode então ser executado da seguinte forma:
qcad -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfSe o script for executado como parte de um serviço web, certifique-se de passar também os interruptores -no-gui e -allow-multiple-instances para informar ao QCAD que não há interface gráfica disponível e que várias instâncias podem ser executadas em paralelo:
qcad -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxfEm um servidor, você normalmente também passaria -platform offscreen para executar sem tela (headless) (ou seja, sem um servidor X11 no Linux):
qcad -platform offscreen -no-gui -allow-multiple-instances -autostart scripts/Tools/ExTool/ExTool.js -f -o out.dxf in.dxf