Bem vindo de volta! Espero que depois de ler meus posts anteriores, você tenha decidido começar a escrever algumas rotinas de Lisp para ajudar a simplificar seu trabalho de CAD. Mas, se ainda não o fez, qual é o melhor lugar para começar? Eu acho que a melhor rotina para começar é aquela que automatiza sua configuração de desenho. Se você é como eu, você provavelmente muda um monte de configurações toda vez que inicia um novo desenho. A maioria dessas configurações: camadas, estilos e variáveis do sistema podem ser salvas em seu desenho de modelo (.dwt). No entanto, quando você abre um desenho que foi iniciado por outra pessoa, nunca sabe exatamente como ele foi configurado.
Por causa disso, os arquivos de uma fonte externa geralmente forçam você a gastar alguns minutos ajustando suas preferências para cada arquivo de desenho individual. Do outro lado da cerca: se você está enviando arquivos para um cliente, você quer trabalhar “seu jeito”Durante a criação do desenho, mas depois ajuste as configurações de acordo com os padrões do seu cliente. O primeiro exemplo de rotina Lisp abaixo é uma estrutura para automatizar o processo de configuração do desenho.
Uma solução simples
Essa rotina simples de configuração de desenhos pode funcionar para você, com apenas alterações mínimas. Aqui está o código com comentários e notas detalhadas nos comentários abaixo:
(defun c:mysetup() ;defina a função de linha de comando “mysetup”
(comando “auditoria” “y”) ;auditar desenho atual
(comando "-purge" "todos" "*" "n") ;limpar todos os estilos não utilizados, etc
(comando "-camada" "m" "1" "c" "1" "" "") ; criar camada “1” cor “1”
(comando "-camada" "m" "2" "c" "2" "" "")
(comando "-camada" "m" "3" "c" "3" "" "")
(comando "-camada" "m" "4" "c" "4" "" "")
(comando "viewres" "y" "20000") ;defina a resolução de visualização para o máximo
(comando "facetres" "10") ;defina a resolução da faceta para o máximo
(setvar "filedia" 1) ;ativa as caixas de diálogo de arquivos
(setvar "attdia" 1) ;ativa os diálogos de atributos
(setvar "attreq" 1) ;habilita a edição de atributos no posicionamento
(setvar "cecolor" "bylayer") ;defina a camada de cor atual
(setvar "camada" "0") ;defina a camada atual para “0”
(setvar "maxsort" 5000) ;defina a classificação máxima de camadas para 5.000
(comando "zoom" "e" "zoom" "0.95x") ;ampliar as extensões, depois diminuir um pouco
) ;encerra a função
Como esta rotina de configuração de desenho funciona?
Primeiro, você verá que cada linha individual nesta rotina de instalação de desenho poderia ter sido digitada na linha de comando no BricsCAD - e você provavelmente fará isso hoje. Ao envolvê-los em uma rotina Lisp, o defun (definir função) torna a rotina de configuração de desenho “chamable” a partir de um menu ou digitando seu nome na linha de comando do BricsCAD.
- Se não incluirmos o defun, o programa será executado uma vez, quando você carregá-lo pelo nome do arquivo. Usando o defun, e carregando esta rotina dentro do seu lsp disponibilizará a função a qualquer momento digitando o nome da sua função: mysetup.
Em seguida, olhe para o , se amarram. Os comandos com os traços precedentes (por exemplo -camada e -purga) são usados para impedir que as caixas de diálogo do comando sejam ativadas. Como primeiro passo ao abrir arquivos de outros, eu geralmente executo auditar seguido por um purga para remover itens não utilizados.
No caso do purga comando, muitas vezes eu executo várias vezes para remover itens aninhados. Aqui está um pouco de lógica Lisp adicionada que pode fazer com que três turfas aconteçam:
(repita 3 (comando "-purge" "all" "*" "n"))
Notar que purga é feito antes de adicionar as novas camadas vazias ... como elas seriam removidas se o fizéssemos depois!
O , chamadas para a definição de camadas podem ser combinadas em uma única instrução de comando, mas eu acho que é mais fácil de ler quando cada linha está sozinha. Filedia é uma configuração global (também conhecida como “variável de sistema”), portanto, não depende de desenho. Eu adiciono esses tipos de configurações a rotinas como essa para garantir que obtenho o comportamento esperado do novo desenho.
Max o que?
Eu incluí o maxsort definição por dois motivos. Primeiro, para mostrar que algumas configurações exigem um valor numérico em vez de uma cadeia de texto (observe as aspas faltantes em maxsortlinha de comando). Maxsort controla o número máximo de entradas da caixa de diálogo que serão classificadas. A segunda razão é que o “padrão de fábrica” para maxsort é 1.000. Com os computadores de hoje e muitas vezes encontrou arquivos de projeto maiores, esse número pode ser muito baixo. Se você abrir desenhos onde os nomes das camadas não serão classificados em ordem alfabética, o padrão será maxsort valor poderia ser o motivo!
Adicional setvar "Chamadas" incluem configurações de estilo para dimensões e texto, configurações de unidade, etc.
Um criador de camadas mais versátil para sua rotina de instalação de desenhos
Vou deixar você por enquanto com o seguinte exemplo, que poderia ser adicionado à sua versão do mysetup.lsp. Criando um arquivo de texto simples com um editor como o Notepad, podemos adicionar uma lista de nomes de camadas a serem criadas quando a rotina é executada. Esta é uma alternativa ao processo codificado mostrado acima. Usando o achar arquivo função, o BricsCAD irá procurar primeiro o diretório atual, em seguida, sequencialmente através de suas pastas de suporte definidas para encontrar o arquivo layers.txt. Sendo conhecido, você pode colocar seu arquivo de texto de configuração de camada padrão no caminho de suporte e colocar versões alternativas das pastas de projeto individuais. Dessa forma, você pode suportar layouts de múltiplas camadas facilmente.
(se (não (encontre o arquivo "Layers.txt")) ;“not” = procurando nenhum resultado de findfile
(alerta "Não foi possível encontrar Layers.txt!") ;Nenhum arquivo? Grite com o usuário e saia!
(prog ;Caso contrário, faça as coisas no grupo progn
(setq layerfile (open (findfile "Layers.txt") "r")) ;abra layers.txt para "ler"
(enquanto (setq layername (arquivo de camada de linha de leitura)) ;durante a leitura de cada linha, armazene o texto no nome da camada
(comando "-layer" "m" layername "") ;cria camada com o nome da camada
) ;termina o loop while
(fechar arquivo de camada) ;fecha o arquivo Layers.txt
) ;termina o prog
) ;termina o se
Na próxima vez, levaremos esse processo de programa de configuração um pouco mais além, adicionando algumas informações adicionais ao seu arquivo de configurações externas e movendo as entidades existentes de uma camada para outra. Até então, feliz codificação!
Artigo agradável para começar. Eu tenho escrito o código LISP por mais de 20 anos. Tarefas simples básicas facilitam muito a vida.
Belo artigo, Vince. Lisp é uma ferramenta de script que você pode escrever e executar apenas com o humilde editor de notas.
O modelo Lisps que você mostrou tornará mais fácil para até mesmo um novato personalizar sua inicialização e executar os padrões.
Como um desenvolvedor Lisp, eu vi como inúmeras horas e frustrações podem ser salvas usando essas poucas linhas de LSP.
Então, qual seria a linha de comando no arquivo lsp para adicionar um caminho de suporte para a seção Suporte da impressora em Opções / Arquivos? Em outras palavras, quero adicionar um caminho a um determinado arquivo ctb localizado em uma unidade de rede para aparecer no Suporte da impressora.
Ei Matthew, você pode perguntar aos nossos desenvolvedores preenchendo uma solicitação de suporte aqui: https://www.bricsys.com/en-us/support/#63
Que tal um artigo sobre a melhor forma de executar a depuração do lisp no BricsCAD?
O BricsCAD V18.2 contém o Ambiente de Desenvolvimento Avançado BricsCAD LISP - chamado BLADE.
Ei Greg, veja isso: Entrevista de Steve J com Torsten - BricsCAD BLADE
Você usaria:
(comando “.audit” “y”)
forçar o uso da definição padrão de O comando?
ou Isso não é necessário? Eu sou um novato total Para Bricscad,
Eu tenho cerca de 35.000 horas usando OtterCad
Eu comecei a usar o Bricscad Shape
o LISP funciona no Bricscad Shape?
É considerado boa prática no BricsCAD e “o outro” usar tanto um período quanto um sublinhado precedendo o nome do comando e um sublinhado precedendo os nomes dos subcomandos, assim:
(comando “_.audit” “_y”)
O período garante que o comando original seja usado em vez de qualquer versão customizada do comando que possa ter sido definida em outro lugar. O sublinhado garante que a versão em inglês do nome do comando funcionará, mesmo quando o programa estiver sendo executado em uma versão não em inglês do aplicativo CAD.
Embora seja uma boa prática, se você tiver controle sobre seu ambiente e tiver certeza de que o código só será executado sob CAD em inglês, omití-los não causará nenhum dano.
Não há LISP disponível no produto BricsCAD Shape gratuito, mas ele é totalmente funcional em todos os outros produtos do BricsCAD Classic.
Como posso aprender mais sobre isso?
Oi, você pode verificar o nosso seção de ajuda. Além disso, não se esqueça de voltar ao blog como Steve Johnson estará cobrindo isso em mais detalhes em breve!