Logo Text-to-3D.ru
Главная Создать 3D Каталог Статьи
Раздел
Статьи Категории
Статьи Категории
Вход

Геодезический купол из пятиугольников: параметрическое моделирование и методика раскроя

Техническая статья Параметрическое моделирование OpenSCAD

В данной статье рассматривается методика параметрического построения геодезического купола, основанного на подразделении базовой поверхности на пятиугольные элементы. Подход ориентирован на последующую цифровую фабрикацию — 3D-печать соединителей и раскрой стержневых элементов из стандартных материалов (палочки от мороженого, прутки круглого сечения, крестовые валы). Код написан на языке OpenSCAD и реализует полный цикл: от генерации геометрии до автоматической спецификации (BOM) и проверки собираемости.

"Купол — это не просто оболочка. Это система, в которой каждый узел несёт нагрузку, а каждый стержень определяет топологию прочности. Задача параметрического моделирования — уловить эту взаимосвязь в наборе дублируемых и проверяемых правил."

1. Архитектура модели

Модель построена на двух фундаментальных структурах: массиве узлов (NODES) и массиве рёбер (EDGES). Узлы задаются в трёхмерном пространстве и логически группируются по функциональному назначению:

Двойная пирамида (корпус)

Восемь узлов формируют нижнее (дно) и верхнее (крыша) квадратные основания, соединённые вертикальными рёбрами. Это ядро X-рамы квадрокоптера, служащее испытательной площадкой.

Сферический каркас

Тридцать два узла расположены на сферических поверхностях — концы лучей, промежуточные валы и развёрнутый купол. Именно здесь проявляется пятиугольная геометрия.

Опорная платформа

Четыре узла нижнего основания (-40 по Z) образуют квадрат, к которому крепятся ноги (стойки) конструкции через шарнирные соединения.

Рёбра и связи

Массив EDGES определяет все соединения. Каждое ребро проверяется на валидность: корректность индексов, отсутствие петель и дубликатов.

2. Кластеризация узлов и дедупликация деталей

Ключевой алгоритмический элемент — кластеризация пересекающихся узлов. В геодезической структуре многие узлы расположены настолько близко друг к другу, что при печати их целесообразно объединить в единый коннектор. Система использует рекурсивную функцию relax, которая на каждой итерации объединяет метки кластеров для узлов, расстояние между которыми меньше заданного порога merge_dist.

  • Порог объединения вычисляется как 2 × r_in + merge_gap, где r_in — радиус вписанной окружности паза.
  • После фиксации кластеров (CLABELS) строятся уникальные сигнатуры: для каждого кластера вычисляется количество узлов, упорядоченный набор углов между рёбрами и список длин внутренних стержней.
  • Дедупликация по сигнатурам позволяет определить количество уникальных типов деталей, которые необходимо напечатать, и их кратность.

Пример выходной спецификации

=========== СПЕЦИФИКАЦИЯ ===========
Тип палочек/вала: крестовой вал [крест 3.5 мм, ребро 1.3 мм]
Узлов: 52 | Деталей(кластеров): 18 | Уникальных типов деталей: 7 | Объединено узлов: 34
--- ПАЛОЧКИ (лист раскроя) ---
  42.5 мм  x  12 шт.
  38.0 мм  x  8 шт.
  ИТОГО палочек: 20 | суммарная длина: 0.81 м

3. Геометрия коннектора: пазы и сечения

Каждый узел-соединитель (коннектор) представляет собой тело вращения или экструзии с пазами под стержни. Система поддерживает три типа сечений палочек:

Плоские палочки (flat)

Прямоугольное сечение, имитирующее палочки от мороженого. Ширина и толщина задаются параметрически. Паз выполняется в виде прямоугольного отверстия с допуском tolerance.

Круглое сечение (round)

Палочки с круглым профилем. Диаметр задаётся одним параметром. Паз — окружность с увеличенным диаметром на величину допуска.

Крестовой вал (cross)

Стандартный крестовой профиль с заданным габаритом и толщиной рёбер. Наиболее жёсткий вариант, обеспечивающий фиксацию стержня в нескольких плоскостях.

Для каждого типа сечения вычисляется габаритное сечение (stick_bb_w, stick_bb_t), на основе которого определяются размеры паза (slot_w, slot_t) и внешнего профиля с учётом толщины стенки.

Геометрия паза

Паз в коннекторе выполняется разностью тел: к базовому телу (объединение ядра и тела луча) вычитаются отверстия профилем паза. Для палочек, не входящих в текущий кластер (внешние рёбра), паз режется полностью. Для внутренних рёбер (принадлежащих тем же узлам) паз не вырезается — эти соединения выполняются сплошными балками (join_beam), что гарантирует монолитность детали при печати.

4. Ориентация и ортогональные системы координат

Одной из сложностей параметрического моделирования купола является необходимость корректной ориентации каждого луча и паза в трёхмерном пространстве. Для каждого ребра вычисляется крен паза (edge_up) — вектор, перпендикулярный направлению ребра и вертикальной оси. Этот вектор используется для построения локальной ортогональной системы координат (ОС) через векторное произведение.

