Cómo trabajar geometría de manera bidireccional Revit – Dynamo

Dynamo no solo nos permite tratar datos y parámetros de Revit, sino que también nos permite trabajar con geometría. Puede ser geometría simple paramétrica, creada desde 0 de Dynamo, o puede ser geometría compleja que Revit no permite hacer fácilmente. También nos puede ayudar a sacar información útil de la geometría ya existente, como parámetros de medición, localización o coordinación.

Como vimos en el post anterior, Cómo gestionar los datos y sus listas en Dynamo, este programa incluido en Revit, nos permite tratar la información que contiene nuestro proyecto, pudiendo provenir de un parámetro de sistema o creando un parámetro dentro de Revit para poder leerlo en Dynamo. También vimos que podíamos desarrollar nueva información a partir de la que ya tiene nuestro modelo y volcarla de nuevo para que la pueda manejar el usuario de Revit.

Pero otro de los grandes usos que tienen Dynamo complementario a Revit es la capacidad de trabajar con geometría. Nos podemos encontrar con dos casos:

El primero, es el de trabajar con geometría existente en nuestro modelo. Nos permite leer información de nuestro propio modelo, de un modelo enlazado o de un IFC. Con la información de la geometría podemos obtener información nueva que por defecto no nos da el elemento o podemos comprobar su ubicación.

El segundo escenario que nos podemos encontrar es el de tener que modelar formas paramétricas o geometrías complejas dentro de Dynamo y poder, siempre que queramos, convertirlas en geometría de familias.

¿Cómo leer geometría de mi modelo?

Dentro de Dynamo podemos leer a dos niveles distintos: quedarnos a nivel de elemento de Revit o, como pasa también en Navisworks, podemos leer la información geométrica del elemento. Por defecto, cuando seleccionamos un elemento en Dynamo, obtenemos el elemento. Eso lo podemos comprobar porque cuando lo tenemos seleccionado nos aparece siempre su código ID en color verde. Cuando, en cambio, vamos a coger su geometría, no nos mostrará ningún ID ya que solo nos selecciona los sólidos que lo componen.

Imagen 1. Cuando seleccionamos un elemento y cuando seleccionamos un sólido. Fuente propia.
Imagen 2. Distintos nodos que leen geometría de los elementos. Fuente propia.

Como ya podemos intuir con esta imagen, del elemento podemos obtener los distintos elementos geométricos que componen este elemento:

  • Element.Solid: Nos da, de cada elemento, el sólido completo que lo compone.
  • Element.Geometry: Es parecido al nodo anterior. Nos saca la geometría que compone el elemento en forma de sólidos. Si un elemento está formado por más de una geometría (puerta o ventana), nos daría un sólido por cada una de las geometrías que lo componen.
  • Element.Faces: Esta vez, en lugar de darnos un sólido completo, nos da cada una de las superficies que componen cada una de las caras del elemento.
  • Element.ElementFaceReference: Este nodo nos da la cara o superficie de un sólido y nos lo permite seleccionar como una referencia para poder modelar otros elementos.
Imagen 3. Nodos que leen las curvas de los elementos. Fuente propia.

Otras geometrías que podemos obtener, son directamente las curvas que componen los elementos de Revit.

  • Element.Curves: Nos da la información de las líneas que componen la geometría del elemento. Nos muestra el punto inicio de la curva y punto final de la curva.
  • Surface.PerimeterCurves: De cada superficie obtenida de la geometría, nos da las curvas que lo componen. Debemos ir con cuidado con este nodo, ya que se pueden repetir curvas coincidentes por caras.

También es importante que tengamos en cuenta que las curvas de Revit no son lo mismo que las curvas de Dynamo ya que tienen motores de geometría distintos. Es por eso que tenemos que convertirlas para poder trabajar con ellas con todos los nodos de Dynamo.

Imagen 4. Nodos relacionados con puntos. Fuente propia.

