Atributos de objeto en Grasshopper

  • ¿Alguna vez se ha frustrado por no poder procesar geometría con atributos personalizados?
  • ¿Y con la visualización de materiales? ¿Alguna vez ha querido utilizar materiales nativos de Rhino en el pipeline de visualización de Grasshopper?
  • ¿Y con la importación de archivos en Grasshopper? ¿Alguna vez se ha desanimado al intentar importar un archivo CAD y perder todos los metadatos básicos que se incluyen con la geometría?

La última versión de Rhino 8 incluye nuevos tipos de datos y componentes que mejoran su forma de trabajar.

Grasshopper 1 siempre ha tenido tipos de datos comunes, algunos se utilizan con frecuencia (puntos, curvas, breps, booleanas, números y texto, etc.), y otros que se utilizan de forma más esporádica (fecha/hora, matrices, especificadores culturales, etc.).

Sin embargo, hay muchos tipos de datos disponibles en Rhino a los que no se podía acceder anteriormente en Grasshopper. Las capas, tipos de línea, tramas, materiales, fuentes, estilos de anotación, etc. de Rhino se incluyen ahora en Grasshopper 1 para Rhino 8 como tipos de datos nativos. Y pronto habrá más.

Barra de herramientas de atributos de objeto de GH1

¿Qué es un atributo?

Todos estos nuevos componentes permiten obtener y/o definir los atributos de un tipo de datos determinado. ¿Qué es exactamente un “atributo”? Un atributo es simplemente una propiedad o elemento que ayuda a definir ese objeto.

Veamos las capas de Rhino, por ejemplo. Una capa se puede definir mediante las siguientes propiedades:

  • Nombre
  • Está activa (actual)
  • Visible/Oculta
  • Bloqueada/Desbloqueada
  • Color de visualización
  • Material
  • Tipo de línea
  • Color de impresión
  • Ancho de impresión
  • Plano delimitador
  • Estilo de sección

Podemos ver y/o editar cada uno de estos atributos en el diálogo Capas de Rhino. Ahora puede hacer lo mismo en Grasshopper 1!

Atributos de capa

Introducción

Grasshopper 1 en Rhino 8 tiene una nueva barra de herramientas denominada Rhino que se divide en varias subcategorías (Layers, Linetypes, Materials, etc.). Cada subcategoría suele tener dos tipos diferentes de componentes.

  • Componente Query Componente Query - Permite consultar el documento activo de Rhino sobre varios tipos de datos. Este componente en particular permite traer todas las capas de Rhino al documento de Grasshopper, pero también puede consultar un documento en busca de tipos de línea, tramas, estilos de anotación, etc. Los componentes Query se suelen indicar con una lupa.

  • Componente Datatype Componente Datatype - Estos componentes permiten construir y/o deconstruir un tipo de datos con sus distintos valores de atributo. Este componente en particular permite especificar los atributos de una nueva capa de Rhino (nombre de capa, color de visualización, opciones de visibilidad, etc.), o ver los valores de estos atributos en una capa ya definida en el modelo de Rhino.

Componentes Constructor/Deconstructor vs. Pass-through

Grasshopper 1 tiene muchos tipos de datos (puntos, vectores, planos, etc.) que utilizan un patrón Constructor/Deconstructor. Es decir, cada tipo de datos tiene dos componentes diferentes: uno que se encarga de crear el tipo de datos (el constructor), como un punto que contiene tres parámetros numéricos de entrada, y otro que devuelve los valores que se combinan para formar ese tipo de datos (el deconstructor).

Hemos considerado utilizar este patrón para los nuevos tipos de datos de la barra de herramientas de Rhino, pero en su lugar hemos optado por un patrón que denominamos componente Pass-through. Los componentes Pass-through combinan ambas funciones de construcción y deconstrucción de atributos en un único componente.

Point Passthrough

Veamos cómo funcionaría. Observe que ahora hay cuatro entradas y salidas (en lugar de tres en el patrón de construcción/desconstrucción). El tipo de datos principal (Point3d) es el primer parámetro tanto en la entrada como en la salida.

