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:
- Número de ponto flutuante válido (análogo duplo em C). Intervalo: 1,7e308 .. 1,7e308.
- Linha.
- Ponto tridimensional (Point)
- Vetor tridimensional (Vetor)
- 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ética | Quebra-cabeça | ||
| A + B | Adição | A == B | A é igual a B |
| A – B | Subtração | A != B | Um não-equilíbrio em |
| A * B | Multiplicação | A > B | Um pouco mais em |
| A / D | Divisão | A < B | E em menos de |
| A e B | A e B | ||
| Um || B | A 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 operadorComo 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:
- Se a expressão for verdadeira (não 0), o corpo do loop será executado.
- Se a expressão for falsa, então o próximo while é o operador.
- 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

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.

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 deAlé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.

