Neste post veremos o método mais poderoso disponível a "não-programadores" para personalizar BricsCAD® - a linguagem de programação LISP - ao custo de ser um pouco mais difícil de criar do que macros ou scripts. Você aprenderá o que é o LISP e como ele funciona no BricsCAD. Você também aprenderá como fazer uma simples adição no LISP.

Embora as macros das barras e dos menus sejam fáceis de escrever e editar, elas limitam sua capacidade de controlar o BricsCAD.

ATENÇÃO: Este artigo no Blog é transcrito aqui no idioma Português-Brasil, mas pelo fato do artigo original ter sido escrito em Inglês, é possível que algumas instruções (especialmente: códigos) possam gerar conflito entre os idiomas. Sugiro consultar também os códigos de origem (no livro ou na versão em inglês deste post) para garantir que seu trabalho esteja bem resolvido.


Os seguintes tópicos são abordados neste artigo:


A História do LISP em BricsCAD

O LISP é uma das linguagens de programação mais antigas, desenvolvida no final da década de 1950 para ajudar na pesquisa de inteligência artificial. Seu nome é abreviação de "processamento de lista" e foi projetado para lidar com listas de palavras, números e símbolos.

O LISP apareceu pela primeira vez no CAD quando, em 1985, a Autodesk adicionou um recurso não documentado ao AutoCAD® v2.15 chamado "Variáveis e expressões". Os programadores da Autodesk pegaram o XLISP, um dialeto de domínio público escrito por David Betz e o adaptaram para o AutoCAD®. O lançamento inicial de Variáveis e Expressões foi fraco porque faltava declarações condicionais - necessário pelas linguagens de programação para tomar decisões.

Com versões adicionais, a Autodesk adicionou as instruções de programação ausentes, as poderosas rotinas GETxxx, SSxxx e EntMod (que fornecem acesso direto a entidades no banco de dados de desenhos) e renomeou a linguagem de programação "AutoLISP". Isso permitiu que desenvolvedores terceirizados escrevessem rotinas que manipulavam um desenho inteiro e não programadores escrevessem rotinas simples que automatizavam as atividades diárias de desenho.

Quando a SoftDesk desenvolveu aquele que mais tarde iria se chamar IntelliCAD, eles incluíram uma linguagem de programação muito semelhante ao AutoLISP, chamando-a simplesmente de "LISP". (Acho que seria melhor chamá-lo de IntelliLISP para evitar confusão com a verdadeira linguagem de programação LISP. Melhor ainda, eles poderiam ter dado a ele o apelido moderno do iLISP.)

AMBIENTE BLADE

BricsCAD inclui LISP e suporta o VisualLISP (não coberto nestas postagens). Você pode ver a íntegra, Guia oficial BricsCAD LISP online. Com a V18, o Bricsys inclui um avançado ambiente de autoria LISP chamado BLADE: Bricsys LISP Advanced Development Environment. Para iniciá-lo, digite o comando Blade de dentro de BricsCAD.

COMPATIBILIDADE ENTRE LISP E AUTOLISP

O LISP no BricsCAD é, na maioria das vezes, compatível com o AutoCAD®AutoLISP. Se você conhece o AutoLISP, pode programar imediatamente no LISP, incluindo o controle de caixas de diálogo. O LISP tem, no entanto, algumas diferenças das quais você deve estar ciente.

Funções Adicionais do LISP no BricsCAD

O LISP no BricsCAD contém funções adicionais não encontradas no AutoLISP. Isso inclui as seguintes:

