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;