Изучить доступные САПР ядра (#5) #7

Open
Agent wants to merge 1 commits from issue-5-cad-kernels into dev
Collaborator

Что сделано

Добавлен docs/cad_kernels.md — исследование геометрических ядер САПР с рекомендацией. Разобраны две группы: открытые ядра (OCCT, truck, Fornjot, SolveSpace, BRL-CAD, openNURBS, curvo, Manifold, CGAL) и закрытые с бесплатными или некоммерческими лицензиями (C3D Modeler, Parasolid, ACIS/CGM, Zoo Design API) — вторая группа добавлена по уточнению владельца, тело задачи говорило только про опенсорс. К пяти требованиям задачи добавлено шестое — лицензия: и GPL, и некоммерческая лицензия упираются в один вопрос «что будет при коммерциализации», а ядро не меняют за неделю.

Проверка не ограничилась чтением документации: truck и OCCT через opencascade-rs собраны и прогнаны зондами на одной и той же задаче (цилиндр, булевы операции с кубом, тесселяция, экспорт STEP).

Рекомендация: Open CASCADE Technology через opencascade-rs, запасной вариант — truck.

Самое существенное из найденного:

  • Fornjot архивирован 19 июня 2026 с формулировкой автора «Its goals were never reached» — главный чисто-растовый претендент выбывает.
  • opencascade-rs на Windows из коробки не собирается. Понадобились три настройки окружения (политика CMake 4.x против OCCT 7.8.1, генератор Ninja вместо VS, короткий путь из-за CMAKE_OBJECT_PATH_MAX), патч из закрытого невлитого PR #230 и четыре строки правки build.rs — предмет до сих пор открытого PR #216. Первая сборка упала через 36 минут.
  • OCCT сохраняет аналитику, truck — нет. На одном цилиндре: OCCT пишет 1 × CYLINDRICAL_SURFACE в файл 5 652 байта, truck — 9 × B_SPLINE_SURFACE в 13 281 байт. Булевы у OCCT в 4–6 раз быстрее (7,2 мс против 32,6 мс).
  • Исключение к LGPL у OCCT покрывает только заголовочные файлы, а не линковку. При этом режим builtin собирает OCCT статически, а динамический путь требует системной OCCT ветки 7.x — версию 8.x обвязка отвергает жёсткой проверкой в build.rs.
  • Бесплатного входа в промышленное ядро нет ни у одного из закрытых: C3D — 90 дней, Parasolid и ACIS/CGM — только переговоры без публичных условий, Zoo — облако с поминутной оплатой.

Коммиты

  • 3b66719 Исследование геометрических ядер САПР: выбор и обоснование

Проверки

  • сборка проекта — не затрагивается: docs/ не упоминается ни в CMakeLists.txt, ни в cmake/*.cmake, документ в сборке не участвует. Тестов и линтеров для markdown в проекте нет, поэтому прогонять здесь нечего, и делать вид, что прогнал, не буду.
  • фактическая проверка этой задачи — сборки и прогоны кандидатов: truck собрался за 98,6 с и отработал зонды; OCCT собрался после перечисленных обходов, зонд отработал целиком (булевы, фаска, тесселяция, экспорт STEP/IGES/STL, чтение STEP обратно).
  • все 18 ссылок документа проверены на доступность — отвечают 200.

Отклонения от плана

Два, оба в сторону большей глубины:

  1. План предполагал измерить сборку финалистов. Фактически пришлось ещё и чинить сборку opencascade-rs — иначе вывод свёлся бы к «не собирается», что неверно и неполезно. Патчи применялись во временном каталоге вне репозитория, в дерево проекта не попали.
  2. Таймбокс на сборку OCCT (40 минут) формально сработал: первая попытка упала на 36-й минуте. Процесс не прерывался, потому что упал сам, а последующие пересборки заняли уже 1 мин 45 с — ядро было собрано.

Не сделано намеренно: лицензионные условия у C3D Labs и Siemens не запрашивались — регистрация и переписка идут от имени владельца, это выписано в документе отдельным списком.

Closes #5

## Что сделано Добавлен `docs/cad_kernels.md` — исследование геометрических ядер САПР с рекомендацией. Разобраны две группы: открытые ядра (OCCT, truck, Fornjot, SolveSpace, BRL-CAD, openNURBS, curvo, Manifold, CGAL) и закрытые с бесплатными или некоммерческими лицензиями (C3D Modeler, Parasolid, ACIS/CGM, Zoo Design API) — вторая группа добавлена по уточнению владельца, тело задачи говорило только про опенсорс. К пяти требованиям задачи добавлено шестое — лицензия: и GPL, и некоммерческая лицензия упираются в один вопрос «что будет при коммерциализации», а ядро не меняют за неделю. Проверка не ограничилась чтением документации: **truck и OCCT через `opencascade-rs` собраны и прогнаны зондами на одной и той же задаче** (цилиндр, булевы операции с кубом, тесселяция, экспорт STEP). **Рекомендация: Open CASCADE Technology через `opencascade-rs`, запасной вариант — truck.** Самое существенное из найденного: - **Fornjot архивирован** 19 июня 2026 с формулировкой автора «Its goals were never reached» — главный чисто-растовый претендент выбывает. - **`opencascade-rs` на Windows из коробки не собирается.** Понадобились три настройки окружения (политика CMake 4.x против OCCT 7.8.1, генератор Ninja вместо VS, короткий путь из-за `CMAKE_OBJECT_PATH_MAX`), патч из **закрытого невлитого** PR #230 и четыре строки правки `build.rs` — предмет до сих пор **открытого** PR #216. Первая сборка упала через 36 минут. - **OCCT сохраняет аналитику, truck — нет.** На одном цилиндре: OCCT пишет 1 × `CYLINDRICAL_SURFACE` в файл 5 652 байта, truck — 9 × `B_SPLINE_SURFACE` в 13 281 байт. Булевы у OCCT в 4–6 раз быстрее (7,2 мс против 32,6 мс). - **Исключение к LGPL у OCCT покрывает только заголовочные файлы, а не линковку.** При этом режим `builtin` собирает OCCT статически, а динамический путь требует системной OCCT ветки 7.x — версию 8.x обвязка отвергает жёсткой проверкой в `build.rs`. - **Бесплатного входа в промышленное ядро нет ни у одного из закрытых:** C3D — 90 дней, Parasolid и ACIS/CGM — только переговоры без публичных условий, Zoo — облако с поминутной оплатой. ## Коммиты - `3b66719` Исследование геометрических ядер САПР: выбор и обоснование ## Проверки - сборка проекта — **не затрагивается**: `docs/` не упоминается ни в `CMakeLists.txt`, ни в `cmake/*.cmake`, документ в сборке не участвует. Тестов и линтеров для markdown в проекте нет, поэтому прогонять здесь нечего, и делать вид, что прогнал, не буду. - фактическая проверка этой задачи — сборки и прогоны кандидатов: truck собрался за 98,6 с и отработал зонды; OCCT собрался после перечисленных обходов, зонд отработал целиком (булевы, фаска, тесселяция, экспорт STEP/IGES/STL, чтение STEP обратно). - все 18 ссылок документа проверены на доступность — отвечают 200. ## Отклонения от плана Два, оба в сторону большей глубины: 1. План предполагал измерить сборку финалистов. Фактически пришлось ещё и **чинить** сборку `opencascade-rs` — иначе вывод свёлся бы к «не собирается», что неверно и неполезно. Патчи применялись во временном каталоге вне репозитория, в дерево проекта не попали. 2. Таймбокс на сборку OCCT (40 минут) формально сработал: первая попытка упала на 36-й минуте. Процесс не прерывался, потому что упал сам, а последующие пересборки заняли уже 1 мин 45 с — ядро было собрано. Не сделано намеренно: лицензионные условия у C3D Labs и Siemens не запрашивались — регистрация и переписка идут от имени владельца, это выписано в документе отдельным списком. Closes #5
Agent added 1 commit 2026-09-18 02:45:55 +03:00
Сравнение открытых и закрытых (с бесплатными лицензиями) ядер по пяти
требованиям задачи плюс лицензионный риск шестым. Кандидаты проверены не
только по документации: truck и OCCT через opencascade-rs собраны и прогнаны
зондами на одной задаче.

Ключевое из измеренного:
- Fornjot архивирован в июне 2026, целей не достиг — из кандидатов выбывает;
- opencascade-rs на Windows из коробки не собирается: три настройки окружения,
  непринятый PR #230 и четыре строки правки build.rs;
- OCCT сохраняет CYLINDRICAL_SURFACE там, где truck пишет девять сплайновых
  заплаток, и считает булевы в 4-6 раз быстрее;
- исключение к LGPL у OCCT покрывает только заголовки, не линковку;
- бесплатного входа в промышленное ядро нет ни у C3D, ни у Parasolid, ни у ACIS.

Рекомендация: OCCT через opencascade-rs, запасной вариант truck.

#5

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin issue-5-cad-kernels:issue-5-cad-kernels
git checkout issue-5-cad-kernels
Sign in to join this conversation.