Perfis I GOST 19425

Desenho CAD de perfis I GOST 19425 0
Software CAD I-perfis GOST 19425 1

Fonte gráfica

Script de perfil I:

SVersão = 2;
Descrição do objeto = @ GOST_19425_74;
 
função ActHeader {
  NParte = 1;
  Público (
     // Abrir opções - definindo a geometria: comprimento, altura
     // Largura das prateleiras.
     L,COMPRIMENTO,
     h,I_SHAPE_HEIGHT,
     b,LARGURA_DO_FLANGE,
     // Referência: peso por metro e peso total
     massa,MASSA,
     mas1,MASSA_DO_MEDIDOR_EM_FUNCIONAMENTO,
     // Designação padrão e uma série de vigas I
     Designação, @ STANDART_DESIGNATION,
     seria, @ SÉRIE,
    
     // Planos de trabalho
     WP1, PLANO_CRUZADO,
     WP2, @ PLANO_INFERIOR,
     WP3, @ PLANO_INFERIOR_LADO_DIREITO,
     WP4, @ PLANO_LADO_SUPERIOR_DIREITO,
     WP5, @ PLANO SUPERIOR,
     WP6, @ PLANO_LADO_SUPERIOR_ESQUERDO,
     WP7, @ PLANO_INFERIOR_LATERAL_ESQUERDO,
     WP8, @ PLANO CRUZADO
 
  );
 
  
  Protegido (seted, massa, bHid, seria);
  
  Mutável (L, b, h, WP1, WP2, WP3, WP4, WP5, WP6, WP7, WP8, Designação);
  
  OnDlgBeforeSelectParam = 1;
  MostrarQuandoSelPnt = 1;
  ContornoOnLine = 0;
  NãoCorpoPadrão = 1;
};
 
função OnInitialization {
  LoadInCache (séria, Designação, h, b);
  se (seted == ValorDesconhecido) {
     definido = 1;
     rZOorder = 100;
     bHid = 0;
     L = 50;
     strDesignName = "Implementação 1";
     SelectInCache ("kFirst", "seria", "~", "C", "h", "~", 100, "b", "~", 10, "Designação", "~", "1");
  };
};
 
função SetGripPoint {
  // Em quatro alças de viga I
  NGrip = 4;
  // As alças estão situadas nos pontos extremos da viga I do modelo
  // O ponto de inserção
  pntGrip0 = pntOrigin;
  // Na extremidade oposta
  pntGrip1 = pntOrigin + L * vecDirection;
  
  // No ponto médio da prateleira superior
  pntGrip2 = pntOrigin + h * vecPlane;
  
  // No ponto extremo da prateleira inferior
  vecNormal = obterLocalNormal (vecDireção, vecPlano);
  pntGrip3 = pntOrigin + vecNormal * b / 2;
};
 
função OnMoveGripPoint {
  // A primeira alça de transporte toda em viga I
  se (NMovingGrip == 0) {
     pntOrigin = pntGrip0;
  };
  
  // A segunda alça estica o comprimento da viga I e determina
  // Inserção do vetor de direção em viga I
  se (NMovingGrip == 1) {
     L = máx. (vecLen (pntGrip0 - pntGrip1), 1);
     vecDirection = pntGrip1 - pntGrip0;
     LoadInCache (séria, h, b);
     SelectInCache ("kFirst", "séria", "~", "20", "h", "~", h, "b", "~", b);
  };
  
  // Altura da alça de uma viga I
  // Em sua altura, esticou-se a nova viga I selecionada,
  // Distância relativa aproximadamente igual do ponto do cursor
  // Inserir peças.
  se (NMovingGrip == 2) {
     // Altura variável auxiliar da nova viga I.
     rNew_h = vecLen (pntGrip0 - pntGrip2);
 
     LoadInCache (séria, h, b);
     SelectInCache ("kFirst", "séria", "~", "20", "h", "~", rNew_h, "b", "~", b);
  };
 
  // Lidar com a largura do flange da viga I
  // Se for esticado, selecione a nova largura do flange da viga I,
  // Aproximadamente igual ao dobro da distância relativa
  se (NMovingGrip == 3) {
     // Uma nova variável auxiliar distances.
     rNew_b = 2 * vecLen (pntGrip0 - pntGrip3);
 
     CarregarEmCache (b, h);
     SelectInCache ("kFirst", "b", "~", rNew_b, "h", "~", h);
  };
  
};
 