Por último, podemos llegar a obtener los puntos de las curvas y que, por tanto, nos pueda dar, por ejemplo, punto inicio y punto final. Algunos nodos de ejemplo:

  • Curve.StartPoint / Curve.End.Point
  • Curve.PointAtSegmentLength / Curve.PointAtPArameter
Imagen 5. Nodos de información geométrica. Fuente propia.

Una vez tenemos la geometría, también podemos sacar información de ella.

Podremos obtener área, volúmenes, perímetros, centroides, etc.

  • Solid.Area
  • Solid.Volume
  • Solid.Centroid
  • Surface.Perimeter / Surface.PerimeterCurves
  • Surface.Area

¿Cómo generar geometría en Dynamo para crearla en Revit?

Para poder generar geometría dentro de Dynamo, tenemos que hacer el proceso inverso. Debemos pensar: ¿Cómo se compone una geometría?

Si la geometría es el idioma de un modelo, los puntos son el alfabeto. Los puntos son la base sobre la cual se crea toda la otra geometría: necesitamos al menos dos puntos para crear una curva, necesitamos al menos tres puntos para hacer un polígono o una cara de malla, y así sucesivamente

Points | The Dynamo Primer
Imagen 6. Nodos de creación de puntos. Fuente propia.

Por tanto, deberemos empezar por la geometría básica para poder luego obtener las formas que compondrán nuestros elementos de Revit.

  • Point.ByCoordinates: Permite crear puntos dándole coordenadas x,y,z. Si añadimos un nodo “slider”, permite al usuario poder cambiar el valor más fácilmente.
  • Point.ByCartesianCoordinates: Permite colocar puntos, pero teniendo un “punto base” de inicio predeterminado. Nos deja dibujar en 0,0 porque, previamente, le hemos colocado el punto inicial original.
Imagen 7. Nodos para crear líneas. Fuente propia.
  • Line.ByStartPointEndPoint: Genera líneas a partir de puntos iniciales y finales.
  • Line.ByStartPointDirectionLength: Permite generar una línea a partir de un punto inicial, una dirección y una longitud.
Imagen 8. Nodo para generar sólidos. Fuente propia.

Después, también tenemos la opción de generar superficies a partir de curvas o polycurvas. Por tanto, tenemos que tener controlados nodos como:

  • PolyCurve.ByJoinedCurves: Une curvas para crear una única polycurva.
  • Curve.Join: Muy parecido al anterior. A partir de dos curvas te las une en una.
  • PolyCurve.ByPoints: Genera polycurvas a partir de puntos.
  • PolyCurves.Curves: Realiza la función contraria, divide una polycurva en tantas curvas necesarias.
  • Curve.ExtrudeAsSolid: Genera un sólido a partir de polycurvas y una distancia concreta.

Con todos estos elementos, y más que nos podemos encontrar en Dynamo, ya estamos listos para poder jugar con la geometría y la personalización. A partir de aquí, una vez decidida la geometría, podemos volcar esta a Revit.

Existen nodos que insertan familias dentro del modelo a partir de las curvas que hemos generado en Dynamo.  Siempre nos pedirá que introduzcamos el nivel donde aplicarlo y la familia que queremos usar. Automáticamente, se insertarán en el modelo.

Imagen 9. Nodos para colocar familias. Fuente propia.

Con todas estas herramientas de geometría de Dynamo, podemos imaginar hasta dónde puede llegar la evolución geométrica para nuestro modelo, tanto para generarla desde cero como para obtener información de la existente.

Pero es importante, antes de empezar a dibujar con Dynamo, saber qué es lo que queremos obtener y qué es lo que queremos que sea fijo para su creación o que el usuario pueda escoger su forma o sus parámetros.

Una vez escogido, ¡solo hace falta lanzarse a crearlo!

¿Quieres aprender más sobre el software de programación visual y modelado paramétrico Autodesk Dynamo? Consulta nuestra oferta formativa.

Artículos relacionados

1
Hola,
¿En qué podemos ayudarte?
Powered by

DESCUBRE NUESTROS CURSOS BIM

You have Successfully Subscribed!