Últimas noticias
Cómo crear prompts de video arquitectónico con Gemini Omni Flash: guía paso a pasoAutomatización de modelos con SketchUp Ruby API: guía de componentes y geometríaLacaton & Vassal recibe Le Prix Charlotte Perriand 2027Guía de visualización arquitectónica en Unreal Engine 5.3: Lumen y NaniteRevit 2026.5.1 y Desktop Connector: guía de revisión antes de actualizarGeneración de imágenes arquitectónicas con Nano Banana 2.1: guía de prompts y ediciónRender desde la línea de comandos y automatización con Python en Blender 5.2 LTSGuía para colocar vegetación en D5 Render: pincel, dispersión y rutasGuía de SubDLoft en Rhino 8: crea formas SubD controladas con curvasCómo importar y renderizar Gaussian splats en Blender 5.3
Consejos y guíasSketchUpOMA

Automatización de modelos con SketchUp Ruby API: guía de componentes y geometría

SketchUp Ruby API permite automatizar tareas repetitivas accediendo a los componentes, la geometría y la selección del modelo abierto. Esta guía adapta las clases y los métodos básicos de la documentación oficial a los flujos de modelado arquitectónico.

Visualización de un interior contemporáneo organizado con componentes de mobiliario repetidosImagen IA
Imagen ilustrativa generada con IA.Imagen: 3dsınıfı / FCA AI

En resumen

  1. Sketchup.active_model es el punto de partida para acceder al modelo abierto.
  2. Model.entities proporciona la geometría principal del modelo; active_entities, el contenido del grupo o componente que se está editando.
  3. ComponentDefinition representa la definición de un componente reutilizable; ComponentInstance, una instancia colocada en el modelo.
  4. Recorrer colecciones con Entities#each suele ser más eficiente que acceder a ellas mediante índices.

SketchUp Ruby API utiliza clases de modelo, geometría y componentes para leer y modificar el contenido del modelo abierto. Esta guía, basada en la documentación oficial de SketchUp Ruby API, aborda especialmente cómo acceder a los datos del modelo, gestionar instancias de componentes y operar sobre colecciones de geometría. Aunque la documentación indica SketchUp 6.0 como versión de referencia para las clases básicas, algunos métodos tienen requisitos de versión más recientes; por ello, conviene revisar por separado las notas de versión del método que se vaya a utilizar.

1. Accede al contenido del modelo desde el contexto correcto

El punto de partida de un flujo de automatización es el modelo abierto, obtenido con Sketchup.active_model. A través del objeto del modelo se puede acceder a secciones como la geometría raíz, las definiciones de componentes, los materiales y la colección de selección. Así queda claro en qué parte del modelo se encuentran los datos que se van a procesar.

ruby
model = Sketchup.active_model
entities = model.entities
definitions = model.definitions
materials = model.materials
selection = model.selection

model.entities incluye los elementos de dibujo del nivel raíz del modelo. Si el usuario está editando un grupo o componente, model.active_entities devuelve los elementos de ese contexto de edición. Si no hay ningún grupo o componente abierto, esta colección coincide con entities. Tener clara esta diferencia ayuda a evitar que un comando modifique geometría del contexto equivocado.

Por ejemplo, en una herramienta que vaya a operar sobre los elementos seleccionados, la colección de selección puede ser el punto de partida. En cambio, para una herramienta que deba trabajar en el contexto de edición actual, puede convenir empezar por la colección de elementos activos. Intentar modificar directamente todo el contenido del modelo sin delimitar el alcance de la operación puede provocar cambios no deseados.

2. Distingue entre la definición y la instancia de un componente

En SketchUp, la definición de un componente y su instancia no son lo mismo. ComponentDefinition describe los elementos que contiene el componente; ComponentInstance representa una colocación de esa definición en el modelo y su transformación. Es posible crear varias instancias a partir de una misma definición. Los cambios realizados en la definición se reflejan en las instancias que la utilizan.

Puedes averiguar a qué definición está vinculada una instancia mediante el método definition. También es posible asignarle otra definición; la documentación indica que, al hacerlo, se conserva la transformación de posicionamiento de la instancia en el modelo.

ruby
instance = model.entities[0]
definition = instance.definition
puts definition.name

Este ejemplo presupone que el primer elemento es una instancia de componente. En una extensión real, conviene comprobar el tipo de cada elemento de la colección y contemplar la posibilidad de que el resultado esté vacío. A través de la definición de un componente, puedes contar su uso con los métodos count_instances y count_used_instances: el primero cuenta las distintas instancias y el segundo, el total de instancias del modelo que utilizan esa definición.

Cuando se necesita editar una sola instancia de forma independiente, se puede usar make_unique. Este método crea una definición para esa instancia que no comparten las demás. Por eso, antes de hacer cambios en bloque, hay que decidir si se aplicarán a la definición compartida o solo a la instancia seleccionada.

3. Procesa las colecciones de geometría de forma eficiente

Entities es la colección de elementos que contiene el modelo o una definición de componente. La documentación indica que, en general, es más eficiente recorrer los elementos con el método each que acceder a ellos mediante índices. Este enfoque también facilita la lectura del código de los scripts que recorren una colección.