função OnMakeParameters {
  strTheName = "19425-74";
  strTheType = "Perfil";
  strTheSubType = "Forma de I";
  
  massa = mas1 * L / 1000;
  
  // Encontre o terceiro vetor correto no sistema de coordenadas da peça de trabalho,
  // Como o produto vetorial
  vecNormal = obterLocalNormal (vecDireção, vecPlano);
  
  // Colocamos o avião em ordem no sentido anti-horário
  // O plano da primeira extremidade
  WP1 = Plano (pntOrigin + vecDirection * (0), vecDirection);
  // O plano do segundo fim
  WP8 = Plano (pntOrigin + vecDirection * L, -vecDirection);
  // Plano do meio da prateleira inferior.
  WP2 = Plano (pntOrigin-vecPlane * (0), -vecPlane);
  
  // Lado direito
  WP3 = Plano (pntOrigin + vecNormal * (b / 2), vecNormal);
  WP4 = Plano (pntOrigin + vecNormal * (b / 2) + vecPlane * h, vecNormal);
  
  // O avião do meio da prateleira superior
  WP5 = Plano (pntOrigin + vecPlane * (h), vecPlane);
  
  // Lado Esquerdo
  WP6 = Plano (pntOrigin-vecNormal * (b / 2) + vecPlane * h, -vecNormal);
  WP7 = Plano (pntOrigin-vecNormal * (b / 2), -vecNormal);
};
 
função OnDialog {
  // Para a beleza
  strRefDataHeader = "------";
  LoadInCache (séria, Designação, h, b);
  // Tipo de diálogo
  UniDialog (
     // Define os parâmetros de uma série de altura e largura das prateleiras
     DBFLD, seria, h, b,
     // Parâmetros de referência - designação e peso por metro
     DBINF, Designação, mas1,
     // Parâmetro de comprimento arbitrário da viga I
     VFLD, L, @ I_SHAPE_LENGTH__MM,
       
     // Criando página de configurações do bloco de referência
     // Propriedades arbitrárias
     strRefDataHeader, @ DADOS_DE_REFERÊNCIA_,
     A, @ A__CM2,
     Ix,IX__CM,
     ix,IX__CM,
     Wx, @ WX__CM3,
     Sx, @SX__CM3,
     Sim, @ IY__CM4,
     Wy, @ WY__CM3,
     iy,IY__CM,
    
     // Jackdaw exibe linhas ocultas
     BFLD, bHid,LINHAS_OCULTAS,
     // Tipos de exibição A geração AnyWBK significa
     // Espécies espelhadas, se não forem performances substituídas
     TVIDS, lViewType, "AnyWBK",
    
     VER, "Vídeos"
  );
};
 