Função LISP Significado
acos Arco cosseno
asin Arco seno
atanh Tangente do arco hiperbólico
ceiling menor número inteiro que não seja menor que x.
cosh Cosseno hiperbólico
find Localiza um item em uma lista
floor Maior número inteiro, menor ou igual a x
get_diskserialid Cadeia de caracteres (id) exclusiva de nove dígitos
getpid ID do processo atual
grarc Desenha um arco ou círculo temporário, com raio e cor especificados; opcionalmente pode ser destacado
grfill Desenha uma área de polígono preenchida temporariamente, com a cor especificada; opcionalmente pode estar no modo destacado
log10 Log 10
position Indexa o número de um item em uma lista
remove Remove um item de uma lista
round Arredonda para o número inteiro mais próximo
search Pesquisa por um item, e retorna seu número na lista
sinh Seno hiperbólico
sleep Pausa a execução
string-split Divide uma string com base em um delimitador
tan Tangente
tanh Tangente hiperbólica
until Testa a expressão até que seja verdadeira
vla-collection- Retorna uma coleção como uma lista LISP

Diferentes Funções de LISP

O LISP do BricsCAD possui várias funções que operam de maneira diferente do AutoLISP, fornecendo suporte adicional.

Essas incluem:

Função LISP Comentário                                                                                                       
osnap Suporta PLA (planview) snap a entidade para encaixar interseções 2D.
ssget e ssadd Suporta modos de seleção adicionais:
CC Crossing Circle
Outside
OC Outside Circle
OP Outside Polygon
PO POint

Funções AutoLISP que faltam no LISP do BricsCAD

O LISP não possui algumas funções encontradas no AutoLISP. Devido à natureza dinâmica do LISP, é difícil criar uma lista definitiva. Aqui estão algumas das funções que encontrei ausentes:

  • Todas as SQL-relacionadas funções, que vinculam objetos no AutoCAD® desenho com registros em um arquivo de banco de dados externo. No AutoCAD®, essas funções começam com "ase_", como em ase_lsunite e ase_docmp.

A Linguagem de Programação LISP

O LISP é capaz de muitas máscaras, desde a adição de dois números - durante a execução de um comando, a desenhar uma escada em 3D parametricamente, a gerar uma nova interface de usuário para BricsCAD, a manipular de dados no banco de dados de desenho…

O aspecto mais importante do LISP, na minha opinião, é que ele permite que você jogue algumas linhas de código para ajudar a automatizar seu trabalho. Nas próximas postagens, mostrarei como escrever um código LISP simples para facilitar o seu dia de desenho BricsCAD.

Por outro lado, o recurso de programação mais poderoso do BricsCAD - conhecido como SDS (sistema de desenvolvimento de soluções) - é apenas uma interface: você precisa comprar adicionalmente as ferramentas de programação (leia: $$$) e ter um conhecimento profundo da metodologia de programação avançada. A principal vantagem do uso do SDS é a velocidade: esses programas executam código intensivo em computação até 100 vezes mais rápido que o LISP.

LISP SIMPLES: FAZER A ADIÇÃO DE DOIS NÚMEROS

