Как сделать раскладку плитки в sketchup

Обновлено: 03.07.2024

Расширение (плагин) SketchUp для проектирования мебели программистом

Решение достаточно простое — создаю некоторый API, который позволяет создавать 3D объекты листов ЛДСП с нужными параметрами. Из этих объектов компонуется готовая модель а также в отдельный файл выгружаются размеры листов для передачи их в центр распила. В результате эксплуатации добавил ещё возможность указывать кромки для листов. Данный плагин был использован для проектирования более десятка различных изделий из ЛДСП. С каждым новым проектом плагин дорабатывался и модифицировался, улучшалось удобство и совершенствовалось API. В качестве примера последний проект — стол-тумба. На картинке модель + готовое изделие (птица и собака для привлечения внимания :))


Красные — это 2 мм кромки, фиолетовый — кромки 0.4 мм. Нижние полки не до конца, так как там батарея отопления у стены. Столешница отстает от стены на 4 см чтобы тепло от батарее отопления поднималось вверх и обогревало стену (вообще делать мебель самому очень удобно — можно сделать под свои размеры).

Установка

В результате у нас появляется наше расширение

Использование

Переходим в папку которую мы указали для хранения проектов. Эту папку можно изменить в меню плагина

Перезапускаем SketchUp и в меню плагина у вас появится пункт с названием созданной вами папки. Теперь вы выборе этого пункта будет происходить следующее:

  • очистка консоли Ruby
  • удаление всех элементов в текущем проекте
  • загрузка файла main.rb из указанной директории
  • вызов функции object3D_main

В функции object3D_main нужно сделать генерацию вашей модели. Можно скопировать в файл main.rb код который я приводил выше и тогда у вас сгенерируется мой шкафчик.

Каждая функция возвращает объект Shasoft::Object3D::Object3D который содержит методы для перемещения объекта и его поворота

Функция name() — установка имени объекта. Не стоит им пренебрегать. При сборке может сильно помочь 🙂

Функции объекта moveX, moveY, moveZ позволяют перемещать объект по соответствующим осям.

Функция move(x,y,z) позволяет переместить объект сразу по трем осям

Функции объекта rotateX, rotateY, rotateZ позволяют вращать объект вокруг соответствующих осей.

Есть функции псевдонимы moveRed, moveGreen, moveBlue, rotateRed, rotateGreen, rotateBlue где оси X(red), Y(green), Z(blue) названы по их цвету в SketchUp. Может кому-то так будет удобнее.
Каждая функция возвращает указатель на сам обхект. Это позволяет делать цепочку вызовов

Функция объекта set(dict,key,value) позволяет установить значение атрибута. dict — имя словаря, key — имя атрибута, value — значение

Функция объекта get(dict,key,value=nil) позволяет получить значение атрибута. dict — имя словаря, key — имя атрибута, value — значение

Метод copy позволяет получить копию объекта (хотя работает не очень стабильно :))

Метод group позволяет получить стандартный объект SketchUp::Group

Определен метод для создания объекта. В качестве параметров можно передавать список объектов Shasoft::Object3D::Object3D или SketchUp::Group. Если список параметров пустой, то будет создана новая группа

Также есть функция которая позволяет получить список объектов (Skechup::Group). Можно задать имя словаря и будут возвращены только объекты, у которых такой словарь присутствует. В частности именно так я отделяю объекты лист ЛДСП от других. При создании я устанавливаю словарь LDSP по которому потом и фильтрую все объекты сцены.

Вспомогательная функция для создания выдвижных ящиков

в результате будет сгенерирован следующий csv файл со следующими колонками

  • A — Ширина
  • B — Глубина
  • C Количество деталей
  • D — кромки в формате Д-длинная сторона, К-короткая сторона. Именно в таком их записывают в той конторе в которой я заказываю распил деталей. Возможно это стандарт.
  • E — кромки в том формате в котором вы их задавили при генерации
  • F — Название всех деталей. Это полезно при сборке

В заключении


При наличии сверла для конфирматов


