Casos de uso LISP no BricsCAD - parte 2

Entenda mais sobre como LISP pode tornar seu CAD ainda mais poderoso e seu tempo mais produtivo.

Cadastrado em 23/01/2018 17:28
Atualizado em 23/01/2018 17:35

Notícia por Portal Graphics

Casos de uso LISP no BricsCAD - parte 2

Texto de Vince Aman*


Copie e gire fácilmente com LISP

Em contraste com o exemplo do .NET, que apontei no último episódio deste blog, aqui está um exemplo simples de um comando LISP usado para copiar e girar objetos:

(defun c:copyrotate (/ slset pt1 pt2)
(prompt "Select entities to Copy and Rotate:")
(setq sset (ssget))
(setq pt1 (getpoint "Specify copy base point:"))(terpri)
(setq pt2 (getpoint pt1 "Specify copy second point:"))(terpri)
(command ".copy" sset "" pt1 pt1 ".move" sset "" pt1 pt2  ".redraw")
(setq pt2 (getpoint "Specify rotate base point:"))(terpri)
(command ".rotate" sset "" pt2) )

 

Agora, esse é um programa curto! Como eu mencionei acima, este "comando" combina os comandos Mover e Rotacionar para um único comando.

O mesmo programa, com comentários:

No LISP, ponto-e-virgula marcam uma linha de comentários, então qualquer coisa depois não é processada.

(defun c:copyrotate (/ slset pt1 pt2)
; define a função de comando "copyrotate"
(prompt "Select entities to Copy and Rotate:")
; solicita ao usuário na Linha de comando
(setq sset (ssget))
; solicita ao usuário selecionar objetos
; a variável que contém os objetos é "Sset"
(setq pt1 (getpoint "Specify copy base point:"))(terpri)
; obtenha o ponto base da cópia "pt1"
(setq pt2 (getpoint pt1 "Specify copy second point:"))
(terpri)
;obter o segundo ponto de cópia "pt2"
(command ".copy" sset "" pt1 pt1 ".move" sset "" pt1 pt2  ".redraw")
; copiar objetos no lugar e mover o anterior ...
; a maneira mais fácil de copiar e girar um grupo de objetos recém-criado
(setq pt2 (getpoint "Specify rotate base point:"))(terpri)
; obter o ponto base da rotação ... como nota lateral,
; Prefiro usar o ponto base da cópia original como o centro de rotação
; para fazer isso, simplesmente remova ou comente a linha acima "; (setq pt2"
(command ".rotate" sset "" pt2)
gire o grupo anteriormente movido
)
; feche a função

Para melhorar a usabilidade de nossa função, podemos adicionar um ciclo "while" (para continuar pedindo mais seleções) e dar opções angulares, ativar / desativar Osnaps ou Ortho, etc...

Uma rotina LISP é demais?

Tendo apresentado isso, eu direi que há muitos casos em que uma rotinas LISP pode ser superadas. Se você está simplesmente executando uma série de comandos que não requerem "manipulação" dos dados entre as funções, ou onde a entrada de dados é contante, as macros de menu podem ser ainda mais eficientes do que o LISP. Mas, as macros de menu não podem ser projetadas com escolhas e podem ser "frágeis" - isto é, fáceis de quebrar - pois não conseguem lidar com erros. Minha recomendação? Tentar uma técnica híbrida - uma rotina LISP de uma linha, como:

*^c^c(command “Select” pause “copy” “p” “” “@” “@” “move” “p” “” pause pause “rotate” “p” “” “@” pause)

Esta "macro" LISP simples, mas elegante, funciona exatamente como o programa acima, com a repetição de função automática adicionando (* ^ c ^ c), e dá todo o feedback gráfico de um programa sofisticado. Simplesmente adicione um ícone a um dos seus menus usando a interface CUI e conecte a linha acima na seqüência de comando e você terá uma função de cópia+rotação super legal.

A ferramenta certa para o trabalho
Você pode estar pensando que é tão fácil usar Grips no BricsCAD e clicar com o botão direito do mouse para percorrer todas as opções. A minha resposta seria lembrá-lo de que eu sou (realmente) da velha escola e, enquanto uso Grips com freqüência, também sei que a tecla Esc sempre foi a primeira chave a morrer de abuso no meu teclado (é verdade). O principal ponto aqui é garantir que você esteja usando a ferramenta certa para o trabalho e, embora existam usos válidos para aplicativos .NET, não consigo me fazer escrever páginas de código compilado quando posso fazer o trabalho limpo com algumas linhas de LISP.

Felizmente, esta introdução atingiu seu interesse. Eu acho que você encontrará algumas dicas / sugestões úteis ao mergulhar no mundo do LISP. Lembre-se, trata-se de obter o seu trabalho de design feito de forma rápida e precisa.
Qual outra maneira melhor de usar os recursos incorporados no BricsCAD para que ele trabalhe da sua forma?

Post originalmente publicado no Blog da Bricsys, em inglês.

* Vince Aman - A Vince possui mais de 30 anos de experiência em Arquitetura, Engenharia de Manufatura e a indústria de software CAD e baseado em .dwg. Ele criou aplicativos personalizados Lisp para automação de processos, conversões de dados / arquivos e conversões de plataforma de programas. Você pode acompanhar Vince em www.vea-consulting.com.


Tags da postagem

BricsCAD DWG lisp AutoLISP AutoCad ARX brx Conhecimentos Técnicos

Comentários

Para comentar, acesse com seu Passaporte Archipèlagus validado.

Acessar