Linguagem de script de sintaxe

Script – é o código em uma linguagem semelhante à SI, que determina a natureza dos parâmetros do software do banco de dados de objetos, o impacto do plano no objeto de resposta, a instalação automática de dependências, etc. Um script é composto por uma série de blocos que executam eventos definidos de fora do objeto.

Identificadores

Identificador é uma sequência de caracteres que representa o nome de uma variável, função ou operador. As regras descrevem identificadores no MechWizard de forma semelhante às regras em C:

  • O identificador pode consistir em letras do alfabeto, números e o caractere de sublinhado.
  • O identificador deve começar com uma letra ou sublinhado.
  • Identificadores que consistem em sequências idênticas de letras, mas em maiúsculas/minúsculas, são identificadores diferentes.
  • O comprimento máximo do identificador é limitado a 50 caracteres.

Recomendações para os nomes das variáveis ​​de nome estão listadas no documento.

Palavras-chave

Palavras-chave – são identificadores reservados dotados de um determinado sentido. Elas podem ser usadas apenas de acordo com o valor do interpretador de macrolinguagem conhecido. Palavras-chave não podem atuar como identificadores.

Lista de palavras-chave listadas no anexo .

Tipos de dados

Na linguagem macro, existem cinco tipos principais de dados:

  1. Número de ponto flutuante válido (análogo duplo em C). Intervalo: 1,7e308 .. 1,7e308.
  2. Linha.
  3. Ponto tridimensional (Point)
  4. Vetor tridimensional (Vetor)
  5. Plano definido pelo ponto de referência e um vetor normal (Plano).

O script fez um acordo com os nomes de variáveis ​​de tipo real prefixadas com r, para adicionar um prefixo a uma variável de string str ou s, com as variáveis ​​de tipo de ponto prefixadas com pnt ou p, com as variáveis ​​de tipo de vetor para adicionar um prefixo ou vec v, e com o plano denotado WP (WorkPlane).

A inicialização de variáveis ​​é realizada sem especificação prévia, como no BASIC. Para declarar uma variável, basta atribuir um valor a ela. Se a variável não for descrita na função de cabeçalho nas seções ActHeader Public ou Protected, ela será considerada local e manterá seu valor desde o primeiro momento até o final da definição em que for descrita.

    StrName = "ObjetoA";
    rPI = 3,1415926;
    rA = 2,0;

Para inicializar os pontos e vetores, use funções construtoras especiais Point(), Point(x, y, z) e Vector(), Vector(x, y, z) respectivamente.

    pnt2=Point();//comprimento do identificador
    pnt1= Point(1.0, 10.0, 10.0); //Este é o ponto com coordenadas específicas
    vec1 = Vector(); // vetor de comprimento unitário, que coincide com o eixo OX (1,0,0)
    vec1 = Vector(1.0, 1.0, 0); //Coordenadas específicas do vetor

Para separar o ponto de coordenada ou vetor pode ser acessado usando o qualificador:

    pnt1:x = 12.5;//Removendo a abscissa do ponto
    vec1:y = 25.6;//Removendo as ordenadas do ponto

Plano usado para inicializar uma função construtora Plane (pnt, vecNormal).

     WP1 = Plano(pntBase, vecNormal);
    //pnt- Este é o ponto básico para o plano WP1
    //vecNormal- Este é o vetor normal ao plano de WP1       

Por exemplo

     WP1 = Plano(pntOrigin, vecDirection);

Variáveis ​​de indexação

Se você declarar um número de variáveis ​​de qualquer tipo com nomes que diferem apenas pelo número no final, essas variáveis ​​poderão ser acessadas por índice, como uma matriz.

    rParam1 = 1,0;
    rParam2 = 2,0;
    rParam3 = 4,0;
    ...
    rParam[2] = 45,7;
    rParam[3] = 9,1223;

Comentários

Os comentários no script começam com uma barra dupla e terminam no final da linha.

    //Primeiro monte um plano no sentido anti-horário
    vecNormal=getLocalNormal(vecDireção,vecPlano);
     
    WP1 = Plano(pntOrigin, vecDirection);
    WP2 = Plano(pntOrigin-vecPlane*(0), -vecPlane);
     
    //Lado direito
    WP3 = Plano(pntOrigin+vecNormal*(b/2), vecNormal );
    WP4 = Plano(pntOrigin+vecNormal*(b/2)+vecPlane*h, vecNormal );
     
    WP5 = Plano(pntOrigin+vecPlane*(h), vecPlane);

Operadores

