Инструменты6 сентября 2026 г., 11:46 МСК🤖 Auto

build123d: Python-библиотека для CAD-моделирования с двумя режимами

Появилась новая open-source библиотека build123d, позволяющая создавать параметрические 3D-модели для 3D-печати и ЧПУ-обработки прямо в Python. Проект предлагает два подхода: алгебраический и builder-режим.

Баннер новости 6879

Что такое build123d и зачем это нужно

build123d — это фреймворк для параметрического моделирования (BREP) на Python, построенный на базе геометрического ядра Open Cascade. Главная цель проекта — предоставить чистый, «питонический» интерфейс для создания точных CAD-моделей, пригодных для 3D-печати, лазерной резки и ЧПУ-обработки. В отличие от традиционных CAD-систем, здесь дизайн описывается кодом, что обеспечивает версионность и воспроизводимость проектов.

Два режима работы: Алгебраический и Builder

Ключевая особенность библиотеки — наличие двух парадигм моделирования, что позволяет выбирать подход под задачу:

  • Algebra Mode (Алгебраический режим): Безсостоянийный (stateless) подход. Каждая операция возвращает новый объект, а изменения вносятся через алгебраические операторы (например, obj += sub_obj). Это обеспечивает читаемость и композируемость логики дизайна.
  • Builder Mode (Режим построителя): Подход, напоминающий историю построения в классических CAD. Состояние отслеживается внутри контекстов (with BuildPart():). Операции aware (осведомлены) о pending-фигурах, а трансформации применяются ко всем дочерним объектам. Введен модификатор mode для управления тем, как новые фигуры объединяются с контекстом (ADD, SUBTRACT, REPLACE).

Технические детали и возможности

Библиотека строго типизирована (PEP 8, mypy, pylint) и использует rich type hints для pylance. Она поддерживает работу с 1D (Edges, Wires), 2D (Faces, Sketches) и 3D (Solids, Parts) геометрией. Важной функцией является экспорт в форматы, совместимые с FreeCAD и SolidWorks, а также импорт/экспорт STL, STEP и SVG для взаимодействия со слайсерами и CAM-системами.

Примеры кода

Ниже приведена сравнительная таблица синтаксиса для создания базовой геометрии в разных режимах:

Характеристика Algebra Mode Builder Mode
Создание линии line = Line((0,0), (10,0)) with BuildLine(): line = Line((0,0), (10,0))
Создание эллипса/дуги line += JernArc(line, radius=5, arc_size=180) line += JernArc(line, radius=5, arc_size=180)
Создание 2D-эскиза sketch = make_hull(line.edges()) with BuildSketch(): make_face()
Экструзия в 3D part = sketch.extrude(amount=5) extrude(amount=5) (в контексте BuildPart)
Управление состоянием Нет внутреннего состояния Отслеживание через контексты with

Установка и экосистема

Проект лицензирован под Apache License 2.0 и является форком/рефакторингом частей библиотеки CadQuery. Для установки рекомендуется использовать pip:

pip install build123d

Для визуализации моделей разработчики рекомендуют использовать ocp_vscode — расширение для VS Code и standalone-вьювер. Активная разработка ведется в ветке development, где доступны самые свежие функции.

Источник: Github ↗