Autolisp - Parte 2

Este post foi originalmente escrito em 2008 (!!!) e vai te ajudar a usar o VLIDE para compilar seu programa autolisp para arquivos FAS. Que é o autolisp compilado.

Sugiro voce ler atentamente o post inicial de autolisp, para aprender a escrever seu primeiro programinha!!!

Mas por que compilar? bem... Proteger o codigo fonte, agrupar um monte de programas lisp em um único arquivo, etc....

Primeiro abra o editor do visual lisp, com o comando VLISP
Em seguida, no meno "Project" escolha "New Project":



Vai pedir para salvar em algum lugar o novo projeto... Dica: SALVE NA MESMA PASTA QUE AS SUAS LISPS ESTÃO, assim, ao aparecer a tela abaixo, já vai estar preenchida a lista do quadro da esquerda com as lisps encontradas nesta pasta, veja:



No caso, salvei o projeto com o nome "f:/autocad/tbn2/lisps/tbn.prj"
ah, nomes de projetos tem que ser somente com letras e sem espaços, ok?

Apareceram diversas lisps (arquivos *.lsp) lá no quadrinho da esquerda... Selecione as que desejar e clique o botão ">". Pronto elas vão para o quadrinho da direita, isso significa que já fazem parte do projeto.

Agora digamos que queremos adicionar lisps que estão numa outra pasta qualquer...
Basta clicar o botão "..." que está o "Look in", procurar esta pasta e o quadrinho da esquerda será preenchido com as lisps ali disponíveis... Simples não?



Bom, agora, uma parte muito importante!! Clique a aba "Build Options":



Em "Compilation Mode" marque "Optimize", sinceramente não notei diferença significativa com o modo Standard, mas em fim... Algumas compilações podem ser problemáticas sem esta opção

No "Merge mode" você tem a opção de criar um arquivo FAS para cada lisp ou um unico arquivo FAS para todas as lisps. Eu uso um único arquivo FAS, para carregar depois é mais fácil, menos demorado (e trava menos o cad principalmente se você ainda usa o autocad 2000 em uma máquina lenta)

A opção "Message Mode" pode ficar na segunda opção, ela controla quais problemas serão mostrados na janela "Output" que é mostrada quando compilamos o projeto... logo você verá isso.

Deixe ainda a opção "Safe optimize" marcada... Também não notei nada em relação a isto..., mas em fim...

Já a opção "Localize Variables" serve para o compilador informar quais variáveis locais não foram declaradas como tal. Como você sabe, se uma variável local não é declarada como local, ela se torna global e isso pode comprometer a memória disponível para do cad...

Isso era problema antigamente, quando memória era um recurso caro, mas agora.... bem... O motivo seria não sobreescrever nomes de subrotinas por exemplo. Deixe marcado, para o caso de você não compilar o arquivo FAS para VLX, assim, não corre o risco de "contaminar" variáveis ou mesmo programas lisp de terceiros....

Na caixinha "Fas directory" é onde será salvo o arquivo FAS... clique o botão "..." e escolha esta pasta. Enquanto que a caixinha "Tmp directory" é uma pasta para onde vão os arquivos temporários gerados durante a compilação; escolha uma pasta DIFERENTE da pasta onde estão os lisps ou para onde irá o arquivo FAS, pos nesta pasta temporária estará cheio de arquivos *.ob" e isso só "polui" a pasta, hehehehe e poderão ser apagados posteriormente.

O botão "Edit Global Declarations" deixe quieto.. não é necessário editar nada lá...

Feito isso tudo, vai aparecer esta janelinha:



Experimente agora dar um duplo clique no nome de qualquer lisp desta janelinha!!!
bacana não? ela se abra, sem você ter que ir pelo menu "File"!!!

Bom, vê os 5 botões que estão na janelinha?
O primeiro mostra a tela de propriedades do projeto, aquele do "Project Properties"

O segundo, carrega o arquivo FAS se ele já estiver compilado, se não estiver, ele compila e carrega o arquivo FAS.

o treceiro carrega as lisps do projeto, uma a uma

O quarto compila o projeto, use quando for alterar muitas rotinas antes de recompilar

O quinto recompila, use quando fizer alterações em poucas lisps, demora menos...

Pra você ter ideia, o "output" do "tbn.prj" tem cerca de 2000 linhas, ao clicar o quarto botão... se fizer apenas a edição de uma lisp, apenas algumas coisas serão efetivamente alteradas no arquivo FAS e o quinto botão é a melhor opção.

Em fim, clique o quarto botão...
A janela "" vai aparecer...

Ela irá mostrar todos os erros e avisos ocorridos durante o processo de compilar:



Vê as linhas marcadas de azul? Vão aparecer algumas, quase sempre.... experimente clicar duas vezes uma delas....

Vai abrir a lisp correspndente na linha onde está o erro marcado!!! Bacana né?
Por exemplo, cliquei o aviso "; warning: run time evaluated expression: (READ X)"
e mostrou:



Bom, cabe a você analizar os erros... Neste caso, o aviso acontece porque usei a função EVAL e ela dá esse aviso sempre, isto é, se deixar a opção de mostrar avisos ligada....

As vezes vão aparecer erros, por exemplo de argumentos inválidos e ficará muito facil descobrir onde, basta dar uma olhada na janela "Build Output"

Feitas as correções, é so clicar o quinto botão:


Pronto, uma nova janela "Build Output" será criada....
Com erros e avisos ou não...

Agora vá ate onde o arquivo FAS deveria estar:


Agora veja a estrutura de pastas que criei... Lembra que a pasta temporária está em C:\temp?
as lisps estao na pasta LISPS e o FAS na pasta FAS.... ajuda a organizxar as coisas....

IMPORTANTE:
a ordem em que as lisps aparecem na janelinha acima FAZ TODA A DIFERENÇA!!!
AINDA MAIS SE VOCÊ COLOCA ALGUMA ROTINA PARA EXECUTAR IMEDIATAMENTE APÓS CARREGAR O ARQUIVO FAS COM O APPLOAD
porque: se você chamar a rotina assim:
(defun algumacoisa (/)...)

e colocar em algum outro arquivo lisp isto:
(algumacoisa)

este outro arquivo deverá VIR DEPOIS do arquivo lisp que contem a definição de (algumacoisa)

senão, ao carregar o arquivo FAS resultante, dará erro de função indefinida, sacou?


é isso...
Depois mostro como usar este projeto de arquivo FAS mais algumas DCLs e criar um módulo VLX que contém os dois, aí vai ficar mais profissional o esquema!!!

Um comentário:

  1. Como carregar um arquivo Lisp no Autocad 2011 feito no Autocad 2006?

    ResponderExcluir