Com esse pouco de experiência, vamos nos aprofundar no uso do LISP. Vamos começar com algo fácil, algo que todos sabem, somando dois números, como 9 mais 7.

  1. Inicie o BricsCAD, qualquer versão; não há necessidade de abrir um desenho em especial.
  2. Quando o prompt de comando ':' aparecer, digite o texto em negrito, mostrado abaixo, no teclado:

    : (+ 9 7) (Pressione enter.)
    16
    :

    O BricsCAD responde instantaneamente com a resposta, 16. (Nas próximas postagens, mostrarei o operador da função, o sinal de +) Chegar a essa resposta através de (+ 9 7) pode, no entanto, parecer complicado para você. Isso ocorre porque o LISP usa notação de prefixo:

    O operador + aparece antes dos operandos 9 e 7.

    Pense nisso em termos de "adicione 9 e 7." É semelhante à maneira como o BricsCAD funciona: digite primeiro o nome do comando (como Circulo) e, em seguida, insira as coordenadas do círculo.

  3. Observe os parênteses que cercam a instrução LISP. Todo parêntese de abertura (requer um parêntese de fechamento). Posso dizer agora que o equilíbrio entre parênteses é o aspecto mais frustrante do LISP. Aqui está o que acontece quando você deixa de fora os parênteses de fechamento:

    : (+ 9 7 (Pressione enter.)
    Faltando: 1) >

    BricsCAD exibe o prompt “Faltando: 1)” para informar que um parêntese de fechamento está ausente. Se dois parênteses de fechamento estiverem faltando, o prompt exibirá "Faltando: 2)"

  4. Digite o parêntese faltante ) e o BricsCAD fica satisfeito:
    Em falta: 1) >) (Pressione enter.)

    16
    :

  5. Os parênteses servem a um segundo objetivo: alertam BricsCAD de que você está usando o LISP. Se você inserir a mesma função LISP '+ 7 9' sem parênteses, o BricsCAD reagirá desfavoravelmente a cada caractere digitado, interpretando cada espaço como o final de um nome de comando:

    : + (Pressione a barra de espaço.)
    Incapaz de reconhecer o comando. Por favor, tente novamente.
    : 9 (Pressione a barra de espaço.)
    Incapaz de reconhecer o comando. Por favor, tente novamente.
    : 7 (Pressione a barra de espaço.)
    Incapaz de reconhecer o comando. Por favor, tente novamente.
    :

  6. Como você pode supor, o LISP fornece todas as funções aritméticas básicas: adição, subtração, multiplicação,
    e divisão. Tente cada uma das funções, subtração primeiro:

    : (- 9 7)
    2
    :

  7. A multiplicação é feita usando o símbolo familiar * (asterisco), da seguinte maneira:

    : (* 9 7)
    63
    :

  8. Finalmente, a divisão é realizada com o símbolo / (barra):

    : (/ 9 7)
    1
    :

    Opa, isso não está correto! Dividir 9 por 7 é 1.28571, não 1. O que aconteceu? Até agora, você trabalhava com números inteiros (integer numbers). Por esse motivo, o LISP retorna os resultados como números inteiros, embora isso não fosse aparente até você executar a divisão.
    Para trabalhar com números reais, adicione um sufixo decimal, que pode ser como o .0 - isso converte números inteiros em números reais e força o LISP a executar a divisão de números reais, da seguinte maneira:

    : (/ 9.0 7)
    1.28571
    :

    E o LISP retorna a resposta correta com cinco casas decimais.

  9. Vamos ver como o LISP permite aninhar (nest) cálculos. "Nest" significa executar mais de um cálculo por vez.

    : (+ (- (* (/ 9.0 7.0) 4) 3) 2)
    4.14286
    :

    Observe como os parênteses ajudam a separar a sequência de aninhamento dos termos.

O Que vem a Seguir?

Ok, aprendemos como o BricsCAD funciona como uma calculadora cara, com quatro funções, mas essa “calculadora cara demais” é útil quando você emprega o LISP para executar cálculos dentro de comandos. No próximo post, mostrarei como você pode usar o LISP para desenhar uma matriz linear de sete círculos para caber em um espaço de 9”.


Download Grátis do BricsCAD por 30 dias

Comece a usar o BricsCAD hoje

Licenças permanentes ou por aluguel, que funcionam em todos os idiomas, em todas as regiões.


  1. Introdução
  2. 55 Dicas para Usuários do BricsCAD
  3. Configurações
  4. Mudar o Ambiente
  5. Interface de Usuário Personalizada
  6. Introdução ao Diálogo Personalizar
  7. Personalizar a barra de Menus & Menus de Contexto
  8. Barras de ferramentas e ícones de botão
  9. Escrever Macros e o Código Diesel
  10. Painéis e guias da faixa de opções
  11. Atalhos de teclas, aliases e comandos do shell
  12. Botões do mouse, clique duplo e tablet
  13. Absolutamente tudo o que você precisa saber sobre o Quad
  14. Propriedades de sobreposição
  15. Áreas de trabalho e a interface do usuário
  16. Projetando Painéis de Ferramentas e Estrutura
  17. Criando tipos de linha simples e complexos
  18. Padronizar Hachuras
  19. Decodificação de formas e fontes
  20. Codificação com texto do campo
  21. Escrevendo scripts
  22. Programando com LISP (Introdução)
  23. Funções LISP