Todos os operadores da linguagem macro podem ser divididos nas seguintes categorias:

  • operadores aritméticos
  • Operadores booleanos
  • operador condicional
  • operador de loop
  • outros operadores (declaração vazia, operador de atribuição, operador de acesso a membros internos)

Todos os operadores terminam a instrução vazia – um ponto e vírgula “;”.

Operador vazio

Uma instrução vazia consiste apenas em um ponto e vírgula. Quando esta instrução é executada, nada acontece. Esta instrução é um delimitador para outros operadores, funções e linhas no script.

Operador composto

Uma instrução composta consiste em alguns operadores e anúncios entre chaves {}. A execução da instrução composta ocorre na execução sequencial de seus operadores constituintes. No final de uma instrução composta, coloca-se o ponto e vírgula.

O operador de atribuição

O operador de atribuição é denotado pelo sinal de igualdade.

expressão A = B; significa que a variável A recebe o valor da expressão B , e o tipo da variável A tipo de expressão é estabelecido B .

Acesso do operador aos membros internos dos tipos de dados complexos

Para acessar os membros internos dos tipos de dados complexos, um operador qualificador especial “:” pode ser usado. Por exemplo, ele pode ser usado para acessar variáveis ​​de coordenadas individuais dos tipos Ponto e Vetor.

Operadores aritméticos e lógicos

A sintaxe dos operadores aritméticos e lógicos na sintaxe de script da linguagem macro é semelhante à SI.

AritméticaQuebra-cabeça
A + BAdiçãoA == BA é igual a B
A – BSubtraçãoA != BUm não-equilíbrio em
A * BMultiplicaçãoA > BUm pouco mais em
A / DDivisãoA < BE em menos de
  A e BA e B
  Um || BA ou B

Para argumentos do tipo Subtração de Pontos, o resultado é um vetor. A multiplicação de um vetor por um novo vetor será igual ao produto escalar do vetor por.

    vecDirection = pntEnd - pntStart;
    vecScaled = vecDirection * rScale;

O operador condicional

Declaração de formato:

se ( <expressão> )
    operador_IF1;
outro
    operador_ELSE1;
    //<expressão>- é uma condição lógica para executar o operador

Como operador _IF1 e/ou _ELSE1 podem atuar o operador composto, ou seja, grupo de instruções entre chaves.

Execução se o operador começar com a avaliação da expressão.

A execução adicional é a seguinte:

  • se a expressão for verdadeira (ou seja, diferente de 0), então o operador _IF1.
  • se a expressão for falsa (ou seja, igual a 0), então o operador _ELSE1
  • se a expressão for falsa e não houver operador _ELSE1, então a seguinte instrução if em

O bloco de instruções após else pode estar ausente, juntamente com a palavra else. Nesse caso, a instrução condicional é a seguinte:

se ( <expressão> )
    operador_IF1;

Uma expressão pode ser qualquer operador lógico ou aritmético ou uma sequência de instruções separadas por parênteses.

se (A>1)
    operador_IF1;
se ((A>1)&&(B<5)&&(C==25))
    operador_IF1;

Você pode usar instruções condicionais aninhadas, ou seja, a instrução condicional pode ser incluída no design se o design ou outra instrução condicional.

se (A > 1){
    se (B < 5){
        se (C == 25)
            operador_IF1;
    }
};

Operador de ciclo

Declaração de formato:

enquanto (expressão)
    operador_BODY;

Requisitos para a expressão, como na instrução if. Operador _BODY chamado corpo do loop.

A execução do ciclo começa com a avaliação da expressão. A execução posterior é a seguinte:

  1. Se a expressão for verdadeira (não 0), o corpo do loop será executado.
  2. Se a expressão for falsa, então o próximo while é o operador.
  3. O ciclo é repetido a partir do passo 1.

Funções

Função – um conjunto de operadores e outras chamadas de função. Cada função tem um nome. A declaração da função começa com a palavra-chave function. O corpo da função é colocado entre chaves. Nesta versão do navegador, as funções não têm parâmetros.

Função de formato:

função Nome_da_Função{
  operador_1;
  ...
  operador_N;
}

É permitido chamar uma das outras funções, mas as funções chamadas de funcA devem ser declaradas acima no corpo do script.

Exemplo:

função user_Function_1{
  MessageBox("Este é meu primeiro recurso");
}
função OnInitialization{
  user_Function_1(); // A chamada correta. A função chamada está declarada acima!
  user_Function_2(); // Chamada incorreta. A função chamada está declarada abaixo!
}
função user_Function_2{
  MessageBox("Este é meu segundo recurso");
}

