MATRIZ PARAMÉTRICA EN FAMILIA DE REVIT.

En esta entrada se va a aprender cómo crear una matriz paramétrica en una familia de Revit.

La idea es crear una matriz paramétrica dentro del entorno de familias. Es decir, una matriz cuyo número de elementos varíe según una fórmula.

En esta entrada vas a aprender a:

  • Crear una matriz de elementos, que además sea paramétrica.
  • Mapear parámetros de familias anidadas a familias anfitrionas.

Todo esto lo vamos a aprender a través de un ejemplo muy sencillo, en el que vamos a crear un sofá paramétrico muy básico.

El resultado que queremos conseguir es una familia de sofá paramétrica que pueda variar sus dimensiones, adaptando el número de asientos en función de su longitud. La misma familia puede tener distintos tipos: sofá de 3 plazas, sofá de 2 plazas, sofá de 5 plazas…

Además, la familia es paramétrica en sus dimensiones de largo y ancho, así como la anchura del reposabrazos y soporte trasero.

Vamos a ir viendo cómo conseguirlo paso a paso:

Creamos una nueva familia de la categoría “Mobiliario métrico”.

Para ello, vamos, desde la pantalla de archivos recientes de Revit, a FAMILIAS > Nuevo…

En la ventana que se abre de “Nueva familia – Seleccionar archivo de plantilla”, seleccionamos la plantilla “Mobiliario métrico.rft”.

Nos vamos a encontrar con dos planos perpendiculares, que están bloqueados y que, en la paleta de propiedades, tienen su propiedad “Define origen” marcada.  Es decir, la intersección de ambos planos  define el punto de origen con el que se va a insertar la familia en un proyecto.

Tendremos que crear los planos y la geometría de la familia del sofá manteniendo la posición del origen de la familia en el punto en el se indica en la imagen a continuación. El motivo está relacionado con el modo en que hemos parametrizado la familia, como veremos un poco más abajo.

Vamos a crear los planos de referencia que se muestran en la imagen (representados con líneas discontinuas en verde), controlados por los parámetros que se indican. a continuación:

LARGO

ANCHO

ANCHO REPOSABRAZOS

Ahora tenemos que crear la geometría 3D del sofá, que va a ser muy básica, a base de extrusiones sencillas cuyos bocetos estén candados a los planos de referencia correspondientes.

Para el respaldo y reposabrazos creamos una extrusión de este tipo, y candamos las líneas de boceto a los planos correspondientes:

Para el asiento creamos una extrusión de este tipo, y candamos las líneas de boceto a los planos correspondientes:

Luego nos aseguramos de que ambas extrusiones tengan la altura deseada. En este caso, hemos decidido que no es necesario que su altura sea paramétrica.

Lo que hemos hecho hasta ahora es generar esta geometría paramétrica.  Antes de continuar, comprobamos que la familia funciona bien a nivel paramétrico. O, dicho de otro modo, y como dicen los angosajones: “we flex the family”.

Perfecto. Ahora lo que necesitamos es que se muestre el número de asientos que va a tener este sofá, en función de su longitud. Mostramos a continuación el objetivo que se persigue:

Y aquí es donde viene lo que realmente queremos explicar en esta entrada.

El concepto es el siguiente:

El número de asientos tiene que variar en función de la longitud del sofá.

Para conseguir esto, necesitamos una matriz paramétrica que varíe su número de elementos en función de su longitud.

Vamos a suponer que el ancho de cada asiento lo queremos de 65 cm aproximadamente.

El elemento que se va a repetir en la matriz es simplemente una línea de modelo, que representa la separación entre un asiento y otro.

En ese caso, el número de asientos del sofá sería el resultado de dividir la longitud del sofá entre 65 cm (número de asientos = longitud de la zona para sentarse / 65 cm). Hay que tener en cuenta que las líneas de separación entre los elementos, contando con las dos líneas de los extremos, serían una más (+1) que el número de asientos. En el ejemplo a continuación vemos que tenemos 4 asientos y 5 líneas, contando con las de los extremos.

