Civil 3d - Tutoriais - 11.1 - Canal

Vamos fazer o seguinte, Um canal, com escavação em rocha e solo. As paredes tem inclinações, banquetas já conhecidas, deste exemplo. Basicamente é isto:

Veja que para dar certo, precisaremos ter as superfícies do terreno natural e precisamos conhecer a espessura da camada de solo. Bem... o terreno natural é fácil, vem do levantamento topográfico e isso você já deve ter. no meu exemplo, eu "criei" uma topografia fictícia, com duas 3DPOLY, usando-as como breaklines.
Baixe-as.

Feito isso, criei a surface TERRENO, e adicionei estas breaklines. Se bem que seria interessante usar a SUA própria topografia, ok?

O passo seguinte, será fazer a surface da rocha, para isso imagine que nossas sondagens acusam uma camada de solo de cerca de 5 metros de espessura... bem... será que podemos considerar uma camada uniforme? Isso é você quem decide ai no seu projeto, para efeito de exemplo, a minha cada é de 5 metros e fim de papo, hehehe

Vamos lá, crie agora outra surface, chame-a de ROCHA. Agora cole o terreno dentro dela.

Opáááááá!!! Como assim Bial????
Assim:


Expanda "Surfaces/ROCHA/Definition/Edits" e clique o botão direito do mouse sobre o o "Edits" e escolha "Paste Surface". Escolha a surface TERRENO e clique OK:

Agora, vamos fazer a surface ROCHA estar 5 metros abaixo desta, para isso, no menu anterior ("Surfaces/ROCHA/Definition/Edits", botão direito) escolha "Raise/Lower Surface". O civil 3D irá pedir para informar quanto mover na direção "Z", vertical, como preferir. Informe 5 negativo, para que a surface da ROCHA desça.
Pronto você já deve ter algo parecido com isso:

É, tosco, eu sei... mas baixe assim mesmo, hehehe!!!

Crie o alinhamento e o perfil do canal:




Viu como o perfil da ROCHA ficou 5 metros abaixo do perfil do TERRENO?
O greide do undo do canal eu arbitrei uns 10 metros de profundidade, com caimento de 0,26%.
Baixe o alinhamento com o perfil

Agora, a perte "difícil":
Modelar a seção tipo. Veja a primeira imagem:

Na verdade, são dois taludes escalonados, apenas isso...
Para fazer o fundo, vou usar a SUBASSEMBLY "LinkWidthAndSlope" e as paredes serão feitas com "DaylightBench", um para a rocha e outro "pendurado" a este para o solo. Veja que tomei o cuidado de nomear cada SUBASSEMBLY, na hora de setar os TARGETs do corridor (sim, modelaremos um corridor!!!).



Veja ainda que o SUBASSEMBLY "DaylightBench" tem "CUT" e "FILL", como se trata de um canal, não vou usar a parte "FILL" deles. Por isso o SUBASSEMBLY "DaylightBench" correspondente ao terreno está pendurado na parte "CUT" do "DaylightBench" da rocha.

Os valores dos parâmetros de cada subassembly é por sua conta!!! Exercite isto tentando imitar a seção dada!!
Veja como fica.

Então, vamos modelar o corridor!!!
A tela principal:


Os "targets":


A surface dos códigos "Datum":


E sua "boundary" pelo "DayLigth" mais externo:


E pronto, uma vista superior:


Estará certo isso??? Vamos fazer umas seções pra ver!!!

Escolhi seções de 20m em 20m, com 30m para cada lado e desenhei as "sections views":


É... deu certo, vamos pintar as seções com os cortes em solo e em rocha?
Para isso, acesse as propriedades das "SAMPLE LINE GROUPS" e vá na aba "Material List", crie duas como na figura:


E o resultado:


Agora, use o comando ADDMATERIALVOLUMETABLE:


Escolha o material "CORTE SOLO", depois repita para "CORTE ROCHA":


A tabela eu usei o estilo "Standard", só tirei o preenchimento....
Pra finalizar, o canal em 3D:


Veja o resultado final

NETLOAD - que saco!!

Fez sua ".net" dll e toda vez que vai usar ela tem que usar o netload? Resolveu ela com lisp:
(command "netload" "c:/testenet.dll")???
Credo!!! Eu também já me encomodei com isso... em fim, eu fiz uma gambiarra aqui que pode te ser util, primeiro pegue aquele pequeno teste de vb.net, ou copia este:

mais...


Public Class teste
'o autocad em si
Public acadApp AsIAcadApplication