O interpretador possui uma série de funções integradas, conforme listadas no Apêndice 2.

Especificando o plano do objeto

A geometria do objeto abstrato alvo (pontos, vetores e planos) pode estar em formato de coordenadas (quase não utilizado) ou em relação ao sistema de coordenadas local. A posição dos pontos é definida pela especificação dos operadores de adição ponto e plano. No exemplo, a posição do ponto de referência é definida como o plano.

    pntWP4=pntOrigem+vecDireção*(b/2)+vecPlano*h

Vetor normal do plano colinear inserido vecDirection

Linguagem de script de sintaxe de desenho CAD 0

Consequentemente, o plano iluminado WP4 será definido como

    WP4=Plano(pntWP4,vecDireção);

Se o vetor normal da superfície não for um sistema de coordenadas ortogonais, ele geralmente será determinado pelo operador RotateBy ou GetLocalNormal.

Linguagem de script de sintaxe de software CAD 1

Por exemplo, para revestir o fundo cônico, o vetor normal da superfície é definido como WP2

    vecNormal=getLocalNormal(vecDireção,vecPlano);
    vecFitting = girarBy(vecDirection,90-ang/2,vecNormal);
    //ang - é o ângulo do fundo em termos de

Além dos operadores identificados acima, são utilizados para encontrar o plano normal do vetor e o ponto base:

    pntWP1 = Ponto(WP1);
    vecWP1 = Vetor(WP1);

Para encontrar a distância entre o ponto e o plano use a diferença ponto e plano

    rDistance = WP1-pntOrigin;

O comprimento do vetor (distância entre pontos) define o operador vecLen:

rLength = vecLen(pntWP1 - pntOrigin);

O operador vetorial ortogonal é getPerp:

vecPlane = getPerp(vecDirection);

Folha de exercícios

Para trabalhar com o objeto de tabela são utilizados dois operadores: LoadInCache e SelectInCache.

O operador LoadInCache especifica os parâmetros no cache da tabela. Nas novas versões, este operador deve ser chamado somente quando a amostra for forçada com uma expressão a avaliar os parâmetros de (…, “+”, …).

O operador SelectInCache seleciona da tabela de acordo com os critérios especificados (veja a sintaxe no apêndice)

A amostragem por “kFirst” seleciona a primeira linha. A amostragem por “kFilter” seleciona um intervalo de registros de uma tabela que correspondem ao filtro especificado.

Parâmetros específicos da amostra de jantar “~” – o parâmetro de igualdade aproximada seleciona o valor no registro. “=” – Uma igualdade exata, “+” – a amostra no filtro. Seleciona por filtro oznachet que, se a condição lógica do filtro for satisfeita, o registro será selecionado da tabela (sujeito a verificações adicionais das condições).

Por exemplo, o

SelectInCache("kFirst", "dr", "~", rdr, "L", "+", "L>=rMinLen&& L<=rMaxLen&& (Lb<=rTrLen)");

seleciona o primeiro registro da tabela, onde a combinação dos parâmetros dr, L, b tal que dr?rdr, rMinLen<=L<=rMaxLen, (Lb)<=rTrLen.

A função SelectInCache define a ordem importante das condições de amostragem. Isso significa que, em primeiro lugar, será selecionado o registro da tabela correspondente à primeira condição, depois, qual dos registros corresponde à segunda condição, e assim por diante.

Se houver vários itens nas tabelas, os nomes dos parâmetros de coincidência devem habilitar a caixa de seleção “Usar o nome da tabela como prefixo para os parâmetros” no menu de contexto da tabela correspondente.

Neste caso, um apelo ao parâmetro no script será o seguinte:

<Nome da tabela>.<Nome do parâmetro>

Por exemplo:

Se (Tabela0.dr==Tabela1.Thread1) {
  ...
};

Para fornecer uma amostra da primeira tabela não é necessário modificar o operador SelectInCache.

Por exemplo, se você precisar selecionar da tabela Table1 o parâmetro dr, igual a 10, então a primeira condição no operador para selecionar de uma tabela deve seguir o índice da tabela (começando em 0):

SelectInCache(1, "kFirst", "dr", "~", 10);

Para uma tabela com imenenm Table0, o nome da tabela pode ser omitido. Ou seja, também é verdadeiro, e outra expressão:

SelectInCache ("kFirst", "dr", "~", 10, "L", "~", 50);
SelectInCache ("0","kFirst", "dr", "~", 10, "L", "~", 50);

Objeto Dialog. Criando a função UniDialog

A caixa de diálogo Exibir Inserir Objeto é definida especificando os principais recursos do UniDialog.