Como el ancho del sofá es paramétrico (y aquí con el parámetro ANCHO nos estamos refiriendo a la profundidad del asiento), la línea de separación entre los asientos debe ser una familia, para que también pueda variar su longitud paramétricamente, acorde a la profundidad que tenga el asiento del sofá. Lo veremos un poco más abajo.

***NOTA: Si no hubiéramos querido que la profundidad del sofá fuera paramétrica entonces no hubiera sido necesario que esta línea fuera una familia, porque no sería necesario que variara su longitud, y por lo tanto, no sería necesario que su longitud fuera paramétrica. La profundidad del sofá la hemos hecho paramétrica a través del parámetro al que hemos llamado “ANCHO”. Podemos ver cómo el sofá es paramétrico para esta dimensión en las dos imágenes a continuación.

Para crear esta línea como una familia (para que pueda ser paramétrica), lo que vamos a tener que hacer es crear una nueva familia de la categoría Mobiliario. Esta nueva familia la anidaremos en la familia anfitriona del sofá, a la altura adecuada. Esta altura será la altura del asiento.

Una vez cargada esta familia anidada en la familia anfitriona, vamos a crear una matriz con esa familia anidada, y vamos a parametrizar el número de elementos de la matriz, para varíe en función de la longitud del sofá. Esto lo vamos a conseguir gracias a una fórmula.

Por otra parte, la longitud de la línea de modelo de esta familia anidada va a estar controlada por un parámetro de la familia anfitriona. Esto se consigue mapeando el parámetro de la familia anidada a otro parámetro de la familia anfitriona creado para tal fin. Lo veremos un poco más abajo.

Vamos paso a paso:

Lo primero que tenemos que hacer es crear una nueva familia de la categoría “Mobiliario”, con una línea de modelo en el “Nivel de referencia” cuya longitud esté controlada por un parámetro al que vamos a llamar, por ejemplo, “Longitud separación asiento”.

Además, vamos a colocarla con el origen coincidente con su extremo superior

Y vamos a candar sus extremos a los planos de referencia de definen la longitud de la línea.

A continuación, vamos a guardar esta familia, y vamos a cargarla en la familia anfitriona del sofá.

A la hora de cargar la familia vamos a tener cuidado de dónde la ubicamos en altura. Debe estar a la misma altura que la altura que tiene la extrusión del asiento.

Para ello, una vez cargada en la familia anfitriona del sofá, vamos a seleccionarla, y, en la paleta de propiedades, vamos a tener cuidado de elegir el valor correcto para el parámetro “Elevación desde el nivel”.

Otra opción hubiera sido crear un plano de referencia a la altura del asiento, darle un nombre y luego elegirlo para la propiedad “Nivel” de la paleta de propiedades, con “Elevación desde el nivel” = 0.

 Vamos a colocar esta familia (que es un línea de modelo), en esta posición:

Vamos a candarla al plano de referencia sobre el que se ubica.

A continuación, vamos a crear una matriz lineal con esta familia anidada, asegurándolos, en la barra de opciones, de tener marcado “Agrupar y asociar”, y “Mover a: Último”. Podemos dejar el “Número” en 2, como viene por defecto, ya que luego lo vamos a parametrizar. En la imagen más abajo podemos ver las opciones de debemos elegir.

El último elemento de la matriz lo colocaremos en el extremo opuesto de la zona de asientos del sofá, y lo candamos también:

Lo que tenemos hasta ahora es una matriz lineal con dos (2) elementos, para la que hemos definido la posición del elemento inicial y la del elemento final, que están candadas a los planos de referencia que delimitan el espacio para sentarse.

Por ahora tenemos solo dos (2) elementos, el inicial y el final. Lo que queremos hacer es que el número de elementos sea paramétrico, y varíe en función de la distancia entre el elemento inicial y el elemento final, es decir, del LARGO del sofá. Hay que tener en cuenta que el parámetro al que hemos llamado “LARGO” define el largo de la zona de asiento.

Para ello, seleccionamos cualquiera de los dos elementos de la matriz, para que se active el número de elementos de la matriz.

Y a continuación, seleccionamos la línea que hay debajo del número de elementos de la matriz, para que se resalte en color azul.

Acto seguido, miramos en la barra de opciones, y para el campo “Texto de etiqueta”, en el desplegable, elegimos <Añadir parámetro>, para crear un nuevo parámetro que controle el número de elementos de la matriz.

Vamos a crear un nuevo parámetro de familia, para el que vamos a definir los siguientes datos:

  • Parámetro de familia
  • Nombre: NÚMERO DE ASIENTOS
  • Disciplina: Común
  • Tipo de parámetro: Entero (es decir, que no va a tener decimales)
  • Agrupar parámetro en: Otros
  • Parámetro de: Tipo

Rellenamos todo esto en la ventana “Propiedades de parámetro”:

Luego, para definir el valor paramétrico de este nuevo parámetro que determina el número de elementos de la matriz (y, por lo tanto, el número de asientos) vamos a usar una fórmula.

Esta fórmula puede ser algo tan sencillo como esto:

Es decir, el número de elementos de la matriz va a ser igual al largo del sofá dividido entre 65 cm, más (+) 1.

El por qué esta fórmula es así, es porque el número de asientos va a ser igual que la longitud del sofá dividido entre 65 cm, pero el número de líneas de la matriz va a ser este mismo número + 1.

Recordemos la imagen que hemos visto anteriormente, en la que vemos que hay 4 asientos pero 5 líneas:

¡Y con esto ya estaría!

Así es como podemos conseguir este comportamiento paramétrico:

Por último, vamos a crear un parámetro al que vamos a llamar “ANCHO ASIENTO”, con los siguientes datos:

  • Parámetro de familia
  • Nombre: ANCHO ASIENTO
  • Disciplina: Común
  • Tipo de parámetro: Longitud
  • Agrupar parámetro en: Cota
  • Parámetro de: Tipo

Este parámetro va a servir para poder controlar el largo de la línea de la familia anidada que representa la separación entre los asientos.

El valor de este nuevo parámetro al que hemos llamado “ANCHO ASIENTO” va a ser el resultado de una fórmula.

Este parámetro en realidad no es un parámetro que esté controlando ninguna geometría de la familia. Es simplemente un parámetro que está devolviendo un valor. Este valor es el resultado del ancho total del sofá menos el ancho del reposabrazos (que es al mismo ancho del respaldo, según nuestro diseño).

Este parámetro es el que vamos a utilizar para mapear el parámetro que define la longitud de la línea de modelo de la familia anidada.

Para hacer esto debemos seleccionar la familia anidada para acceder a sus propiedades de tipo.

Para ello, seleccionamos la familia anidada en el Navegador de proyectos y, sobre el tipo, utilizamos el botón derecho del ratón para, en el desplegable que se abre, acceder al botón de “Propiedades de tipo…”

En la ventana que se abre de “Propiedades de tipo” buscamos el parámetro al que habíamos llamado “Longitud separación asiento”. Utilizamos el botoncito que aparece a la derecha del valor de este parámetro. Es a través de este botoncito como podemos asociar un parámetro de la familia anidada a un parámetro de la familia anfitriona. De este modo, el valor del parámetro de la familia anidada estará controlado por el valor del parámetro de la familia anfitriona al que lo hemos asociado.

En la ventana que se abre de “Asociar parámetro de familia” podremos ver todos los parámetros de la familia anfitriona. De entre todos ellos, vamos a elegir el que hemos llamado “ANCHO ASIENTO”.