// Построение локальной ОС для ребра:
module orient_up(dir, up) {
  // dir — нормализованное направление ребра
  // up — вектор "вверх" для определения крена
  zc = dir;   // ось Z локальной ОС
  yc = (up - (up·zc)·zc) / |...|;  // ось Y (перпендикуляр направлению)
  xc = cross(yc, zc);   // ось X (правая система)
  multmatrix([xc, yc, zc, [0,0,0]]) children();
}

Функция edge_up обладает важным свойством: крен паза зависит только от направления ребра, а не от его ориентации (edge_up(d) == edge_up(-d)). Это гарантирует симметричность пазов при печати.

5. Три режима вывода

Система поддерживает три режима визуализации и экспорта, управляемых переменной mode:

assembly — весь дом в сборе

Все уникальные детали раскрашиваются по типам и отображаются на своих реальных координатах. Стержни внешних рёбер отрисовываются как цилиндры с профилем, соответствующим выбранному типу палочки. Этот режим оптимален для визуальной проверки геометрии и целостности модели перед печатью.

parts — разложенные на столе детали

Все уникальные типы деталей центрируются на XY-плоскости и раскладываются по сетке с заданным шагом. Каждая деталь поставлена нижней гранью на стол (Z=0), что делает её готовой к экспорту в STL и последующей печати. Режим автоматически вычисляет оптимальное количество столбцов и строк.

single — печать одной детали по индексу

Позволяет экспортировать ровно один тип детали для поэтапной печати. Индекс передаётся через переменную part_index. При выходе за границы диапазона индекс корректируется циклически.

6. Лист раскроя и проверка собираемости

Перед печатью система выполняет автоматическую проверку модели на набор типичных ошибок. Результаты выводятся в консоль:

  • Проверка индексов — выявление рёбер, ссылающихся на несуществующие узлы.
  • Петли — обнаружение рёбер, соединяющих узел с самим собой.
  • Дубликаты рёбер — пары узлов, соединённых более чем одним ребром.
  • Острые углы — узлы, в которых минимальный угол между лучами ниже порога min_angle_warn (по умолчанию 22°). Острые углы затрудняют печать и ослабляют конструкцию.
  • Короткие пролёты — свободное пространство между пазами на стержне меньше минимально допустимого (min_free_span, по умолчанию 5 мм).

Лист раскроя стержней

Длины всех внешних стержней вычисляются с учётом радиуса коннектора (r_in) и глубины посадки (stick_insert_depth). Далее длины сортируются, дубликаты удаляются, и формируется итоговый список с количеством стержней каждого размера. Суммарная длина выводится в метрах для удобства закупки материала.

7. Визуализация и маркировка

Для наглядности в режиме сборки каждый тип коннектора раскрашивается в уникальный цвет из палитры (PAL). Стержни отрисовываются цветом BurlyWood, имитируя деревянные палочки. При включённой маркировке (show_labels = true) над каждым коннектором отображается индекс его типа — это удобно при сортировке деталей после печати.

Рекомендации по настройке

  • Для повышения точности купола увеличьте $fn (по умолчанию 40) — это повысит качество сферических поверхностей.
  • Если при сборке обнаруживаются зазоры, уменьшите tolerance (по умолчанию 0.25 мм) или увеличьте глубину паза stick_insert_depth.
  • Для жёсткой сборки используйте тип "cross" — крестовой вал обеспечивает фиксацию в нескольких плоскостях и не допускает проворачивания стержня.
  • Перфорация (perforation = true) снижает расход материала и ускоряет печать, не критично влияя на прочность коннектора.

Заключение

Представленная методика демонстрирует, как параметрическое моделирование позволяет автоматизировать проектирование геодезических куполов произвольной сложности. Ключевые преимущества подхода:

  1. Полная дублируемость — изменение базовой геометрии (массива узлов и рёбер) автоматически пересчитывает всю спецификацию, коннекторы и лист раскроя.
  2. Обобщение через параметры — тип сечения, допуски, толщина стенок и глубина паза задаются централизованно и применяются ко всем деталям единообразно.
  3. Автоматическая проверка — встроенные валидаторы ловят типичные ошибки топологии (петли, дубликаты, острые углы, короткие пролёты) до начала физической печати.
  4. Гибкость режимов вывода — от полной сборки до поштучной печати отдельных типов деталей с автоматической раскладкой на рабочий стол принтера.

Данный подход может быть расширен для построения куполов других частот (подразделение граней на большее число элементов), применения различных типов соединений (шарнирные, винтовые) и интеграции с системами автоматизированного проектирования через экспорт STL-файлов.

К списку статей
Мы используем файлы COOKIES

Продолжая работу с сайтом, вы подтверждаете использование аналитических файлов-cookies и сбор пользовательских данных (IP-адрес, данные браузера) для улучшения работы сервиса. Если вы не согласны, пожалуйста, покиньте сайт.