Você está aqui: Visual LISP ::: Dicas & Truques ::: Layer, Layers

Como testar se uma layer existe em um documento do AutoCAD usando Visual LISP e uma função personalizada

Quantidade de visualizações: 219 vezes
Nesta dica mostrarei como podemos escrever uma função Visual LISP personalizada para testar se uma determinada layer existe em um documento do AutoCAD. Como acontece nas outras dicas, o primeiro passo é usar as funções vlax-get-acad-object e vla-get-ActiveDocument para obter o objeto AutoCAD e o documento ativo.

O passo seguinte é obter a coleção de layers usando a função vla-get-Layers. Note que nossa função personalizada recebe a coleção de layers do documento e o nome da layer a ser pesquisada e retorna verdadeiro ou falso dependendo da existência dela.

Nossa função Pesquisar_Layer faz uso das funções vl-catch-all-error-p e vl-catch-all-apply para verificar se há algum erro de automação na chamada à função vla-item, que acessa um item na coleção de layers. Se houver erro, então sabemos que a layer pesquisada não existe.

Veja o código Visual LISP completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

; Esta função mostra como testar se uma
; layer existe em um documento do AutoCAD
(defun c:Layer_Existe()
  ; o primeiro passo é obter o objeto AutoCAD
  (setq obj_autocad (vlax-get-acad-object))
  ; agora obtemos o documento atual
  (setq doc (vla-get-ActiveDocument obj_autocad))
  ; obtemos a coleção de layers  
  (setq colecao_layers (vla-get-Layers doc))
  
  ; agora vamos testar se a layer chamada "ESCADA"
  ; existe no documento
  (if (Pesquisar_Layer colecao_layers "ESCADA")
    (princ "A layer existe")
    (princ "A layer não existe")
  )
  (princ)
)

; função personalizada que recebe o nome de uma
; layer e retorna verdadeiro ou falso se ela existir
; ou não
(defun Pesquisar_Layer(colecao_layers nome_layer)
  (not
    (vl-catch-all-error-p
      (vl-catch-all-apply 'vla-item (list colecao_layers nome_layer))
    )
  )
)

Ao executar este código Visual LISP nós teremos uma de duas mensagens possíveis:

A layer existe
A layer não existe

Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de Visual LISP

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 48 usuários muito felizes estudando em nosso site.