De este modo, el valor del parámetro “Longitud Separación Asiento” de la familia anidada, estará controlado por el valor del parámetro “ANCHO ASIENTO” de la familia anfitriona. Y así es como mapeamos el valor de un parámetro de una familia anidada al valor de un parámetro de una familia anfitriona.

Es MUY IMPORTANTE, que el punto de origen de la familia anidada coincida con el plano que define origen de la familia anfitriona. De este modo ambos conceptos serán paramétricos con respecto al mismo punto, y variarán la longitud de su geometría en base al mismo punto fijo.

Si no lo hiciéramos así, entonces, aunque el valor de ambos parámetros fuera el mismo, ambas familias (anidada y anfitriona) cada una estaría variando sus dimensiones en base a su origen, y, si el origen no fuera el mismo, obviamente no funcionaría.

INFORMACIÓN EXTRA. FÓRMULAS CONDICIONALES.

Antes de darme cuenta de que esta era la mejor manera y más sencilla de resolver el problema, había usado una fórmula condicional para parametrizar la matriz.

Esta fórmula es bastante más complicada (y además no es del todo correcta), y no es adecuada para este caso.

Sin embargo, dejo aquí reflejado el razonamiento que seguí, porque aunque sea incorrecto, seguro que sirve para aprender algo.

Esta es la fórmula (incorrecta) que había usado antes.

FÓRMULAS CONDICIONALES

Se pueden usar fórmulas condicionales para condicionar el valor de un parámetro a unas determinadas condiciones que se hayan especificado, en relación a los valores de otros parámetros.

Una fórmula condicional sigue esta estructura:

=IF (<condición>, <resultado-si-verdadera>, <resultado-si-falsa>)

Esto significa que los valores del parámetro que esté controlado por este tipo de fórmula, dependen de si una determinada condición se cumple (verdadera) o no (falsa).

Si la condición es verdadera, entonces el valor del parámetro será uno, y si la condición no se cumple, entonces el valor del parámetro será otro.

Además de esto, podemos complejizar este tipo de fórmulas un poco más, y para definir la condición, podemos introducir operadores como “AND”, “OR”, o “NOT”.

Puedes encontrar más información sobre el uso de fórmulas condicionales aquí:

https://help.autodesk.com/view/RVT/2024/ESP/?guid=GUID-A0FA7A2C-9C1D-40F3-A808-73CD0A4A3F20

En el caso que nos ocupa, en el proceso de creación de nuestro sofá paramétrico, habíamos usado una fórmula IF en la que además incluímos el operador OR.

El esquema de la fórmula “IF” con “OR” es el siguiente:

= IF (OR ( A=1, A= 2), X, Y)

Expresado en palabras, lo que dice esta fórmula es:

Si A es igual que 1, o A es igual que 2, entonces el valor del parámetro será X, si no, será Y.

Vamos a volver a ver de nuevo la fórmula de nuestro sofá:

Lo que dice esta fórmula es que el valor para el parámetro “NÚMERO DE ASIENTOS” va a ser 2, en el caso de que el valor del parámetro LARGO dividido entre 65 cm sea igual o sea menor que 1. En el caso contrario, entonces el valor del parámetro “NÚMERO DE ASIENTOS” será el resultado de dividir el valor del parámetro LARGO entre 65 cm.

El caso es que si el LARGO era menor o igual que 65 cm, el valor para el parámetro “NÚMERO DE ASIENTOS” entonces debería ser 1, o menor que 1, con lo que la matriz no funcionaba, porque tiene que tener por lo menos 2 elementos.

Por eso se creó la fórmula condicional, y además con el operador “OR”. Un ejemplo como otro cualquiera de que a veces nos complicamos la vida nosotros mismos por no pararnos a pensar lo suficiente.

Esperamos que esta entrada te haya sido útil y te haya proporcionado conocimiento que puedas aplicar a la hora de trabajar en el entorno de familias en Revit.

Si quieres conocer más sobre Distrito BIM pulsa aquí

Deja un comentario

Entradas relacionadas

error: Contenido protegido