Mudança de layers numa lisp

Dúvidas sobre o AutoCAD...

Moderador: Moderadores

Responder
Avatar do usuário
luislhss
Concreto
Concreto
Mensagens: 66
Registrado em: Ter 23 Out 2007 11:00:00 pm

Mudança de layers numa lisp

Mensagem por luislhss »

Boa Tarde a todos.

Como gero uma lista dos layers a partir de um nome especifico que tenha em vários layers?

Uso (cons 8 "*Nome especifico dentro do layer*") individualmente para buscar cada nome especifico e realizar alteração dos objetos do layer.

Preciso fazer o que comando laytrans faz tendo apenas a lista de algumas partes do nomes e mudar todos esses layer para outro.

Exemplo:

(lista *arq* *layer* *Top) qualquer layer que tiverem esses nomes ir para o layer Arquitetura.

Eu conseguir fazer isso pra itens, mas acava não atingindo tudo que preciso.

Exemplo do que fiz:

(if (setq sel (ssget "x" (list (cons 8 "*_ARQ*"))))
(command "_.CHANGE" sel "" "_PROPERTIES" "_LAYER" "Arquitetura" ""))

(if (setq sel (ssget "x" (list (cons 8 "*_Layer*"))))
(command "_.CHANGE" sel "" "_PROPERTIES" "_LAYER" "Arquitetura" ""))

....

Só que isso atinge apenas itens que estejam nesse layer e preciso que altere no layer mesmo para ser mais eficiente.

Se alguém puder me ajudar agradeço muito.
Avatar do usuário
cracksther
Diamante
Diamante
Mensagens: 1063
Registrado em: Seg 13 Dez 2004 11:00:00 pm

Re: Mudança de layers numa lisp

Mensagem por cracksther »

[lsp]
;| String comum aos layers |;
(setq str "*caneta*")

;| Inicia a pesquisa na tabela de layers, retornará sempre o layer "0" o qual acredito que pode ser dispensado da comparação |;
(tblnext "layer" t)

;| loop p/ pesquizar o restanto dos layer |;
(while (setq lay (tblnext "layer"))
;| Nome do layer |;
(setq nome (cdr (assoc 2 lay)))
;| Verifica se a string comum está contida no nome do layer |;
(if (wcmatch nome str)
;| Adiciona o layer a lista |;
(setq lista (vl-list* nome lista))
)
)
[/lsp]

Acredito que conseguirá aplicar a lista gerada ao restante do código necessário

Até mais!
Marcelo Silva - Cascavel - PR
cracksther@gmail.com
Responder