Continuando nossa série sobre as funções elementares do Dynamo, hoje abordaremos os
métodos de Dynamo para seleção de elementos e a consulta de parâmetros. Estes dois conceitos são bem
simples e estarão presentes na grande maioria das rotinas que você for produzir.
Leia também :Uma introdução à programação visual com Dynamo
Selecionando Elementos
Existem alguns métodos de Dynamo para realizar a seleção dos elementos que serão
manipulados em uma rotina. Na parte esquerda do display encontramos estes métodos no
seguinte destino:
Revit -> Selection
Abaixo exploraremos alguns destes métodos de Dynamo com a sua explicação de funcionamento:
Select Model Elements
Este método de Dynamo consiste em realizar uma seleção manual de elementos no Revit e trazê-los para o
dynamo. Acaba não sendo útil na grande maioria das rotinas por ser manual, mas é
extremamente útil para realizar alguns testes controlados antes da finalização de uma lógica.
Além do Select Model Elements, também existe o Select Model Element, que funciona da
mesma forma, porém permite apenas a seleção de um único elemento.
All Elements of Category
Este método tem a intenção de selecionar todos os elementos de uma categoria. As categorias
são as mesmas que utilizamos para organizar famílias no Revit, tais como portas, janelas,
tubos, etc.
Para realizar esta seleção, além do node All Elements of Category, precisaremos do node
Categories, que tem a função de listar todas as categorias em uma lista suspensa para seleção.
No vídeo abaixo faremos a seleção de todos os elementos que são da categoria Tubulação
(Pipes).
Para utilizar este método precisamos apenas tomar o cuidado de sempre conferir a categoria
selecionada antes da execução. Como a seleção da categoria é feita através de uma lista
suspensa, é possível que o Dynamo perca a categoria que foi previamente selecionada. Isso
ocorre principalmente quando há a troca de idioma do Revit.
Para contornar este pequeno problema é possível realizar a seleção da categoria por um script
de python. Neste link
você pode encontrar mais informações para o desenvolvimento deste Script.
All Elements at Level
Muito similar ao anterior, o método busca elementos de diversas categorias que estejam
inseridos no mesmo nível de referência.
All Elements of Family Type
Realiza a seleção de todos os elementos de um tipo de família especificado. Funciona da
mesma forma que os dois métodos de Dynamo anteriores. Para a sua execução é necessário selecionar o
tipo de família através de uma lista suspensa.
No exemplo acima, constatamos que existem no nosso modelo 161 instância da família
Joelho
45_90 –Silentium
Estes são os métodos de Dynamo mais simples que podemos utilizar para fazer a seleção de elementos no
Dynamo. Com a seleção de elementos concluídas, nós podemos extrair valor destes elementos
através dos seus parâmetros. Esta funcionalidade será abordada no próximo tópico.
Consultando Parâmetros de Elementos
Considerando que nós realizamos a seleção de todos os elementos da categoria tubulação, nós
podemos então realizar uma consulta para saber quantos metros de tubulação de cada
diâmetro nós temos no projeto.
Para isso precisaremos consultar os Parâmetros
Comprimento (Length) e Diâmetro (Diameter).
Esta consulta pode ser realizada com auxílio do node Element.GetParameterValueByName,
(traduzido seria algo como: Obter o valor do parâmetro pelo nome).
Element.GetParameterValueByName
Este node requer a inserção dos elementos que você pretende verificar o valor (obtidos pelo
All elements of category), e requer o nome do Parâmetro a ser encontrado.
Como estamos utilizando parâmetros nativos do Revit, eles mudam de nome conforme o
idioma utilizado. Portanto, é necessário inserir o nome conforme o idioma que está
configurado no momento da utilização da rotina.
No vídeo abaixo, faremos a rotina objetivando a obtenção do parâmetro
Comprimento(Length):
Note que com a execução desta rotina já é possível saber que nós possuímos pouco mais de
386 metros de tubo. Essa informação ainda não está muito útil, pois precisamos fazer a
separação por diâmetros.
Para aprofundar nossa análise, utilizaremos um método de agrupamento.
List.GroupByKey
Este será o node responsável por agrupar os nossos tubos por diâmetro. Os diâmetros nesse
caso serão a nossa chave (key) de agrupamento.
Nós explicamos os conceitos de manipulação de listas, inclusive abordando a explicação do
List.GroupByKey neste texto.
O node irá solicitar uma chave, para isso precisaremos inserir como input os diâmetros dos
tubos que encontraremos pelo GetParameterValueByName.
Também solicitará a lista que será agrupada. No nosso caso será a lista de tubos.
Ao executar o ListGroupByKey nós recebemos como retorno 5 listas de tubos, cada uma
contendo os tubos de cada um dos diâmetros mostrados na seção Unique key list.
Consultando os comprimentos após o agrupamento
Agora é possível obter os comprimentos de cada um desses grupos, e somá-los
individualmente. Para isso podemos reaproveitar a mesma sequência realizada no tópico
Element.GetParameterValueByName.
Executando a rotina, o resultado foi a soma dos comprimentos em cada uma das listas, cada
lista representando um diâmetro de tubo.
Os métodos de Dynamo para seleção de elementos e obtenção de parâmetros são muito utilizados para
extrair valores dos dados presentes em nosso arquivo rvt.
Mesmo que a programação visual seja mais simples que a textual e com uma curva de
aprendizado mais acelerada, para que você desenvolva suas habilidades no Dynamo é
necessário treinar. Para auxiliar com isto nós disponibilizamos a rotina criada nesta postagem
para que você manipule e utilize nos seus projetos da forma que preferir.
Link para download
Esperamos que esta postagem auxilie você na sua caminhada rumo ao aprendizado de
dynamo. Até mais!