Veja a seção apropriada do requerimento.

Deveria ser fácil comparar isso

DBFLD – os parâmetros de tabela de definição.

DBINF – configurações da tabela de referência.

VFLD – são parâmetros arbitrários e dados de referência.

VIDS – uma lista de versões do objeto (possivelmente omitida se houver apenas uma execução).

TVIDS – diferentes visões do mesmo design (chaves possíveis – por tipo, Todas – aquelas presentes, AnyWBK – visões opostas geradas espelhadas (para objetos simétricos).

VER – espécies de polegares.

A chave OnDglBeforeSelParam em ActHeader determina se a caixa de diálogo é chamada antes da seleção de parâmetro dinâmico.

Conectando UserForm

Se um objeto recebe uma forma, para que ele seja chamado, você precisa usar a função OnDialog UniDialog no lugar da função para causar uma forma concreta.

Por exemplo, se o objeto for dado com o formato frmMain, você deve escrever o seguinte:

funçãoOnDialog{
  ShowForm("frmMain");
}

Da mesma forma, os termos podem causar diversas formas diferentes do objeto, referindo-se a elas pelo nome usando o operador ShowForm.

Definir dependências

Os operadores configuram dependências e implementam dependências geométricas e paramétricas.

Dependências paramétricas

SetParamConstraint(< param >,obj,EXPR,< expressão a ser restringida>,bBidirect);

<param> – nome do objeto de parâmetro ao qual se aplica a dependência de tempo.

Obj – qual conjunto de objetos.

EXPR – até agora apenas a dependência da expressão

<expressão a ser restringida> – combinação aritmética de parâmetros nos quais a dependência é colocada (deve estar entre aspas).

bBidirect – relacionamento bidirecional ou unidirecional.

Restrições geométricas

SetGeomConstraint(rTYPE, rDIRECTION, obj, < WPname >, < WPtoConnect >, offset, bBidirect);
SetGeomConstraint(ANGE,CODIRECT,< obj >,< wpSourcePlane >,< wpObjPlane >,< rAngle >,< bBiderect >);

Tipos de dependências rTYPE = INSERT (inserção)) MATE (alinhamento no plano) AXIS (eixo de alinhamento) DIRECTION (também conhecido como ANGLE) (orientação angular).

Direção rDIRECTION = CODIRECT (co-dirigido) CONTRDIRECT (direções opostas).

<WPname> – O nome do plano que está anexado.

<WPtoConnect> – O nome do plano unido.

Offset – expressão numérica ou paramétrica que define:

INSERT – distância axial entre os planos.

MATE – distância normal entre os planos.

EIXO – deslocamento relativo em termos dos eixos.

DIREÇÃO – ângulo de orientação relativa dos planos.

Para dependências DIREÇÃO (ÂNGULO) existem certas condições:

Sintaxe:

SetGeomConstraint(ANGE,CODIRECT,< obj >,< wpSourcePlane >,< wpObjPlane >,< rAngle >,< bBiderect >);

ÂNGULO – palavra-chave dependência angular.

CODIRECT – sempre para a dependência angular. Acredita-se que seja devido ao ângulo mínimo.

<obj> – qual conjunto de objetos.

<wpSourcePlane> – o plano do objeto de origem ao qual a dependência é colocada.

<wpObjPlane> – o plano do objeto ao qual você se inscreve.

<rAngle> – valor numérico do ângulo em graus, dependendo.

<bBidirect>=(TRUE,FALSE) – relacionamento unidirecional ou bidirecional. Padrão FALSE.

Dependendo do tipo, ANGLE deve ser adicionado após o tipo de dependência INSERT, MATE, AXIS.

Quando o tipo de dependência INSERT, MATE ou rotação AXIS é relativo aos eixos da dependência dos planos.

Na ausência do tipo de dependência INSERT, MATE AXIS ou mova-o na normal ao plano em que ambos os vetores estão na direção do ângulo mínimo de rotação.

Se considerarmos que os vetores são colineares, mova-os em torno do eixo OX.

Exemplo:

SetGeomConstraint(ÂNGULO,CODIRECT, obj,WPnormal,obj.WPnormal,45);
SetGeomConstraint(ÂNGULO,CODIRECT, obj,OYPlane,obj.WP2,15,TRUE);

Exemplos de diferentes tipos de dependência podem ser encontrados no apêndice.

Função ShowValue

O uso das janelas do depurador permite detectar erros no script e determinar os valores dos parâmetros durante a execução do script. Sintaxe, veja o Apêndice.