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!!!
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 "
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!!!
Como carregar um arquivo Lisp no Autocad 2011 feito no Autocad 2006?
ResponderExcluir