Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Moderator: andrew
Forum rules
Always indicate your operating system and QCAD version.
Attach drawing files and screenshots.
Post one question per topic.
Always indicate your operating system and QCAD version.
Attach drawing files and screenshots.
Post one question per topic.
Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Tenho procurado bastante pela internet e não encontrei como construir um código, inclusive usando a função include, caso seja necessário, para construir linhas e ou arcos, por exemplo, sem o uso do arquivo "simple.js", pois sei que ele é bastante util, mas tem alguns tipos de arcos, que não consigo fazer com ele, logo preciso de um outro tipo de função. Sou iniciante no forum, então desculpem-me se postei este pedido de ajuda em local errado. Tem alguns conhecimentos de CAD, digo inclusive que tenho meu projeto todo feito através de um arquivo source, utilizado no "DRAFTSIGHT", mas quero achar a mesma solução utilizando o QCAD, mas ele não entende a linguagem utilizada no "DRAFTSIGHT", então preciso reescrever tudo utilizando ecmascript que é a linguagem aceita pelo QCAD.
Agradeço, desde já pela ajuda e iniciativa de todos os mantenedores deste forum.
Agradeço, desde já pela ajuda e iniciativa de todos os mantenedores deste forum.
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Para adicionar um arco, você pode usar:
Onde "di" é o seu RDocumentInterface.
Code: Select all
var e = new RArcEntity(document, new RArcData(center, radius, angle1, angle2, reversed));
var op = new RAddObjectOperation(e, "Adding an arc");
di.applyOperation(op);
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Primeiramente, muito obrigado pelo apoio e pronta resposta a questão colocada.
Ja começo a ver uma luz aqui pra essas questões.
Porem recebi a seguinte resposta quando adicionei a linha "var e = new RArcEntity(document, new RArcData([0,0], 20,0,30, reversed));" ao prompt de comando:
ReferenceError: Can't find variable: document
Pode me ajudar com a solução?
Ja começo a ver uma luz aqui pra essas questões.
Porem recebi a seguinte resposta quando adicionei a linha "var e = new RArcEntity(document, new RArcData([0,0], 20,0,30, reversed));" ao prompt de comando:
ReferenceError: Can't find variable: document
Pode me ajudar com a solução?
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Por favor, forneça mais contexto. Que tipo de script você está escrevendo? Am ferramenta interativa com um menu / botão de ferramenta? Uma ferramenta de linha de comando? Você está experimentando com o console de script do QCAD?
Você também pode encontrar muitos exemplos de scripts em:
https://github.com/qcad/qcad/tree/maste ... c/Examples
E olhe realmente para todos os scripts existentes do QCAD:
https://github.com/qcad/qcad/tree/master/scripts
Você também pode encontrar muitos exemplos de scripts em:
https://github.com/qcad/qcad/tree/maste ... c/Examples
E olhe realmente para todos os scripts existentes do QCAD:
https://github.com/qcad/qcad/tree/master/scripts
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Estou experimentando com o console de script shell do QCAD...ai apareceu o erro que citei na minha ultima postagem...
- Attachments
-
- parte da tela do qcad
- 1.png (49.55 KiB) Viewed 12024 times
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Na consola de script:
Os ângulos estão em rad. Os vetores são dados como objetos RVector.
Code: Select all
var doc = getDocument();
var di = getDocumentInterface();
var e = new RArcEntity(doc, new RArcData(new RVector(0,0), 20, 0,RMath.deg2rad(30), false));
var op = new RAddObjectOperation(e, "Adding an arc");
di.applyOperation(op);
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Obrigado pela ajuda, referente a construção de linhas e arcos. Essa ultima postagem do andrew funcionou perfeitamente e já me deu condições de avançar um pouco no projeto.
Como ainda estou iniciando em Ecmascript tenho muita dificuldade para criar exemplos funcionais para outras ações a partir dos exemplos genéricos que são oferecidos. Devo iniciar um outro tópico para conseguir ir vencendo estes obstáculos e executar via código a seleção de todos objetos, a movimentação ou rotação de todos ou alguns objetos e por ai vai.
Mas quero expressar meus profundos agradecimentos a equipe que mantem o forum e em especial ao Andrew.
Como ainda estou iniciando em Ecmascript tenho muita dificuldade para criar exemplos funcionais para outras ações a partir dos exemplos genéricos que são oferecidos. Devo iniciar um outro tópico para conseguir ir vencendo estes obstáculos e executar via código a seleção de todos objetos, a movimentação ou rotação de todos ou alguns objetos e por ai vai.
Mas quero expressar meus profundos agradecimentos a equipe que mantem o forum e em especial ao Andrew.
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Prezados, preciso de ajuda.
Quando executo estas linhas abaixo para criar um arco a partir de dois pontos e um raio:
var doc = getDocument();
var di = getDocumentInterface();
var operation = new RAddObjectsOperation();
include('/opt/qcad/scripts/Draw/Arc/Arc2PR/Arc2PR.js');
var obj = {};
obj.point1 = new RVector(50,50);
obj.point2 = new RVector(75,100);
obj.radius = 50;
obj.reversed = false; // true for clockwise
obj.alternativeSolution = false; // true for longer of the two possible arcs
var arc = Arc2PR.prototype.getArc2PR.call(obj, false);
operation.addObject(arc);
operation.apply(doc);
Recebo a msg abaixo:
Script exception in script '/home/ailton/Área de Trabalho/teste.js':
Error: :-1:-1: RAddObjectsOperation: Argument 0 is not of type RObject .
<native>(RArc(RShape(address: "0x5560400"), center: RVector(25.419, 93.5405, 0, true),
radius: 50, startAngle: 299.447, endAngle: 7.42279, startPoint: RVector(50, 50, 0, true),
endPoint: RVector(75, 100, 0, true), sweep: 1.1864, reversed: false))
at -1 anonymous() at 12 <anonymous>() at scripts/Misc/MiscDevelopment/RunScript/RunScript.js:120
<eval>() at 1 <native>() at -1 main() at scripts/autostart.js:821
<global>() at scripts/autostart.js:834
Como posso criar um arco do ponto (50,50) ao ponto (75,100), com raio 50?
É possivel fazê-lo, também usando simple.js? Pode dar um exemplo completo?
Quando executo estas linhas abaixo para criar um arco a partir de dois pontos e um raio:
var doc = getDocument();
var di = getDocumentInterface();
var operation = new RAddObjectsOperation();
include('/opt/qcad/scripts/Draw/Arc/Arc2PR/Arc2PR.js');
var obj = {};
obj.point1 = new RVector(50,50);
obj.point2 = new RVector(75,100);
obj.radius = 50;
obj.reversed = false; // true for clockwise
obj.alternativeSolution = false; // true for longer of the two possible arcs
var arc = Arc2PR.prototype.getArc2PR.call(obj, false);
operation.addObject(arc);
operation.apply(doc);
Recebo a msg abaixo:
Script exception in script '/home/ailton/Área de Trabalho/teste.js':
Error: :-1:-1: RAddObjectsOperation: Argument 0 is not of type RObject .
<native>(RArc(RShape(address: "0x5560400"), center: RVector(25.419, 93.5405, 0, true),
radius: 50, startAngle: 299.447, endAngle: 7.42279, startPoint: RVector(50, 50, 0, true),
endPoint: RVector(75, 100, 0, true), sweep: 1.1864, reversed: false))
at -1 anonymous() at 12 <anonymous>() at scripts/Misc/MiscDevelopment/RunScript/RunScript.js:120
<eval>() at 1 <native>() at -1 main() at scripts/autostart.js:821
<global>() at scripts/autostart.js:834
Como posso criar um arco do ponto (50,50) ao ponto (75,100), com raio 50?
É possivel fazê-lo, também usando simple.js? Pode dar um exemplo completo?
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Arc2PR.prototype.getArc2PR returns a shape (RArc).
Try this:
var doc = getDocument();
var di = getDocumentInterface();
var operation = new RAddObjectsOperation();
include('scripts/Draw/Arc/Arc2PR/Arc2PR.js');
var obj = {};
obj.point1 = new RVector(50,50);
obj.point2 = new RVector(75,100);
obj.radius = 50;
obj.reversed = false; // true for clockwise
obj.alternativeSolution = false; // true for longer of the two possible arcs
var arc = Arc2PR.prototype.getArc2PR.call(obj, false);
var e = new RArcEntity(doc, new RArcData(arc));
operation.addObject(e);
operation.apply(doc);
Try this:
var doc = getDocument();
var di = getDocumentInterface();
var operation = new RAddObjectsOperation();
include('scripts/Draw/Arc/Arc2PR/Arc2PR.js');
var obj = {};
obj.point1 = new RVector(50,50);
obj.point2 = new RVector(75,100);
obj.radius = 50;
obj.reversed = false; // true for clockwise
obj.alternativeSolution = false; // true for longer of the two possible arcs
var arc = Arc2PR.prototype.getArc2PR.call(obj, false);
var e = new RArcEntity(doc, new RArcData(arc));
operation.addObject(e);
operation.apply(doc);
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Ao executar as linhas acima, o programa não retornou nenhum erro, porém não "printou" na tela a curva desejada. Veja a figura:
- Attachments
-
- fig1.png (172.67 KiB) Viewed 11647 times
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
The display does not refresh if you apply to the document (a document has no knowledge of attached views).
Let the document interface apply the operation instead. It will update the view(s) attached to it:
This is instead of
Let the document interface apply the operation instead. It will update the view(s) attached to it:
Code: Select all
di.applyOperation(operation);
Code: Select all
operation.apply(doc);
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Maravilha...funciona otimo.
Agora, tentei seguir o exemplo de Arco com 2 pontos e raio, só que para um arco com 3 pontos e deu o problema como segue na figura. Poderia me dar um help?
Agora, tentei seguir o exemplo de Arco com 2 pontos e raio, só que para um arco com 3 pontos e deu o problema como segue na figura. Poderia me dar um help?
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
Eis a figura:
- Attachments
-
- 3pFalha.png (139.42 KiB) Viewed 11585 times
Re: Criar linhas ou arcos via ecmascrits, sem o uso do "simple.js"
I would call that as:
var newArc = ShapeAlgorithms.createArcFrom3Points( RVector1, RVector2, RVector3);
a function in ShapeAlgorithms.js
That returns an Rarc one still has to parse to the document in any way.
Arc3P.js is the method that runs if we use:
Menu/Draw/Arc/3 points (A3) and then start pointing where we want it.
I think calling a function is done without the .prototype.
Regards,
CVH
var newArc = ShapeAlgorithms.createArcFrom3Points( RVector1, RVector2, RVector3);
a function in ShapeAlgorithms.js
That returns an Rarc one still has to parse to the document in any way.
Arc3P.js is the method that runs if we use:
Menu/Draw/Arc/3 points (A3) and then start pointing where we want it.
I think calling a function is done without the .prototype.
Regards,
CVH