Public Sub New()
'17.0? = cad 2007
'17.1 = cad 2008
'17.2 = cad 2009
acadApp = GetObject(, "Autocad.Application.17.1")

'adiciona o loader ao registro:

'calcula a chave de registro:
Dim acadkey As String = SystemObjects.DynamicLinker.ProductKey & _
"\Applications"

'monta a string da localização da DLL:
Dim loader As String = My.Application.Info.DirectoryPath & "\" & _
My.Application.Info.AssemblyName & ".dll"

'cria e/ou abre uma chave para sua aplicação:
Dim key As RegistryKey = Registry.CurrentUser. _
OpenSubKey(acadkey, True). _
CreateSubKey("TESTE")

'caso voce mude a pasta onde está instalada, deve atualizar no registro:
If key.GetValue("LOADER") <>loader Then
With key
.SetValue("DESCRIPTION", "TESTE,este é um teste de AUTOLOAD")

'estes valores não mudam:
.SetValue("LOADCTRLS", 12, RegistryValueKind.DWord)
.SetValue("MANAGED", 1, RegistryValueKind.DWord)
.SetValue("LOADER", loader)

'aqui, adiciona a lista os comandos criados:
With .CreateSubKey("Commands")
Dim mtr() AsObject = {"DESENHALINHA","TESTE"}
ForEach k In mtr
.SetValue(k, k)
Next
End With
End With
End If

End Sub

<CommandMethod("TESTE")> _
Public Sub TESTE()
MsgBox("OLÁ MUNDO!")
End Sub
'expoe a sub como um novo comando do autocad
<CommandMethod("DESENHALINHA")> _
Public Sub desenhalinha()
Dim Thisdrawing As IAcadDocument = acadApp.ActiveDocument
Dim pt1(2), pt2(2) AsDouble
Dim linha As AcadLine
Dim lay As AcadLayer

'pede o primeiro ponto:
pt1 = Thisdrawing.Utility.GetPoint(, "Entre com o primeiro ponto")

'pede o segundo ponto:
pt2 = Thisdrawing.Utility.GetPoint(pt1,"Entre com o segundo ponto")

'desenha uma linha:
linha = Thisdrawing.ModelSpace.AddLine(pt1, pt2)

'troca o layer, criando se ele nao existe:
Try
linha.Layer = "layer_teste"
Catch
lay = Thisdrawing.Layers.Add("layer_teste")
linha.Layer = "layer_teste"
End Try

End Sub

End Class

A idéia é usar o registro do windows, como descrito aqui

Este exemplo, gerou estas linhas no registro:


Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7000:409\Applications\TESTE]
"DESCRIPTION"="TESTE, este é um teste de AUTOLOAD"
"LOADCTRLS"=dword:0000000c
"MANAGED"=dword:00000001
"LOADER"="I:\\vbnet\\TESTE\\teste\\bin\\Release\\teste.dll"

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7000:409\Applications\TESTE\Commands]
"DESENHALINHA"="DESENHALINHA"
"TESTE"="TESTE"



Veja que adicionei algumas linhas na sub "NEW" da minha classe, que faz o trabalho de adicionar ao registro os parâmetros necessários ao autoload.

Assim, só é necessário UM netload, que acaba funcionando como uma instalação. Se você fechar o autocad e abrir novamente, bastará digitar o nome do comando que você criou na sua dll, basta apenas que a inclua naquela lista, deste exemplo:
Dim mtr() AsObject = {"DESENHALINHA","TESTE"}
"DESENHALINHA" e "TESTE" são os nomes dos comandos implementados nesta dll.

Se quiser, baixe aqui o código fonte para o cad 2009. Caso tenha anteriores, apenas troque as referências:

Itaipu - A obra

Opa pessoal!!!, sei que faz um tempo que não posto algo sobre o Civil 3d ou lisp, mas é que estou de férias hehehe, logo que voltar eu posto, blz?
Enquanto isso, baba:

Até emprestei um "brinquedinho" hehehehe:



Itaipu


Eu já estive lá diversas vezes, mas não te como não se impressionar!!!

Quando você for lá, vá na visita mais cara, pois compensa!!

E se você tiver tempo, faça um estágio de férias, pois os turistas não vêem nada da grandiosidade da ITAIPU!!! Hehehehe

Civil 3d - MORE!!! MORE!!!

Buenas Moçada!!
Ultimamente tenho recebido muitos mails perguntando se eu não tenho material "extra" sobre o civil 3d e tals, se vai sair um livro.... bom, ter, eu tenho, além dos tutoriais que estão aqui, de graça, ou em pendrive, tenho coisas mais avançadas, dicas etc... e estou pensando em lançar um livro.

