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 “audit” “y”) ; audite o desenho atual (comando "-purge" "all" "*" "n") ; limpe todos os estilos não utilizados , etc (comando "-layer" "m" "1" "c" "1" "" "") ; crie camada "1" cor "1" (comando "-layer" "m" "2" "c" "2" "" "") (comando "-layer" "m" "3" "c" "3" "" "") (comando "-layer" "m" "4" "c" "4" " " "") (comando "VIEWRES" "y" "20000"); definir a resolução vista a máxima (comando "FACETRES" "10"); definir a resolução faceta max (setvar "filedia" 1); transformar diálogos de arquivo em ( setvar "attdia" 1) ; ativar os diálogos de atributos em (setvar "attreq" 1) ; ativar a edição de atributos no posicionamento (setvar "cecolor" "bylayer") ; definir o bylayer de cores atual (setvar "clayer" "0") ; camada para "0" (setvar "maxsort" 5000) ; defina o tamanho máximo da camada para 5.000 (comando "zoom" "e" "zoom" "0.95x") ; amplie o zoom, depois saia um pouco ) ;
 

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 (findfile "Layers.txt")); “não” = procurando nenhum resultado de findfile (alerta "Não é possível encontrar Layers.txt!");?! Nenhum arquivo Gritar com o usuário e saída (progn Caso contrário, faça o material no grupo progn (setq layerfile (aberto (findfile "Layers.txt") "r")) ; abra layers.txt para "read" (while (setq nome_do_aplicação (read-line layerfile)) ; durante a leitura de cada linha, armazene o texto para layername (comando "-layer" "m" layername "") ; faça layer com o nome de usuário ) ; termine o loop while (close layerfile) ; feche o arquivo Layers.txt ) ; progn ) ; termine o if

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!