7 Replies Latest reply on Sep 28, 2015 8:17 AM by Vinicius Baptista

    Cotas

    beto correa Level 1

      Alguém sabe como fazer cotas na diagonal?

      Untitled-1.jpg

       

      E para fazer todas as cotas ao mesmo tempo?

       

      Abraço a todos!

        • 1. Re: Cotas
          pixxxel schubser Level 5

          Do you mean something like this?

          function get2pointDistance(p1, p2) {  
            return Math.sqrt ((Math.pow (p1[0]-p2[0], 2) + Math.pow (p1[1]-p2[1], 2)));  
          }  
          
          var aDocPP = app.activeDocument.pathItems[0].pathPoints;
          alert(get2pointDistance (aDocPP[0].anchor, aDocPP[1].anchor))  // unit points
          

           

          Draw a line and run the script snippet.

           

          Have fun

           

          • 2. Re: Cotas
            Vinicius Baptista Level 2

            Olá Beto,


            Amigo precisamos ser mais específicos para chegarmos a uma resolução.

             

            Quanto a aplicação das cotas eu tenho uma solução perfeita para você, que aplicará nos lados que você desejar ou em todos os lados, mas esse meu script está com diversas outras coisas que utilizo e que serão desnecessárias à você, então entre hoje e amanhã estarei disponibilizando aqui para você esse script modificado para te atender.

             

            Agora quanto a cota na diagonal não tenho uma sugestão imediata, pensei em utilizar o Teorema de Pitágoras para achar esse valor, (a soma dos quadrados dos catetos é igual a porra da hipotenusa!) "Mamonas Assassinas" kkkkkk, se conseguirmos calcular a hipotenusa do objeto teremos o comprimento dessa diagonal, mas ainda preciso fazer alguns testes para verificar se atenderá a todos os tipos de diagonais, quanto a isso tentarei ir pensando em uma solução por esses dias, a sugestão do nosso amigo Pixxxel funciona, mas terá que ser adaptada para sua necessidade e talvez teremos algumas limitações, pois não sei se ela se aplica apenas a um traço ou a um objeto ao todo, que acredito que seja o seu caso, isso fica aí pra ele esclarecer melhor, acho que você esteja precisando de algo que dê as medidas de um único objeto independente se ele é um traço, uma forma, uma imagem e etc. Confere?

             

            Tenho certeza que o pessoal aqui do fórum poderá te ajudar bastante com isso.

             

            Abraço...

            • 3. Re: Cotas
              beto correa Level 1

              Olá.

              Pra ser mais específico, preciso de todas essas cotas em formas fechadas de três ou mais lados. Aí que tá.
              Muito obrigado pela resposta, amigo.

              • 4. Re: Cotas
                LeoMari Level 2

                Vinícius Baptista, envie o script pra colocar todas as cotas de uma vez.

                 

                Abraço!

                • 5. Re: Cotas
                  Vinicius Baptista Level 2

                  Olá pessoal, enfim desculpem o atraso essa semana foi corrida!

                   

                  Este é o script que citei para aplicação das cotas "automáticas" nos quatro lados, fica como uma sugestão parcial para ajudar nosso amigo beto correa.

                   

                  Vamos pensando juntos em mais formas de turbinar este script. Toda ajuda é sempre bem vinda.

                   

                  #target illustrator
                  #targetengine main
                  
                  
                  /*
                      Script for automatic application of quotas in mm.
                      By: Vinícius Baptista.
                      vbaptistacg@gmail.com
                      version 1.0
                      09/26/2015
                      Collaboration Gustavo Del Vechio
                      www.nucleodoillustrator.com
                     
                      **********************************************************************************************************************
                      If you have some standard color in your documents and want use it, so insert it name as string in var indexCor
                      **********************************************************************************************************************
                  */
                  
                  
                  function runIllustrator(CotasT, CotasR, CotasB, CotasL){
                  
                  
                  if (CotasT == false  && CotasR == false && CotasB == false && CotasL == false){
                      alert("Select some directions.");
                      };
                  
                  
                  var doc = activeDocument;
                  
                  
                  if (app.selection[0] != null) {
                  
                  
                  var indexCor = "f1";
                  
                  
                  var preto = new CMYKColor;
                  preto.cyan = 0;
                  preto.magenta = 0;
                  preto.yellow = 0;
                  preto.black = 100;
                  
                  
                  var changeColor = function(){
                      doc.swatches[indexCor].color;
                      };
                  
                  
                  try{changeColor ()}
                  catch(e){
                      indexCor = "";       
                  };
                  
                  
                  if (app.selection.length > 1){
                      var maior = true;
                      var j = app.selection.length;
                      var grupoCotas = app.activeDocument.groupItems.add();
                      for (i = 0; i<j; i++){
                          app.selection[i].moveToBeginning(grupoCotas);
                          };
                      grupoCotas.selected = !(grupoCotas.selected);   
                      }else{
                          var maior = false;
                      };
                  
                  
                  var selecao = doc.selection;
                  var left = selecao[0].left;
                  var top = selecao[0].top;
                  var width = selecao[0].width;
                  var height = selecao[0].height;
                  
                  
                      var b = false;
                      var Fonte = "Arial-BoldMT";
                  for (i = 0; b == false; i++){ 
                       var nameFonte = app.textFonts[i].name;
                       if (nameFonte == Fonte){
                           b=true;
                           var num = i;
                           };
                  };       
                  
                  
                  if (CotasT){
                  
                  
                          var GrupoT = app.activeDocument.groupItems.add();
                          var Linhas = GrupoT.pathItems.add();
                          Linhas.stroked = true;
                          if (indexCor == ""){
                          Linhas.strokeColor = preto;
                          }else{
                          Linhas.strokeColor = doc.swatches[indexCor].color;
                          };
                          Linhas.strokeWidth = 0.85;
                          Linhas.setEntirePath ( Array( Array(left, top+7.164), Array(left+width, top+7.164) ) );
                          Linhas.left = left + 0.425;
                  
                  
                          var LinhasLT = GrupoT.pathItems.add();
                          LinhasLT.stroked = true;
                          if (indexCor == ""){
                          LinhasLT.strokeColor = preto;
                          }else{
                          LinhasLT.strokeColor = doc.swatches[indexCor].color;
                          };
                          LinhasLT.strokeWidth = 0.85;
                          LinhasLT.setEntirePath ( Array( Array(left, top+10.053), Array(left, top+4.525) ) );
                          LinhasLT.left = left;
                          LinhasLT.duplicate();
                          LinhasLT.left = left + width;
                         
                      var TextoT = GrupoT.textFrames.add();
                      TextoT.textRange.characterAttributes.textFont = app.textFonts[num];
                      TextoT.textRange.characterAttributes.size = 7.57;
                      TextoT.textRange.characterAttributes.alignment = StyleRunAlignmentType.center;
                      TextoT.contents = (width/2.8346456767).toFixed (2) + " mm";
                      TextoT.top = top;
                      TextoT.left = left;
                      Offset = width - TextoT.width;
                      Offset = Offset / 2;
                      TextoT.translate ( Offset + 0.425, 16 );
                          if (indexCor == ""){
                          TextoT.textRange.fillColor = preto;
                          }else{
                          TextoT.textRange.fillColor = doc.swatches[indexCor].color;
                          };
                  };
                  
                  
                          if (CotasR) {
                  
                  
                          var GrupoR = app.activeDocument.groupItems.add();
                          var LinhasR = GrupoR.pathItems.add();
                          LinhasR.stroked = true;
                          if (indexCor == ""){
                          LinhasR.strokeColor = preto;
                          }else{
                          LinhasR.strokeColor = doc.swatches[indexCor].color;
                          };
                          LinhasR.strokeWidth = 0.85;
                          LinhasR.setEntirePath ( Array( Array((left + width) + 7.519, top), Array((left + width) + 7.519, top + height) ) );
                          LinhasR.top = top - 0.425;
                  
                  
                          var LinhasLR = GrupoR.pathItems.add();
                          LinhasLR.stroked = true;
                          if (indexCor == ""){
                          LinhasLR.strokeColor = preto;
                          }else{
                          LinhasLR.strokeColor = doc.swatches[indexCor].color;
                          };
                          LinhasLR.strokeWidth = 0.85;
                          LinhasLR.setEntirePath ( Array( Array((left + width) + 10.053, top), Array((left + width) + 4.525, top) ) );
                          LinhasLR.top = top;
                          LinhasLR.duplicate();
                          LinhasLR.top = top - height;
                  
                  
                      var TextoR = GrupoR.textFrames.add();
                      TextoR.textRange.characterAttributes.textFont = app.textFonts[num];
                      TextoR.textRange.characterAttributes.size = 7.57;
                      TextoR.textRange.characterAttributes.alignment = StyleRunAlignmentType.center;
                      TextoR.contents = (height/2.83464567).toFixed (2) + " mm";
                      TextoR.rotate (-90);
                      TextoR.top = top;
                      TextoR.left = left;
                      OffsetR = height - TextoR.height;
                      OffsetR = OffsetR / 2;
                      TextoR.translate ( width + 8, -OffsetR );
                          if (indexCor == ""){
                          TextoR.textRange.fillColor = preto;
                          }else{
                          TextoR.textRange.fillColor = doc.swatches[indexCor].color;
                          };
                      GrupoR.translate (2, 0)
                      };
                  
                  
                          if (CotasB) {
                  
                  
                          var GrupoB = app.activeDocument.groupItems.add();
                          var LinhasB = GrupoB.pathItems.add();
                          LinhasB.stroked = true;
                          if (indexCor == ""){
                          LinhasB.strokeColor = preto;
                          }else{
                          LinhasB.strokeColor = doc.swatches[indexCor].color;
                          };
                          LinhasB.strokeWidth = 0.85;
                          LinhasB.setEntirePath ( Array( Array(left, top+7.164), Array(left+width, top+7.164) ) );
                          LinhasB.left = left + 0.425;
                          LinhasB.translate (0, -(height + (7.664*2)));
                  
                  
                          var LinhasLB = GrupoB.pathItems.add();
                          LinhasLB.stroked = true;
                          if (indexCor == ""){
                          LinhasLB.strokeColor = preto;
                          }else{
                          LinhasLB.strokeColor = doc.swatches[indexCor].color;
                          };
                          LinhasLB.strokeWidth = 0.85;
                          LinhasLB.setEntirePath ( Array( Array(left, top+10.053), Array(left, top+4.525) ) );
                          LinhasLB.translate (0.425, -(height + (7.664*2)));
                          LinhasLB.duplicate();
                          LinhasLB.translate (width);
                         
                      var TextoB = GrupoB.textFrames.add();
                      TextoB.textRange.characterAttributes.textFont = app.textFonts[num];
                      TextoB.textRange.characterAttributes.size = 7.57;
                      TextoB.textRange.characterAttributes.alignment = StyleRunAlignmentType.center;
                      TextoB.contents = (width/2.83464567).toFixed (2) + " mm";
                      TextoB.top = top;
                      TextoB.left = left;
                      OffsetB = width - TextoB.width;
                      OffsetB = OffsetB / 2;
                      TextoB.translate ( OffsetB + 0.425, 6 );
                          if (indexCor == ""){
                          TextoB.textRange.fillColor = preto;
                          }else{
                          TextoB.textRange.fillColor = doc.swatches[indexCor].color;
                          };
                      TextoB.translate (0.425, -(height + (7.664*2)));
                      };
                  
                  
                          if (CotasL) {
                  
                  
                          var GrupoL = app.activeDocument.groupItems.add();
                          var LinhasL = GrupoL.pathItems.add();
                          LinhasL.stroked = true;
                          if (indexCor == ""){
                          LinhasL.strokeColor = preto;
                          }else{
                          LinhasL.strokeColor = doc.swatches[indexCor].color;
                          };
                          LinhasL.strokeWidth = 0.85;
                          LinhasL.setEntirePath ( Array( Array((left + width) + 7.519, top), Array((left + width) + 7.519, top + height) ) );
                          LinhasL.top = top - 0.425;
                          LinhasL.translate (-(0, width + (7.664*2)));
                         
                          var LinhasLL = GrupoL.pathItems.add();
                          LinhasLL.stroked = true;
                          if (indexCor == ""){
                          LinhasLL.strokeColor = preto;
                          }else{
                          LinhasLL.strokeColor = doc.swatches[indexCor].color;
                          };
                          LinhasLL.strokeWidth = 0.85;
                          LinhasLL.setEntirePath ( Array( Array((left + width) + 10.053, top + -0.425), Array((left + width) + 4.525, top + -0.425) ) );
                          LinhasLL.translate (-(0, width + (7.664*2)));
                          LinhasLL.duplicate();
                          LinhasLL.top = top - height;
                          LinhasLL.translate -(width);
                         
                      var TextoL = GrupoL.textFrames.add();
                      TextoL.textRange.characterAttributes.textFont = app.textFonts[num];
                      TextoL.textRange.characterAttributes.size = 7.57;
                      TextoL.textRange.characterAttributes.alignment = StyleRunAlignmentType.center;
                      TextoL.contents = (height/2.8346456767).toFixed (2) + " mm";
                      TextoL.rotate (-90);
                      TextoL.top = top;
                      TextoL.left = left;
                      OffsetL = height - TextoL.height;
                      OffsetL = OffsetL / 2;
                      TextoL.translate ( width - 3, -OffsetL );
                          if (indexCor == ""){
                          TextoL.textRange.fillColor = preto;
                          }else{
                          TextoL.textRange.fillColor = doc.swatches[indexCor].color;
                          };
                      TextoL.translate (-(0, width + (7.664*2)));
                      };
                  
                  
                  if (maior){
                  for (i=grupoCotas.pageItems.length-1; i>=0; i--){
                  grupoCotas.pageItems[i].move(activeDocument, ElementPlacement.PLACEATBEGINNING);
                  };
                  };
                  
                  
                  };
                  else {
                      alert("Select one or more Objects.");
                      };
                  
                  
                  };
                  
                  
                  function UI (){
                  
                  
                  var dlg = new Window('palette', '', undefined);
                  dlg.orientation = 'column';
                  
                  
                  var GrupoPanel = dlg.add('group', undefined);
                  GrupoPanel.orientation = 'row';
                  dlg.alignChildren = 'right';
                  
                  
                  var PainelC = GrupoPanel.add('panel', undefined, 'Cotas');
                  PainelC.alignChildren = 'fill';
                  PainelC.margins = 10;
                  GrupoPainelC1 = PainelC.add('group', undefined);
                  GrupoPainelC2 = PainelC.add('group', undefined);
                  GrupoPainelC1.orientation = 'row';
                  GrupoPainelC1.alignChildren = 'center';
                  GrupoPainelC2.orientation = 'row';
                  GrupoPainelC2.alignChildren = 'center';
                  
                  
                  var CotasT = GrupoPainelC1.add('checkbox', undefined, '^');
                  var CotasR = GrupoPainelC2.add('checkbox', undefined, '>');
                  var CotasB = GrupoPainelC1.add('checkbox', undefined, 'v');
                  var CotasL = GrupoPainelC2.add('checkbox', undefined, '<');
                  var OK = PainelC.add('button', undefined, 'OK');
                  OK.preferredSize = [30, 20];
                  
                  
                  OK.onClick = function (){
                     
                          var mensageiro = new BridgeTalk();
                          mensageiro.target = "illustrator";
                          var mensagem = "runIllustrator(" + CotasT.value + "," + CotasR.value + "," + CotasB.value + "," + CotasL.value + ")\n" + runIllustrator.toSource();
                          mensageiro.body = mensagem;
                          mensageiro.send();       
                  
                  
                  };   
                  
                  
                  dlg.show();
                  
                  
                  };
                  
                  
                  
                  
                  UI();
                  
                  • 6. Re: Cotas
                    LeoMari Level 2

                    Muito bom!! Obrigado Vinícius Baptista!

                    • 7. Re: Cotas
                      Vinicius Baptista Level 2

                      Obrigado LeoMari, fico feliz em poder ajudar...

                       

                      Beto estou tentando projetar alguma forma de ajudar quanto à "diagonal", já conseguimos fazer a leitura do comprimento desta, porém agora resta um método para aplicar em diversas situações assim que eu tiver algo pronto já vou postando aqui, quem sabe alguém consegue uma resolução melhor.

                       

                      Abraço.