Point Passthrough

Si queremos crear (construir) un nuevo punto utilizando un componente Pass-through, simplemente pasamos valores numéricos en las tres entradas de coordenadas y se creará y devolverá un nuevo punto desde la salida Point. Del mismo modo, si queremos descomponer un punto existente en sus valores componentes (sus coordenadas), basta con pasar un punto en el primer parámetro de entrada y los valores se devolverán a la salida correspondiente.

Esta es la configuración básica del funcionamiento de un componente Pass-through. Veamos ahora un ejemplo más concreto. Digamos que queremos crear una nueva capa de Rhino y asignarle algunos atributos. Simplemente pasamos algunos valores a los parámetros de entrada, y la salida Layer (el tipo de dato principal es siempre el primer parámetro de entrada/salida) devuelve la capa de Rhino con todas sus opciones.

Observe que estoy utilizando el componente Query Linetypes para obtener una referencia a uno de los tipos de línea que existen en mi modelo de Rhino. Si hubiera dejado el filtro en blanco (o hubiera utilizado un comodín “*”) habría devuelto todos los tipos de línea disponibles. Sin embargo, como estoy utilizando el filtro “Dashed”, solo devuelve el tipo de línea que coincide con este nombre.

Constructor

Del mismo modo, si quisiéramos traer una capa existente de Rhino e inspeccionar sus atributos, podríamos utilizar el mismo componente Pass-through. Esta vez, sin embargo, queremos pasar una capa existente de Rhino a la entrada Layer. Recuerde que el tipo de datos principal es siempre el primer parámetro en ambos lados del componente.

Aquí utilizamos el componente Query Layers para obtener la capa existente (solo hay una denominada “Default”) que podemos pasar a la entrada Layer. A continuación, los atributos de la capa se transmiten al parámetro de salida correspondiente.

Deconstructor

Ahora digamos que queremos utilizar una capa existente como plantilla, pero haciendo una copia y cambiando algunos de sus atributos. En este caso, un componente Pass-through resulta muy útil. Si hubiéramos utilizado el patrón constructor/deconstructor, habríamos tenido que conectar manualmente cada una de las salidas del componente Constructor con el parámetro de entrada correspondiente del componente Deconstructor.

Copiar / Modificar

Como puede imaginar, sería bastante engorroso en tipos de datos con un gran número de atributos. En su lugar, podemos utilizar un componente Pass-through para esta operación.

Como antes, podemos pasar una capa existente de Rhino a la entrada Layer y todos sus atributos se pasarán a la salida correspondiente. Sin embargo, si se conecta otro valor a una de las otras entradas, este valor sustituirá al atributo procedente de la capa de Rhino existente.

Aquí podemos pasar el texto “MyLayer” a la entrada Full Path y sustituirá el nombre de la capa existente en Rhino. Sin embargo, todos los demás valores seguirán siendo los mismos.

Al utilizar solo un componente de paso, ahorramos espacio en pantalla en nuestra definición y evitamos tener que conectar todos los parámetros de salida a su entrada correspondiente.

Copiar / Modificar

Construir atributos

En el ejemplo anterior, mostramos cómo construir una capa de Rhino utilizando el componente Pass-through Model Layer. Sin embargo, la capa que se crea no es técnicamente una parte del documento de Rhino hasta que se procesa (Bake). Todavía estamos trabajando en un componente Bake personalizado, pero de momento puede hacer clic con el botón derecho en el componente Layer del modelo y seleccionar Bake. Haga clic en Aceptar en el cuadro de diálogo emergente y la capa se añadirá al documento de Rhino.

Construct Layer Panel

Ahora queremos añadir geometría al documento de Rhino, pero asegúrese de que se asigna a la capa que acabamos de crear. Podemos utilizar simplemente un componente Model Object para asignar varios atributos a los objetos geométricos.

Construct Layer Panel 2

Construct Layer Panel 3