ruby
model.entities.each do |entity|
  puts entity.typename
end

Si necesitas acceder a un índice concreto, puedes usar entities[index]. Sin embargo, los índices válidos van de cero a la longitud de la colección menos uno, y el método puede devolver nil si no encuentra el elemento. Por tanto, en operaciones que dependan de un índice elegido por el usuario, es importante comprobar ese resultado.

Hay métodos como add_line para crear una línea, add_circle para un círculo y add_face para una cara. Para generar muchos elementos de geometría teniendo en cuenta el rendimiento, el método Entities#build crea un EntitiesBuilder. La documentación describe este método como una herramienta para la generación de geometría en bloque, pero no especifica un aumento de velocidad concreto ni requisitos de hardware. Por eso, el beneficio en un proyecto real debe medirse con la geometría y el flujo de trabajo de la extensión que se utilicen.

Si la operación debe registrarse como un paso reversible, se pueden utilizar los métodos del modelo start_operation y commit_operation. En caso de error, la documentación oficial indica que se puede cancelar la operación iniciada con abort_operation. También advierte que una operación transparente no debe cancelarse.

ruby
model.start_operation("Model düzenlemesi")
begin
  # Geometri işlemlerini burada yürütün.
  model.commit_operation
rescue
  model.abort_operation
  raise
end

4. Uso en flujos de trabajo de arquitectura y visualización

En proyectos de modelado arquitectónico e interiorismo, esta API puede utilizarse para organizar elementos repetidos como componentes, inspeccionar el contenido del modelo y automatizar operaciones recurrentes de geometría mediante scripts. Por ejemplo, gestionar distintas colocaciones de una misma definición de mobiliario requiere distinguir correctamente entre definición e instancia. Si se necesita independizar un elemento, puede considerarse la opción make_unique; si se busca una actualización compartida, conviene trabajar con la definición común.

Al desarrollar un script de automatización para una oficina, primero hay que delimitar el alcance: ¿se procesará la geometría raíz del modelo, el contenido de un grupo abierto o los elementos seleccionados? Después, hay que tener en cuenta la relación entre la definición y la instancia del componente. Para comprobar la compatibilidad de la extensión con la versión de SketchUp, se deben revisar los datos de versión de los métodos utilizados en la documentación oficial. Como la documentación no especifica requisitos de hardware, no es posible recomendar un equipo concreto; para operaciones de geometría intensivas, es más conveniente probar el rendimiento con el modelo de destino.

Errores frecuentes

  • Usar las colecciones entities y active_entities como si abarcaran el mismo contexto.

  • No tener en cuenta que los cambios en una definición compartida se reflejan en las instancias del componente.

  • Pasar por alto que el elemento obtenido mediante un índice puede no existir y que el resultado puede ser nil.

  • No gestionar el cierre adecuado de la operación: commit_operation en el flujo correcto y el paso correspondiente en caso de error.

Esta guía se basa en las clases básicas de modelo, componentes y geometría documentadas en SketchUp Ruby API. Los fragmentos consultados de la documentación no explican rutas de menús de la interfaz, condiciones de licencia ni requisitos de hardware, por lo que no se han hecho suposiciones al respecto.

Fuentes

3 fuentes
R
ruby.sketchup.comruby.sketchup.com/Sketchup/Model.html
Resumen
R
ruby.sketchup.comruby.sketchup.com/Sketchup/ComponentInstance.html
Resumen
R
ruby.sketchup.comruby.sketchup.com/Sketchup/ComponentDefinition.html
Resumen

No republicamos los textos de las fuentes; las citas breves van marcadas y el resto es resumen y comentario propios.

La opinión de 3dsınıfı
3dValoración del editor

Para las oficinas de arquitectura y visualización de Turquía, el valor práctico de Ruby API reside en su capacidad para automatizar tareas repetitivas del modelo de acuerdo con sus propias reglas de producción. En particular, distinguir correctamente entre la definición y la instancia de un componente permite controlar si un cambio se aplica a todas las colocaciones o solo a una instancia.

Sin embargo, el beneficio de la automatización depende del alcance del script utilizado y del modelo del proyecto; la documentación no especifica un aumento de velocidad ni un umbral de hardware. Los equipos que desarrollen extensiones deben comprobar la información de versión de los métodos, no omitir la gestión de errores en el flujo de operaciones y probar el rendimiento con sus propios archivos.

Preguntas frecuentes

¿Cómo se accede al modelo abierto en SketchUp Ruby API?

`Sketchup.active_model` devuelve el objeto del modelo abierto. A través de este objeto se pueden obtener la geometría del modelo, las definiciones de componentes, los materiales y la colección de selección.

¿Cuál es la diferencia entre `entities` y `active_entities`?

`entities` contiene la geometría raíz del modelo. Si se está editando un grupo o componente abierto, `active_entities` devuelve los elementos de ese contexto; si no hay ninguno, ambas colecciones son iguales.

¿Para qué sirve `make_unique` en un componente de SketchUp?

El método crea una definición para la instancia seleccionada que no comparten las demás instancias. Así, es posible editar esa definición de forma independiente.

Los comentarios y el foro están en turco.Únete al debate
+

Noticias relacionadas