Comunidade
AutoCAD - Português
Bem vindo ao Forum de AutoCAD da Autodesk. Compartilhe seu conhecimento, faça perguntas e explore os tópicos mais populares de AutoCAD.
cancelar
Mostrando resultados para 
Mostrar  apenas  | Pesquisar então 
Você quer dizer: 

Alterar visibilidade de um bloco dinâmico de a partir de uma varável interna/externa

12 RESPOSTAS 12
SOLUCIONADO
Responder
Mensagem 1 de 13
guilherme_meurer
213 Exibições, 12 Respostas

Alterar visibilidade de um bloco dinâmico de a partir de uma varável interna/externa

Boa tarde, pessoal! Eu tenho uma ideia e gostaria de verificar se é possível sua implementação. Suponha que eu tenho a seguinte situação: 

- No AutoCAD eu tenho um bloco dinâmico com 3 visibilidades, que são nomeadas como A, B e C.
- Em cada visibilidade eu tenho um desenho diferente, aqui neste exemplo vamos considerar que na A eu tenho um quadrado, na B eu tenho um triângulo e na C um círculo. 
- Eu tenho também uma tabela dentro do AutoCAD que está vinculada a uma planilha externa, então tudo que eu mudo na planilha externa vai atualizar dentro do AutoCAD. 
- Dentro desta planilha/tabela, eu vou ter uma célula específica que vai servir de referencia para determinar qual dos desenhos do meu bloco dinamico eu devo apresentar. 
- Por exemplo, nessa célula eu vou ter os números 1, 2 ou 3. Se tiver o número 1, significa que eu devo apresentar o quadrado (visibilidade A), se tiver o numero 2 devo apresentar o triângulo (visibilidade B) e se tiver o número 3 devo apresentar o círculo (visibilidade C). 
- Atualmente, para fazer isso, eu preciso manualmente verificar qual é o numero que está na célula, clicar no bloco e alterar para a visibilidade que eu quero apresentar, o que demora bastante tempo. 

Minha dúvida: é possível utilizar uma rotina LISP ou VBA (ou talvez um pouco de cada) para fazer com que esse processo seja automático? Ou seja, o código irá ler a célula de referência e automaticamente mudar a visibilidade do bloco.

Se for necessário adaptar o nome das visibilidades não há problema (se precisar por exemplo que a visibilidade corresponda exatamente com a informação da célula, e passar a chamar elas de "1", "2" e "3" ao invés de "A", "B" e "C". Preferencialmente eu prefiro não precisar fazer essa adaptação, mas se for necessário não há problema. 

Desde já agradeço pela ajuda. 

Marcas (3)
Etiquetas (3)
12 RESPOSTAS 12
Mensagem 2 de 13
hmsilva
em resposta a: guilherme_meurer

Olá @guilherme_meurer é possivel sim.

Anexei uma rotina em lisp apenas como uma 'demo' e um ponto de partida...

Anexei também um dwg com uma tabela e um bloco dinâmico para teste.

 

Nesta 'demo' é pedido ao utilizador para efectuar a seleção, mas pode sempre ser feita sem interferencia do utilizador.

 

Espero que ajude
Henrique

 

EESignature

Mensagem 3 de 13
guilherme_meurer
em resposta a: hmsilva

Showw, funcionou mais ou menos como eu queria, precisei fazer algumas modificações no código para ele rodar mas a principio deu certo. Agora, vou fazer uma outra modificação, se você tiver alguma ideia pra me ajudar será muito bem vinda. Será o seguinte: 

Eu tenho um DWG padrão, que tem todas essas visibilidades. Esse DWG vai ser copiado para uma outra pasta, onde será desenvolvido o projeto em especifico, que ai sim dependendo do projeto vai ser a visibilidade A, B ou C. Eu sempre preencho tudo na planilha, pois tem outras coisas além do DWG. Eu quero fazer o vinculo dessa LISP de uma forma que sempre que eu abrir o DWG ele altere automaticamente, sem que eu precise selecionar a tabela e o bloco novamente, sabe? pois a tabela e o bloco sempre serão o mesmo, somente o valor da celula que vai mudar. De preferencia, queria que essa alteração fosse automática sempre que mudar o valor da célula, não necessariamente só quando abrir o CAD. Alguma ideia de como deixar isso fixo? Pois essa automação até ajudou, mas se tiver que sempre selecionar a tabela e o bloco, o tempo para alterar tudo no final vai ficar praticamente o mesmo sabe? 

Em anexo coloco a lisp "demo" atualizada e funcionando, já com as modificações que eu fiz. 

Mensagem 4 de 13
hmsilva
em resposta a: guilherme_meurer

@guilherme_meurer 

é possivel utilizando um 'reactor' tipo 'vlr-commandended' para apanhar o comando '_DATALINKUPDATE' cada vez que se altera a folha do excel...

É necessário o nome do bloco para quando se fizer uma procura na coleção de blocos se fazer a alteração da visibilidade.

O 'reactor' poderá ser carregado sempre que o dwg é aberto se se colocar o codigo no 'acad.lsp' ou no 'acadoc.lsp'

Só existe uma tabela no dwg, correto?

 

 

Espero que ajude
Henrique

 

EESignature

Mensagem 5 de 13

Sim, realmente só existe uma tabela no DWG. Eu nunca usei um 'reactor', conseguirias me ajudar de forma um pouco mais detalhada? Já ouvi falar e li algumas coisas, mas o máximo que usei foram as rotinas lisp diretamente, que é algo que to mais familiarizado. O nome do bloco atualmente é "teste" pois primeiro quero fazer tudo funcionar certinho, mas depois eu consigo ajudar os códigos com o nome correto quando eu realmente for usar, não será muito dificil.

Mensagem 6 de 13
hmsilva
em resposta a: guilherme_meurer

@guilherme_meurer vou sair do escritorio agora.

Mais tarde, quando regressar, faço uma demo para o 'Reactor' e a 'Callback'

 

Henrique

EESignature

Mensagem 7 de 13

Belezaa, sem problemas. Muito obrigado pela ajuda! 

 

Mensagem 8 de 13
hmsilva
em resposta a: guilherme_meurer

@guilherme_meurer aqui vai uma 'demo' de um reactor...

 

o nome do comando é

reactordemo

quando se chama a primeira vez inicia o rector e da segunda vez para o reactor...

 

Espero que ajude
Henrique

EESignature

Mensagem 9 de 13

@hmsilva amigo, funcionou perfeitamente, vou apenas modificar o código para funcionar de acordo com as funções que eu precisar, mas é exatamente o que eu estava esperando. Uma pequena dúvida: eu sei que pra deixar ele "fixo" eu preciso ajustar no CAD pra ele carregar sempre que abrir, isso sei fazer e já ta tranquilo. Mas para ativar o reactor em si, eu preciso ativar toda vez que abrir o arquivo ou se eu ativar uma vez e salvar ele já permanece ativo? 

De qualquer forma, te agradeço muito pela ajuda!

Mensagem 10 de 13
hmsilva
em resposta a: guilherme_meurer


@guilherme_meurer wrote:

@hmsilva amigo, funcionou perfeitamente, vou apenas modificar o código para funcionar de acordo com as funções que eu precisar, mas é exatamente o que eu estava esperando. Uma pequena dúvida: eu sei que pra deixar ele "fixo" eu preciso ajustar no CAD pra ele carregar sempre que abrir, isso sei fazer e já ta tranquilo. Mas para ativar o reactor em si, eu preciso ativar toda vez que abrir o arquivo ou se eu ativar uma vez e salvar ele já permanece ativo? 

De qualquer forma, te agradeço muito pela ajuda!


@guilherme_meurer o reactor pode ser salvo no acad.lsp ou no acaddoc,lsp e assim carrega sempre que se abrir um arquivo.

 

não é necessário a parte do comando, apenas colocar no acad ou no acaddoc o conteudo do ficheiro anexo.

 

Espero que ajude
Henrique

EESignature

Mensagem 11 de 13

Cara, perfeito, consegui aqui! Muito obrigado pela ajuda! 

Mensagem 12 de 13
hmsilva
em resposta a: guilherme_meurer


@guilherme_meurer wrote:

Cara, perfeito, consegui aqui! Muito obrigado pela ajuda! 


@guilherme_meurer fico feliz por ter podido ajudar!

Henrique

EESignature

Mensagem 13 de 13
clacampos
em resposta a: hmsilva

Olá @guilherme_meurer 

Obrigada pelo retorno com a solução é muito importante porque poderá ajudar outros usuários com a mesma duvida.

 


 

Você achou uma postagem útil? Então fique à vontade para curtir essas postagens!
Sua pergunta obteve uma resposta que resolveu a duvida? Então clique no botão 'Aceitar Solução ' .


Claudia Campos
Comunidade de Usuários Autodesk Português - Coordenadora

Não encontrou o que está procurando? Pergunte à comunidade ou compartilhe seu conhecimento.

Postar nos fóruns  

Autodesk Design & Make Report