Al calcular el costo de una cocina nueva, el precio era tan alto que decidí hacerlo yo mismo, ya que costaría la mitad del precio. Para el entrenamiento, decidí hacer un escritorio para mí. Comprender lo suficientemente rápido: para hacer algo bueno, necesitas hacer un modelo 3D. Esto nos permitirá en la etapa de diseño ver cómo se verán los muebles y pensar cómo se realizará el montaje en el futuro. Como no estoy haciendo modelado 3D, comencé a buscar un programa más simple. Y lo más simple que encontró SketchUp . Al crear un modelo, constantemente tenía que editar el modelo debido a los cambios constantes de tamaño. Y después del tercer cambio, surgió la idea: hacer un modelo parametrizado para que se generara con los tamaños correctos. SketchUp admite scripts Ruby y este artículo trata sobre lo que hice.
La solución es bastante simple: estoy creando una API que le permite crear objetos 3D de hojas de aglomerado con los parámetros necesarios. El modelo terminado se compila a partir de estos objetos, y los tamaños de las hojas se descargan en un archivo separado para transferirlos al centro de corte. Como resultado de la operación, agregué la capacidad de especificar bordes para las hojas. Este complemento se utilizó para diseñar más de una docena de productos diferentes desde el aglomerado. Con cada nuevo proyecto, el complemento se perfeccionó y modificó, se mejoró la usabilidad y se mejoró la API. Como ejemplo, el último proyecto es una tabla de pedestal. En la imagen, el modelo + producto terminado (pájaro y perro para llamar la atención :))

Rojo son bordes de 2 mm, morado son bordes de 0.4 mm. Los estantes inferiores no están hasta el final, ya que hay una batería de calentamiento cerca de la pared. La encimera está a 4 cm detrás de la pared, de modo que el calor de la batería de calentamiento sube y calienta la pared ( en general, hacer los muebles usted mismo es muy conveniente, puede hacerlo a su medida ).
aquí está el código para generarlo Instalación
Descargue el archivo Object3D.rbz
Lanzar SketchUp
Abra el Administrador de extensiones (Administrador de ventanas / extensiones)
Haga clic en el botón "Instalar extensión" y seleccione el archivo descargado Object3D.rbz
Después de eso, el complemento solicita un directorio donde se almacenarán los proyectos. Es decir se muestra la ventana "Especificar el directorio con proyectos" y debe especificar la carpeta donde almacenará sus proyectos.
Como resultado, tenemos nuestra extensión

Uso
Vaya a la carpeta que especificamos para almacenar proyectos. Esta carpeta se puede cambiar en el menú de complementos

Cree un directorio en la carpeta con el nombre de nuestro proyecto. En mi caso, este es el "Armario en el pasillo". Luego vamos al directorio creado y creamos el archivo main.rb en el que creamos la función de punto de entrada
Reiniciamos SketchUp y en el menú del complemento verá un elemento con el nombre de la carpeta que creó. Ahora selecciona este elemento, sucederá lo siguiente:
- limpiar la consola de Ruby
- eliminar todos los elementos del proyecto actual
- cargar el archivo main.rb desde el directorio especificado
- llamada a función object3D_main
En la función object3D_main, debe generar la generación de su modelo. Puede copiar el código que le di anteriormente al archivo main.rb y luego se generará mi casillero.
API
Archivo "core.rb"
Cada función devuelve un objeto Shasoft :: Object3D :: Object3D que contiene métodos para mover el objeto y rotarlo
Nombre de función (): establece el nombre del objeto. No los descuides. Al armarlo puede ayudar mucho :)
Las funciones del objeto moveX , moveY , moveZ le permiten mover el objeto a lo largo de los ejes correspondientes.
La función mover (x, y, z) le permite mover un objeto a lo largo de tres ejes a la vez
Las funciones de objeto rotateX , rotateY , rotateZ le permiten rotar el objeto alrededor de los ejes correspondientes.
Hay alias de funciones moveRed , moveGreen , moveBlue , rotateRed , rotateGreen , rotateBlue donde los ejes X (rojo), Y (verde), Z (azul) se nombran por su color en SketchUp. Quizás alguien se sienta más cómodo.
Cada función devuelve un puntero al objeto mismo. Esto le permite hacer una cadena de llamadas.
La función de objeto set (dict, key, value) le permite establecer el valor del atributo. dict - nombre del diccionario, clave - nombre del atributo, valor - valor
La función del objeto get (dict, key, value = nil) le permite obtener el valor del atributo. dict - nombre del diccionario, clave - nombre del atributo, valor - valor
El método de copia le permite obtener una copia del objeto (aunque no funciona de manera muy estable :))
El método de grupo le permite obtener un objeto estándar de SketchUp :: Grupo.
Se define un método para crear un objeto. Puede pasar una lista de objetos Shasoft :: Object3D :: Object3D o SketchUp :: Group como parámetros. Si la lista de parámetros está vacía, se creará un nuevo grupo.
También hay una función que le permite obtener una lista de objetos (Skechup :: Group). Puede especificar el nombre del diccionario y solo se devolverán los objetos que tengan dicho diccionario. En particular, así es como separo los objetos de la hoja de aglomerado de los demás. Al crear, instalo el diccionario LDSP por el cual luego y filtro todos los objetos en la escena.
Archivo 2D_weght
Archivo "ldsp.rb"
Función auxiliar para crear cajones.
resultado del trabajo

Como resultado, el siguiente archivo CSV se generará con las siguientes columnas
- A - Ancho
- B - Profundidad
- C Número de partes
- D - bordes en el formato D-lado largo, K-lado corto. Es en esto que se registran en la oficina en la que ordeno un corte de piezas. Quizás este es el estándar.
- E - bordes en el formato en el que los configura al generar
- F - Nombre de todas las partes. Esto es útil al construir.

En conclusión
Diseñar y ensamblar muebles usted mismo ahorra dinero unas 2 veces. Y también la oportunidad de exprimir sus muebles individuales en cualquier agujero no estándar en el apartamento. Normalmente recojo muebles en confirmaciones 7x50 de aglomerado de 16 mm

Si hay simulacros para confirmaciones

(y una pequeña habilidad) el montaje no lleva mucho tiempo.
Lo único negativo es que puedes involucrarte . Después del escritorio, ya ensamblé: una cocina, varias jaulas (para el mismo pájaro que está en la foto), estantes (pared y piso), armarios y mesas. En general, "abarrotó" todos los lugares no utilizados en el apartamento.
Descargar el enlace de extensión
Enlace a la página del complemento