Геодезический купол из пятиугольников: параметрическое моделирование и методика раскроя
В данной статье рассматривается методика параметрического построения геодезического купола, основанного на подразделении базовой поверхности на пятиугольные элементы. Подход ориентирован на последующую цифровую фабрикацию — 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. Геометрия коннектора: пазы и сечения
Каждый узел-соединитель (коннектор) представляет собой тело вращения или экструзии с пазами под стержни. Система поддерживает три типа сечений палочек:
Прямоугольное сечение, имитирующее палочки от мороженого. Ширина и толщина задаются параметрически. Паз выполняется в виде прямоугольного отверстия с допуском tolerance.
Палочки с круглым профилем. Диаметр задаётся одним параметром. Паз — окружность с увеличенным диаметром на величину допуска.
Стандартный крестовой профиль с заданным габаритом и толщиной рёбер. Наиболее жёсткий вариант, обеспечивающий фиксацию стержня в нескольких плоскостях.
Для каждого типа сечения вычисляется габаритное сечение (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) снижает расход материала и ускоряет печать, не критично влияя на прочность коннектора.
Заключение
Представленная методика демонстрирует, как параметрическое моделирование позволяет автоматизировать проектирование геодезических куполов произвольной сложности. Ключевые преимущества подхода:
- Полная дублируемость — изменение базовой геометрии (массива узлов и рёбер) автоматически пересчитывает всю спецификацию, коннекторы и лист раскроя.
- Обобщение через параметры — тип сечения, допуски, толщина стенок и глубина паза задаются централизованно и применяются ко всем деталям единообразно.
- Автоматическая проверка — встроенные валидаторы ловят типичные ошибки топологии (петли, дубликаты, острые углы, короткие пролёты) до начала физической печати.
- Гибкость режимов вывода — от полной сборки до поштучной печати отдельных типов деталей с автоматической раскладкой на рабочий стол принтера.
Данный подход может быть расширен для построения куполов других частот (подразделение граней на большее число элементов), применения различных типов соединений (шарнирные, винтовые) и интеграции с системами автоматизированного проектирования через экспорт STL-файлов.