Então, queria saber de vocês, o que acham, o gostariam de ver no livro, o que esperam dele... pensei até junto do livro ir um cdrom com os dwgs dos tutoriais, os programinhas que menciono nestes tutoriais, em fim...

O que acham?

Cotar curvas de nivel

Você ainda não usa o civil 3d? ok, tudo bem, hehehe
E quando você quer cotar curvas de nível, como você faz? Usa o comando "text"?
aff... que tal agilizar isso um pouco?
Só pra exercitar um pouco:
mais...
(setq dc1:altura 1.0
      dc1:estilo "ARIAL"
      dc1:alin "mc"
      dc1:layer "S-CURVA_TXT")

(
defun c:dc1 (/ tmp pt rot lst pt)
  (
tbn:error-init  nil)
  (
if (progn
      (initget  0 "S N")
      (
= "S" (getkword "\nQuer formatar o texto antes? <Sim, Não> [Não]")))
    (
setq tmp (getreal (strcat "\nQual a altua do texto? <" (rtos dc1:altura) ">"))
      dc1:altura (if tmp tmp dc1:altura)
          

      tmp (getstring (strcat "\nQual o estilo do texto? <" dc1:estilo ">") t)
      dc1:estilo  (if (= tmp "") dc1:estilo tmp )
          

      tmp (initget 0 "L C R A M F TL TC TR ML MC MR BL BC BR")
      tmp (getkword (strcat "\nAplicar o alinhamneto [L,C,R,A,M,F,TL,TC,TR,ML,MC,MR,BL,BC,BR] <" dc1:alin ">"))
      dc1:alin (if tmp tmp dc1:alin)
          

      tmp (getstring (strcat "\nQual o layer do texto? <" dc1:layer ">") t)
      dc1:layer (if (= "" tmp) dc1:layer tmp)))
  
  (
while (progn (if lst (initget 128 "U"))
       (
if (setq tmp (entsel (strcat "\nClique a linha no ponto onde a cota deve aparecer" (if lst " [Undo]" ""))))
             t
             (= 7 (getvar "errno"))))
    (
if (null tmp)
      (
prompt "\nOps!")
      (
if  (listp tmp)
        (
if (member (dxf 0 (car tmp)) '("LINE""POLYLINE""LWPOLYLINE""SPLINE"))
          (
setq pt (trans (cadr tmp) 1 0)
                pt (vlax-curve-getClosestPointTo (car tmp) pt)
                tmp (draw-text (itoa (fix (arred (caddr pt) 0)))
                      pt
                      dc1:layer

                      (rot-of-ucs (get-tan-of-pt (car tmp) pt))
                      dc1:altura
                      dc1:estilo
                      dc1:alin
)
                lst (cons tmp lst))
          (
prompt "\nEste elemento é inválido..."))
        (
if (= tmp "U") (progn (del-ent (car lst)) (setq lst (cdr lst)))))))
  (
tbn:error-restore))


(defun arred (num dec /)
  (
atof (rtos num 2 dec)))
(
defun rot-of-ucs (rot / rucs)
  (
setq rucs (angle '(0 0) ;ucs
         (trans
           (polar (trans '(0 0) 1 0) rot 1) ;vetor wcs
           0 1 ;WCS -> UCS
           )))
  (
if (and (>= rucs (/ pi 2)) (< rucs (* 3 (/ pi 2))))
    (
+ rot pi)
    rot))


Link(s) da(s) subrotina(s) usada(s):
tbn:error-init, dxf, draw-text, arred, rot-of-ucs, get-tan-of-pt, del-ent, tbn:error-restore

Pra usar é simples, tenhas as curvas de nível, claro, em 3d, senão nem adianta
e carrega esta lisp (e as demais dos com os links) e use, é bem simples!!

Tem preguiça de baixar cada lispezinha?, pegue logo o programa compilado, é só baixar e usar!!

Tutoriais em pendrive ou cd

Gostou dos tutoriais disponiveis aqui no blog? Gostaria de tê-los impresso, ou no seu pc, para consulta offline?
Você não tem tempo de copiar daqui mesmo?

Seus problemas acabaram!!

Já estão disponíveis em CD e pendrive, todos os tutoriais do civil 3d!!
Acompanham os programinhas disponiveis aqui, ok? (para nao causar confusão: adquirir os tutoriais não dá direito às licenças dos programas que os acompanham)

A precinhos módicos, hehehe!!!


Ajude a manter o blog, faça seu pedido!!
Ao lado tem links para contato com o msn, yahoo e skype e voce pode falar direto comigo

C3DRENESG - Novas Funcionalidades



  1. Melhorada a validação da rede

  2. Detalhamento de erros, com zoom nos elementos com problema

  3. Proteção por hardlock

  4. A versão full e demo são a mesma, escolha pelo hardlock

  5. Implementação dos botões Desfaz/Refaz

  6. Preview do perfil do trecho selecionado, com marcação do cobrimento ou profundidade máxima não satisfeito

  7. Cálculo da escavação e reaterro das valas onde são assentados os tubos


veja:


Veja mais aqui

ou baixe aqui
Contribua!!, dê sugestões, faça perguntas!!!!
Os comentários daqui estão tão parados...

Você obteve "su" autocad aonde? é o fim... ah se minhas professoras de português vissem isso, hehehe
Comentários a respeito do resultado:
O emule é realmente excelente!!
se não está nele, ou nela não é importante!! hehehe

Discorda? Solta o verbo então!!!

Page rank 1?
Legal!!! não é 10, mas já quer dizer que o blog é mais visto que muito abacaxi por aí, hehehehe

Obrigado a todos que comentaram, perguntaram ou apenas vistam o blog!!!!

Estão todos convidados a contribuirem de alguma forma, seja com críticas, sugestões, ou até mesmo com seus programas e dicas!!!

Quer dar a sua dica? mande-a para o meu email (neyton@yahoo.com) e terei o maior prazer em publicar!!

Ah, claro quem qui$er ajudar, $inta-$e a vontade, hehehehehe!!!!

LSP2HTM

Como diria o zeca pimenteira:
Tuuuuudo maaaaaaaaaiiss ou meeeeeenoooossss ééééééééé?????

Você já viu os códigos lisp daqui do blog coloridos né?
já viu que é possível converter seus códigos para serem postados em outras páginas também, correto?

Agora que tal implementar isso em PHP no seu forum?

Sim é possível!! no www.autolisp.com.br já roda a primeira versão desse aplicativo a um bom tempo (obrigado marcos, por permitir!!! hehehe)

Agora, além de visual lisp o programa também interpreta DCL!!!

para funcionar, requer o PHPBB rodando
no seu forum e é claro é preciso adicionar o suporte ao código....

Se você não sabe do que estou falando, use a versão em javascript mesmo, não esquente com este "post", hehehehe

Mas vamos lá, baixe o programinha e siga as instruções do arquivo readme.txt

Se tudo der certo, vai ficar assim:


Veja que adicionei os botões "DCL" e "LSP" alem dos tradicionais "Quote", "Code" etc ao formulário de postagens do forum phpbb e veja como fica postado, bacana não?


Dtal 3.0

Depois do DTAL, do DTAL 2 a vingança, Chega neste momento: DTAL 3.0!!!

Desenha o pente tradicional e agora desenha os triângulos no início da linha:


Ah, desenha vazado também!!

Civil 3d - Tutoriais - parte 12.2 - PipeNetworks - Edição de estruturas


Ok, ok, ok!!!! como diria aquele cara da redetv, hehehe



Já temos uma lista de material, fizemos um lançamento básico, mas... não tem os
tamanhos das caixas que queremos....

Isso é um problema se você se importa em apresentar um desenho onde as caixas tem seus tamanhos reais, mas não se você só apresenta uns esquemáticos...



Se você faz a segunda opção... lamento... tu é muito preguiçoso, não??

Então vamos fazer ter os tamanhos que queremos!!!

Pegue o dwg do tutorial anterior

Abra o PartBuilder:



Pra começar, vamos fazer a CL (caixa de ligação), escolha a "Junction Structure without frame":



Veja que estou editando Structures, hein?, ao selecionar a caixa correta, clique o botão que tem uma caderneta e lápis...

Vai abrir um desenho.... opa!!!!!!!

Abrir desenho? que desenho???

É um desenho que esta na pasta:

"C:\Documents and Settings\All Users\Dados de aplicativos\Autodesk\C3D 2008\enu\Pipes Catalog\Metric Structures"

Se você usa o windows XP



Aliás, ali tem outros arquivos que compõe o catálogo de desenhos que possibilitam tudo funcionar... não mexa em nada se não souber o que está fazendo!!!



Voltando... Notou que abriu uma janela escrito "ContentBuilder":





Tem uma carretada de coisas ali...

Como só vamos adicionar os tamanhos das caixas que queremos, não vou me ater a todos os detalhes....

Selecione "Size Parameters" e clique o botão direito do mouse sobre ele.... escolha "Edit Values"





Na nova janela que se abre estão os parâmetros que são usados para criar o modelo tridimensional da caixa



É tudo paramétrico, largura interna, espessura da parede, altura...

Confesso que não estudei tudo ainda, hehehe

Os parâmetros que nos interessam são SIW e SIL, "Structure Inner Width" e "Structure Inner Length" respectivamente (está invertido eu sei...)



Ah para saber o que cada código quer dizer, escolha no menu "Parameter Configuration":





Bom, selecione o valor que está em SIW, e clique Edit:



Vai aparecer uma lista dos valores possíveis. No meu caso, está configurado para
milímetros (Veja o seu caso em "Parameter Configuration", na coluna do SIW)

Editei estes valores para (veja quantas janelas):



É isso.... repita o processo para o SIL (largura interna da caixa)

É provável que sua caixa seja de concreto com 15cm de largura, como as que eu uso, então altere o valor do "Wth" (wall tickness, ou espessura da parede) para 150mm (unidades, não esqueça...)



Reparou que tem um modelo 3D da caixa aberto? Dê uma olhada no desenho!!!



Expanda "Model Parameters" em "Modeling", ali você verá como os parâmetros se relacionam
através de equações:



Não esquente com estas equações, nem com os valores que algumas variáveis possuem, elas estão ali apenas para que algo seja desenhado...



Bom, Agora que já alterei as dimensões internas (SIL, SIW) e parede (Wth), edite também a espessura da laje de fundo (Fth, floor tickness)



Reparou que a nossa caixa não tem tampa?... Isso pode ser um problema!!

Vamos adicionar uma tampa!! Em "Size Parameters", clique ADD



Na janelinha, escolha "Slab Tickness", ela corresponde ao parâmetro SSTh, e será a nossa tampa:





Agora procure na lista, onde está o SSTh, configure-o para aceitar uma lista de valores, e edite para
milímetros as unidades:





Configurando como LIST o tipo de origem de dados, podemos pré configurar valores para a espessura da tampa e também evitar que valores quebrados sejam inseridos ali.



Com isso, vá em "Values" (trocando naquele dropdown no meio desta janela), ache o SSTh e edite os valores, clicando o
Edit:



Ainda falta fazer ele entender o que fazer com isso!! Para tal, temos de editar o modelo:





Vai aparecer uma tela com as descrições e valores/equações usados no modelo. Basicamente vamos fazer ele saber que a estrutura tem tampa, e deve computar isso no
cálculo da altura total da estrutura.



A altura é dada pelo parâmetro LenB1, olhe o modelo 3d, é uma "dimension" com o texto "lenB1", coloque o parâmetro SSTh na sua fórmula:



Faça o mesmo com a fórmula do SBSH (Structure Height)

Por fim, coloque o valor 2 em SSTh, deverá ficar assim:





Ok, perfeito, só salvar, mas em vez de salvar apenas, vamos "salvar como", para termos a estrutura original intacta!



Para tal, clique "Save PartFamily As":



Com isso podemos criar a nossa CL:



Clique o botão "New Chapter" para criar uma pastinha, chame-a de CL, dê o nome da sua estrutura e a descrição e clique OK



Agora edite a "Part List" DRENAGEM, adicione a CL:



(Veja o tutorial 12.1 para saber como adicionar)

Adicione uma "Part Size" (idem) e edite a Pipenetwork "A"

Adicione uma CL do novo modelo (que acabamos de editar) e a inclua no perfil



Agora, peça as propriedades da caixa... veja que alem dos dados que a CL antiga tem, temos o "Slab tickness":



Para garantir que deu certo, coloque o "Rim to sump height" para 4m, vá no perfil e meça:



4.3m!!, claro, a tampa tem 15cm, e o fundo mais 15cm!!! e veja os blips, o do fundo está na no topo da laje de fundo

Veja o dwg como ficou

That's it!!

Arquivos FAS

Buenas moçada!!!
Vi no forum que ainda tem gente que não sabe criar arquivos fas, vamos lá, é bem simples!!!

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 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 facil, menos demorado (e trava menos o cad principalmente se você ainda usa o cad 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...
Já a opção "Localize Variables" serve para o compilador informar quais variaveis locais não foram declaradas como tal. Como você sabe, se uma variavel 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... 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 so "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!!!