(и небольшого навыка) сборка занимает не так много времени.

Расширение (плагин) SketchUp для проектирования мебели программистом

Решение достаточно простое — создаю некоторый API, который позволяет создавать 3D объекты листов ЛДСП с нужными параметрами. Из этих объектов компонуется готовая модель а также в отдельный файл выгружаются размеры листов для передачи их в центр распила. В результате эксплуатации добавил ещё возможность указывать кромки для листов. Данный плагин был использован для проектирования более десятка различных изделий из ЛДСП. С каждым новым проектом плагин дорабатывался и модифицировался, улучшалось удобство и совершенствовалось API. В качестве примера последний проект — стол-тумба. На картинке модель + готовое изделие (птица и собака для привлечения внимания :))


Красные — это 2 мм кромки, фиолетовый — кромки 0.4 мм. Нижние полки не до конца, так как там батарея отопления у стены. Столешница отстает от стены на 4 см чтобы тепло от батарее отопления поднималось вверх и обогревало стену (вообще делать мебель самому очень удобно — можно сделать под свои размеры).

Установка

В результате у нас появляется наше расширение

Использование

Переходим в папку которую мы указали для хранения проектов. Эту папку можно изменить в меню плагина

Перезапускаем SketchUp и в меню плагина у вас появится пункт с названием созданной вами папки. Теперь вы выборе этого пункта будет происходить следующее:

  • очистка консоли Ruby
  • удаление всех элементов в текущем проекте
  • загрузка файла main.rb из указанной директории
  • вызов функции object3D_main

В функции object3D_main нужно сделать генерацию вашей модели. Можно скопировать в файл main.rb код который я приводил выше и тогда у вас сгенерируется мой шкафчик.

Каждая функция возвращает объект Shasoft::Object3D::Object3D который содержит методы для перемещения объекта и его поворота

Функция name() — установка имени объекта. Не стоит им пренебрегать. При сборке может сильно помочь 🙂

Функции объекта moveX, moveY, moveZ позволяют перемещать объект по соответствующим осям.

Функция move(x,y,z) позволяет переместить объект сразу по трем осям

Функции объекта rotateX, rotateY, rotateZ позволяют вращать объект вокруг соответствующих осей.

Есть функции псевдонимы moveRed, moveGreen, moveBlue, rotateRed, rotateGreen, rotateBlue где оси X(red), Y(green), Z(blue) названы по их цвету в SketchUp. Может кому-то так будет удобнее.
Каждая функция возвращает указатель на сам обхект. Это позволяет делать цепочку вызовов

Функция объекта set(dict,key,value) позволяет установить значение атрибута. dict — имя словаря, key — имя атрибута, value — значение

Функция объекта get(dict,key,value=nil) позволяет получить значение атрибута. dict — имя словаря, key — имя атрибута, value — значение

Метод copy позволяет получить копию объекта (хотя работает не очень стабильно :))

Метод group позволяет получить стандартный объект SketchUp::Group

Определен метод для создания объекта. В качестве параметров можно передавать список объектов Shasoft::Object3D::Object3D или SketchUp::Group. Если список параметров пустой, то будет создана новая группа

Также есть функция которая позволяет получить список объектов (Skechup::Group). Можно задать имя словаря и будут возвращены только объекты, у которых такой словарь присутствует. В частности именно так я отделяю объекты лист ЛДСП от других. При создании я устанавливаю словарь LDSP по которому потом и фильтрую все объекты сцены.

Вспомогательная функция для создания выдвижных ящиков

в результате будет сгенерирован следующий csv файл со следующими колонками

  • A — Ширина
  • B — Глубина
  • C Количество деталей
  • D — кромки в формате Д-длинная сторона, К-короткая сторона. Именно в таком их записывают в той конторе в которой я заказываю распил деталей. Возможно это стандарт.
  • E — кромки в том формате в котором вы их задавили при генерации
  • F — Название всех деталей. Это полезно при сборке

В заключении


При наличии сверла для конфирматов


(и небольшого навыка) сборка занимает не так много времени.

Читайте также: