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.
Mudança de layers numa lisp
Moderador: Moderadores
- cracksther
- Diamante
- Mensagens: 1063
- Registrado em: Seg 13 Dez 2004 11:00:00 pm
Re: Mudança de layers numa lisp
[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!
;| 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
cracksther@gmail.com