função OnDialogChanged {
  MostrarBool ??(0,LINHAS_OCULTAS);
  // Verifique se a "linha invisível" é necessária apenas para essas espécies
  // Para o qual eles têm.
  se (lViewType == VLEFT || lViewType == VRIGHT)
     {MostrarBool ??(1,LINHAS_OCULTAS)};
};
 
 
função OnChangeParameters {
  // Para alterar as configurações:
  // Valores novos simplesmente atribuídos arbitrariamente
  L = novo.L;
  
  // Para tabela ou selecionado por uma combinação dos parâmetros de definição
  se (novo.b! = b || novo.h! = h) {
     CarregarEmCache(h, b);
     SelectInCache ("kFirst", "h", "~", novo.h, "b", "~", novo.b);
  // Ou definindo um campo de notação padrão
  } Senão se (Designação! = Nova.Designação) {
     LoadInCache (Designação);
     SelectInCache ("kFirst", "Designação", "~", new.Designação);
  };
 
    
  Manipulado = OBJ_HANDLED;
  correção = 0;
  
  // A resposta à mudança de posição dos planos.
  // É para recalcular a nova posição do ponto de inserção
  // E direções
  
  // Sob as condições IsFixedParam as unidades podem ser agrupadas em
  // Opções de direção do plano.
  
  // Superfície normal colinear vecDirection
  se (IsFixedParam (WP1)) {
     consertar = consertar + 1;
     vecXOld = vecDireção;
     vecDirection = Vetor (novo.WP1);
     pntOrigin = Ponto (new.WP1) - vecDirection * (0);
     restaurarBase(vecXOld, vecPlano, vecDireção);
  };
  se (IsFixedParam (WP8)) {
     consertar = consertar + 1;
     vecXOld = vecDireção;
     vecDirection = -Vetor (novo.WP8);
     pntOrigin = Ponto (new.WP8) - vecDirection * (L);
     restaurarBase(vecXOld, vecPlano, vecDireção);
  };
  
  // Superfície normal colinear vecPlane
  se (IsFixedParam (WP2)) {
     consertar = consertar + 1;
     vecYOld = vecPlano;
     vecNormal = obterLocalNormal (vecDireção, vecYOld);
     vecPlane = -Vector (novo.WP2);
     pntOrigin = Ponto (new.WP2) + vecPlane * (0);
     restaurarBase(vecYOld, vecNormal, vecPlane);
     vecDirection = obterLocalNormal (vecPlano, vecNormal);
  };
  se (IsFixedParam (WP5)) {
     consertar = consertar + 1;
     vecYOld = vecPlano;
     vecNormal = obterLocalNormal (vecDireção, vecYOld);
     vecPlane = Vetor (novo.WP5);
     pntOrigin = Ponto (new.WP5) - vecPlane * (h);
     restaurarBase(vecYOld, vecNormal, vecPlane);
     vecDirection = obterLocalNormal (vecPlano, vecNormal);
  };
  
  
  // Superfície normal colinear vecNormal
  se (IsFixedParam (WP3)) {
     consertar = consertar + 1;
     vecZOld = obterLocalNormal (vecDireção, vecPlano);
     vecZNew = Vetor (novo.WP3);
     vecYNew = obterLocalNormal (vecDireção, vecZNew);
    
     restaurarBase(vecZOld, vecPlane, vecZNew);
    
     pntOrigin = Ponto(new.WP3) - vecZNew *(b / 2);
     vecDirection = obterLocalNormal (vecZOld, vecYNew);
  };
  
  se (IsFixedParam (WP4)) {
     consertar = consertar + 1;
     vecZOld = obterLocalNormal (vecDireção, vecPlano);
     vecZNew = Vetor (novo.WP4);
     vecYNew = obterLocalNormal (vecDireção, vecZNew);
    
     restaurarBase(vecZOld, vecPlane, vecZNew);
    
     pntOrigin = Ponto(new.WP4) - vecZNew *(b/2) + vecYNew *h;
     vecDirection = obterLocalNormal (vecZOld, vecYNew);
  };
  
  se (IsFixedParam (WP6)) {
     consertar = consertar + 1;
     vecZOld = obterLocalNormal (vecDireção, vecPlano);
     vecZNew = -Vetor (novo.WP6);
     vecYNew = obterLocalNormal (vecDireção, vecZNew);
    
     restaurarBase(vecZOld, vecPlane, vecZNew);
    
     pntOrigin = Ponto(new.WP6) + vecZNew *(b/2) + vecYNew *h;
     vecDirection = obterLocalNormal (vecZOld, vecYNew);
  };
 
 
  se (IsFixedParam (WP7)) {
     consertar = consertar + 1;
     vecZOld = obterLocalNormal (vecDireção, vecPlano);
     vecZNew = -Vetor (novo.WP7);
     vecYNew = obterLocalNormal (vecDireção, vecZNew);
    
     restaurarBase(vecZOld, vecPlane, vecZNew);
    
     pntOrigin = Ponto(new.WP7) + vecZNew *(b/2);
     vecDirection = obterLocalNormal (vecZOld, vecYNew);
  };
  
  se (fixar > 1) {
     Manipulado = OBJ_ERROR;
  };
};
 
função BeforeConnect {
  RedefinirÚltimaConstraint();
};
 
função OnSelectParam {
  // A seleção dinâmica de parâmetros.
  se (lViewType == VTOP || lViewType == VBOTTOM)
     // Não escolha os parâmetros para os tipos de lado
     {QuebrarTudo = 1;}
  outro {
     // Para outras espécies escolherem o comprimento de uma viga I em relação
     // Cursor abscissa
     L = máx. (abs (rXcoord), 1);
     };
};
 
// Formação das especificações de linha, como a soma da substring
strPartName =I_PROFILE_N_ + Designação + "x" + L + @ _MASS_ + massa + @ _GOST_19425_74;