Aquí hemos creado una esfera con el nombre “MySphere”. También hemos asignado la capa que acabamos de crear a los atributos del objeto. Ahora, si hacemos clic con el botón derecho en el componente Model Object y seleccionamos Bake, la esfera se añadirá al documento de Rhino con esos atributos.

Seleccione la esfera que se procesó en la escena y vaya al panel de información de Propiedades de objeto. Compruebe si la esfera tiene asignados el nombre y la capa correctos.

También puede los atributos que quiera a un objeto geométrico. Este es un ejemplo muy sencillo, pero puede echar un vistazo a los demás componentes para ver qué opciones están disponibles.

Deconstruir atributos

Como es de esperar, también es posible descomponer los tipos de datos en los atributos que los componen. Los componentes de consulta son un buen punto de partida, ya que estos componentes traerán varios tipos de datos de Rhino (geometría, capas, tipos de línea, etc.) a la definición de Grasshopper. Pero son relativamente sencillos.

En su lugar, echemos un vistazo al nuevo componente Import Model que se encuentra en la pestaña Params y en la subcategoría Input. Con este nuevo componente, podemos importar cualquier modelo 3D (no solo tienen que ser modelos de Rhino) y descomponer el contenido en sus distintos atributos.

Una función útil de este nuevo componente es que también proporciona una forma de transformar el modelo importado en las unidades de los documentos activos de forma coherente. Veamos un ejemplo para explicar cómo funciona.

Supongamos que ha descargado algunos modelos CAD 3D de elementos de fijación que desea utilizar en su proyecto. Uno de los archivos, el perno hexagonal con brida, se guarda con las unidades establecidas en pulgadas. El otro archivo, que incluye una tuerca de mariposa y una arandela, tiene sus unidades fijadas en milímetros. Y para complicar la situación, el documento activo en el que está trabajando está configurado en centímetros.

Pernos y tuercas

Si hubiéramos importado este modelo de forma tradicional, habríamos tenido que averiguar nuestros propios factores de conversión para que los modelos se alinearan correctamente. Sin embargo, utilizando uno de los atributos del modelo importado, la transformación, podemos ajustar fácilmente la geometría importada a la escala del documento activo.

Modelo escalado

Transformar geometría

Además, podemos inspeccionar otros atributos del modelo importado. En este caso, había varios materiales guardados en el archivo. Ahora podemos utilizar cualquier material de Rhino en la vista previa personalizada de Grasshopper.

He puesto esta frase en negrita porque es muy importante. Ya no estará limitado a los gráficos de visualización simplificada en los que se ha basado tradicionalmente Grasshopper. Ahora puede importar (o utilizar el componente Query Materials) para traer materiales nativos de Rhino y utilizarlos en geometría de Grasshopper con el componente estándar Custom Preview.

Los ejemplos siguientes son simplemente capturas de pantalla de varios modos de visualización que utilizan materiales importados de Rhino.

Renderizado de tuerca y perno

Visualización de material

Más próximamente

Es importante señalar que esta solo es la primera versión de estas nuevas herramientas. El conjunto de herramientas no está completo y es posible que encuentre algunos errores. Por favor, avísenos si encuentra algo que no funciona del todo bien o si tiene alguna pregunta. Estamos aquí para ayudarle.

También queremos saber qué tipos de datos deberíamos incluir en el futuro. ¿Qué tipos serían más útiles para su flujo de trabajo? ¿Necesita bloques, luces, cotas, planos delimitadores, vistas guardadas? Tenemos una larga hoja de ruta de componentes en los que trabajaremos en los próximos meses, pero también tomamos en cuenta los comentarios de los usuarios para saber qué funciones deben ser prioritarias.

¡Pruébelo!

Descargue y abra la definición ConstructObjectAttributes.gh.

Más información

Vea el vídeo Descubra los tipos de datos de Grasshopper o visite nuestra página Novedades de Rhino 8 para obtener una descripción general de estas funciones.

Aprenda a utilizar otros componentes Data Type en las siguientes guías: