Nas últimas postagens, vimos o método mais poderoso disponível para “não programadores” para personalizar BricsCAD - a linguagem de programação LISP. Neste post, concluirei nossa codificação LISP com 7 dicas para escrever código LISP.

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.

Dica #1: Use um Editor de Texto ASCII

BricsCAD tem seu próprio editor LISP integrado: BLADE. Para acessá-lo, basta entrar BLADE na linha de Comando.

O código LISP deve ser escrito em texto ASCII simples - sem caracteres especiais e sem formatação (como boldface ou color) do tipo que os processadores de texto adicionam ao arquivo. Ao programar LISP com, digamos, Word, então salve-o como um .doc-formato de arquivo (o padrão), BricsCAD simplesmente vai se recusar a carregar o arquivo LISP, mesmo quando a extensão do arquivo for .lsp.

Em um mundo cada vez mais Windows-izado, é mais difícil encontrar um verdadeiro editor de texto ASCII. Existe um, no entanto, fornecido gratuitamente pela Microsoft com o Windows chamado Notepad (Bloco de notas), que você encontrará na pasta \windows . Não use Write ou WordPad fornecidos com o Windows. Embora ambos tenham a opção de salvar em ASCII, às vezes você pode esquecer e ficará frustrado. O Linux oferece o excelente editor de texto Text Edit (também conhecido como Gedit), enquanto o Mac tem o TextEdit.

Quase qualquer outro processador de texto tem a opção de salvar texto em ASCII simples, mas não por padrão. Os processadores de texto têm vários termos diferentes para o que quero dizer com "formato ASCII puro". O Word chama isso de “Somente Texto”; O WordPerfect o chama de “Texto DOS”; O WordPad o chama de “Documento de Texto”; e Atlantis chama de "Arquivos de texto". Você entendeu a ideia.

Dica #2: Carregar o Código LSP em BricsCAD

Para carregar o código LISP no BricsCAD, você usa a função load . Aqui está um exemplo onde points.

lsp é o nome da rotina LISP:

: (load "pontos")

Você não precisa digitar a .lsp extensão.

Quando BricsCAD não consegue encontrar points.lsp, você precisa especificar o nome da pasta usando uma barra ou duas barras invertidas - sua escolha:

: (load "\\BricsCAD\\points")

Depois de digitar algumas vezes, você descobrirá que fica entediante. Para resolver o problema, escreva uma rotina LISP de uma linha que reduza os pressionamentos de tecla, como esta:

: (defun c:x () (load “points”))

Agora, a qualquer momento você precisa carregar a rotina points.lsp , você apenas digita X e pressiona Entre, do seguinte modo:

: x

No Windows, você também pode simplesmente arrastar o .lsp arquivo do Gerenciador de Arquivos para dentro do BricsCAD. Observe que o código se move em uma direção: do editor de texto para BricsCAD; você não pode arrastar o código de BricsCAD de volta para o editor de texto.

Dica #3: Alternar as Variáveis de Sistema

Um problema em programação é: Como alterar um valor quando você não sabe qual é o valor? No BricsCAD, você encontra esse problema com as Variáveis de Sistema, muitas das quais são alternadores. Uma alternância de variável de sistema tem um valor de 0 ou 1, indicando que o valor pode estar desligado (0) ou ligado (1). Por exemplo, a variável de sistema SplFrame é por padrão 0: quando desligado, as polilinhas em spline não exibem seus pontos de controle.

Nenhum programador assume que o valor de SplFrame será zero apenas porque esse é seu valor padrão. No caso de alternar as variáveis do sistema, existem duas soluções:

  1. Empregue a função if para ver se o valor é 0 ou 1.
  2. Subtraia 1 e obtenha o valor absoluto.

Dica #4: Seja Limpo e Organizado

Lembre-se, sua mãe disse para você sempre pegar suas coisas. Este problema de configuração de variáveis de sistema aplica-se universalmente. Quando sua rotina LISP altera os valores das variáveis do sistema, ela deve sempre defini-los de volta para a forma como estavam antes de a rotina começar a ser executada.

Muitos programadores escrevem um conjunto de funções genéricas que salvam as configurações atuais no início da rotina, realizam as alterações e então restauram os valores salvos no final da rotina. Aqui está um fragmento de código que mostra isso, onde o valor original de SplFrame é armazenado na variável SplVar usando getvar e então restaurado com setvar:

(setq splvar (getvar “splframe”))

(setvar “splframe” splvar)

Dica #5: MAIÚSCULAS vs. minúsculas

Em (quase) todos os casos, a linguagem de programação LISP não se importa se você usa MAIÚSCULAS ou minúsculas para escrever o código.

Para legibilidade, existem algumas convenções:

  • Nomes de funções LISP em letras minúsculas.
  • Nos nomes de suas funções use Caixa Mista.
  • Variáveis do BricsCAD e nomes de comandos, todas em MAIÚSCULAS.

Como eu disse, o LISP não se importa e converte tudo em maiúsculas em qualquer caso. Ele também remove todos os comentários, excesso de espaço em branco, tabulações e caracteres de retorno. A exceção é o texto entre aspas, como prompts, que são deixados como estão.

Existem duas exceções onde LISP se importa: quando você está trabalhando com códigos de escape e a letra T.

Códigos de escape são usados em strings de texto e devem permanecer em letras minúsculas. Por exemplo, \e é o caractere de escape (equivalente a ASCII 27) e \t é o caractere da tabulação.

Nota: eles usam barras invertidas; é por esta razão que você não pode usar a barra invertida para separar os nomes das pastas, ali na Dica #2. O LISP iria interpretar que você estava digitando um código de escape.

E algumas funções usam a letra T como uma flag. Deve permanecer em MAIÚSCULAS.

Dica #6: Marcas de Citação como Marcas de Citação

Como vimos, a linguagem de programação LISP usa aspas (”) para as strings. Portanto, você não pode usar aspas para exibir aspas e polegadas, como exibir 25 polegadas como 25″.

A solução nestes casos é usar os códigos de escape mencionados acima na Dica #5, especificamente o código octal equivalente para o caractere ASCII para as aspas. Parece complicado? Isto é. Mas tudo que você precisa saber é 042. Funciona assim:

Primeiro, atribua as strings a variáveis, da seguinte maneira:

(setq disttxt “O comprimento é“)
(setq distval 25)
(setq qumark “\042“)

Observe como atribuí octal 042 à variável qumark. A barra invertida informa ao LISP que os números a seguir estão em octal. Octal, a propósito, é metade de hexadecimal: 0 1 2 3 4 5 6 7 10 11 12 … 16 17 20 21 …

Em seguida, concatene as três strings junto com o strcat função:

(strcat distxt distval qumark)

Para produzir o prompt:

O comprimento é 25″

Dica #7: Abas e Marcas de Citação

Vijay Katkar está escrevendo um código para uma caixa de diálogo com uma caixa de listagem. Ele me disse: “Eu quero exibir strings nele - assim como a caixa de diálogo exibida pelo comando Camada . Consigo concatenar os valores e imprimir as strings, mas não há alinhamento vertical, pois as strings têm comprimentos diferentes. Tentei usar o metacaractere tab (\t) na string, mas ele imprime o literal '\t' na caixa de listagem. Existe alguma maneira de contornar este problema? ”

Lembro-me de um problema semelhante: como exibir aspas ou o símbolo de polegadas em uma string de texto?

Por exemplo, tenho uma linha de código LISP que desejo imprimir como:

O diâmetro é 2,54″

Normalmente, não posso usar o caractere de aspas (“) em uma string. LISP usa aspas como seu delimitador de string para marcar o início e o fim da string. Na seguinte linha de código:

(prompt “O diâmetro é 2,54”)

LISP vê a primeira aspa como o início da string, a segunda aspa como o final da string e a terceira aspa como um erro. A solução é o metacaractere \nnn. Isso me permite inserir qualquer caractere ASCII, incluindo caracteres especiais, como tabulação, escape e aspas.

A solução aqui é usar o código ASCII para as aspas, \042, assim:

(prompt “O diâmetro é 2,54\042“)

Da mesma forma, Vijay precisa usar o \009 metacaractere para espaçar o texto em sua caixa de diálogo. E, de fato, funcionou: “Pelo que você me disse, usei o mesmo e funcionou”.

O Que vem a Seguir?

Isso é tudo para a programação LISP! Junte-se a mim na próxima vez, quando mostrarei como criar caixas de diálogo personalizadas em BricsCAD.


Download Grátis do BricsCAD por 30 dias

Comece a programação LISP hoje

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