Сравнение открытых и закрытых (с бесплатными лицензиями) ядер по пяти
требованиям задачи плюс лицензионный риск шестым. Кандидаты проверены не
только по документации: 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>
Файл описывает всё дерево целиком, а ветки содержат разные его части
(порт на Rust, исследование CFD, базовый C++-редактор). Отслеживаемая
копия при каждом переключении подменялась бы версией своей ветки, тогда
как нужна одна общая. Содержимое на всех ветках было идентично, так что
расхождений открепление не теряет.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B9Gcr11JJJyf8NnWsXjDzZ
2026-09-06 16:25:03 +03:00
3 changed files with 469 additions and 202 deletions
Есть `write_step` / `write_iges` / `write_stl`, `read_step`, `mesh()`
с настраиваемым допуском, фаски, скругления, выдавливание, заметание по траектории.
**Существенное отставание:**`occt-sys` зафиксирован на OCCT **7.8.1**, тогда как
апстрим уже 8.0.1. Это не косметика — между ними мажорный релиз, и всё, что исправлено
в 7.9 и 8.0, в этом пути недоступно, пока обвязку не обновят. Причём 8.0 заявлен
командой OCCT3D (Capgemini Engineering) как релиз с ломающими изменениями API,
чисткой интерфейсов и переработкой булевых операций, тесселяции и обработки допусков —
то есть обновление обвязки будет не механическим, и ждать его быстро не стоит.
### truck — чистый Rust
Единственный живой чисто-растовый B-rep/NURBS кернел. Apache-2.0, 1559 звёзд,
коммиты в репозитории вплоть до 7 сентября 2026 — **но крейты на crates.io не
обновлялись с 20 сентября 2024** (`truck-modeling` 0.6.0). Два года git-активности
без релиза — характерный признак: пользоваться придётся либо старым релизом,
либо git-зависимостью.
Умеет: NURBS-геометрию, топологию (вершины/рёбра/грани/оболочки/тела), булевы операции
(`truck-shapeops`), тесселяцию (`truck-meshalgo`), чтение и запись STEP
(`truck-stepio`, есть и `in`, и `out`), полигональные форматы через `truck-polymesh`.
### Остальные открытые — отсев с причиной
| Проект | Состояние | Почему не подходит |
|---|---|---|
| **Fornjot** | архивирован 19 июня 2026 | Автор закрыл проект: «This project has been shut down. Its goals were never reached», код read-only, пригоден лишь для «very simple models» |
| **SolveSpace** | живой, 4163★, GPL-3.0 | GPLv3 несовместим с проприетарной поставкой; NURBS-булевы, по признанию самих авторов, медленные, ограничены поверхностями выдавливания и вращения и «not too robust even then» |
| **BRL-CAD** | живой, 1029★ | CSG-ориентированное ядро с Tcl-инфраструктурой, не про интерактивное NURBS-моделирование |
| **openNURBS** | живой, 562★ | Чтение/запись `.3dm` и NURBS-геометрия, **но моделирования нет**: ни булевых, ни фасок |
| **curvo** | живой, MIT, 0.1.91 | NURBS-кривые и поверхности как математика, не B-rep ядро |
| **Manifold** | живой, Apache-2.0, есть крейт `manifold3d` 0.4.1 (обновлён 9 сентября 2026) | Быстрые и надёжные булевы, но по **полигональным сеткам**; NURBS и B-rep отсутствуют как понятие. Полезен позже — для подготовки геометрии к расчётной сетке, не как ядро |
| **CGAL** | живой | Вычислительная геометрия, не САПР-ядро; ядро GPL с платной альтернативой |
Отдельно стоит отметить `libslvs` из SolveSpace: это **решатель геометрических
ограничений**, то есть ровно та подсистема, которой нет ни у OCCT, ни у truck.
К выбору ядра он отношения не имеет, но к параметрике — прямое (см. раздел о том,
что придётся писать самим).
---
## Группа 2. Закрытый код, бесплатные и некоммерческие лицензии
Задача изначально говорила про открытые ядра; рамка расширена владельцем проекта.
Результат этой группы отрезвляющий: **бесплатного входа в промышленное ядро нет ни
у одного из четырёх.**
### C3D Modeler (C3D Labs)
Единственное коммерческое геометрическое ядро российской разработки, одно из пяти
лицензируемых ядер в мире. B-rep с NURBS, обмен со STEP, IGES, Parasolid, ACIS,
полигональными форматами. API — C++ с C-обёрткой; Rust-биндингов нет, их пришлось бы
писать самим.
Публично доступна **только 90-дневная пробная версия** с техподдержкой. Бесплатной
некоммерческой или академической лицензии в открытом доступе найти не удалось:
у компании есть образовательные партнёрства с вузами, хакатоны и стажировки, но
лицензия под них публично не описана и выдаётся по договорённости. Условия
коммерческой лицензии компания называет гибкими и определяет индивидуально; цифра
в 1 750 000 ₽ в год за лицензию разработчика плюс роялти встречается во вторичных
источниках и **здесь не проверена** — уточнять её нужно у самой C3D Labs.
### Parasolid (Siemens)
Ядро, на котором построена названная в задаче Plasticity, а также SolidWorks, NX и
десятки других систем. Эталон по надёжности булевых и качеству поверхностей.
Лицензируется коммерчески; публичных условий, прайса, бесплатного или академического
тарифа в открытом доступе нет — вход только через переговоры с Siemens, и по отзывам
разработчиков процесс и суммы для небольших проектов оказываются заградительными.
Rust-биндингов нет.
### 3D ACIS Modeler и CGM Modeler (Spatial / Dassault Systèmes)
Второе историческое коммерческое ядро (ACIS, с конца 1980-х) и ядро CATIA (CGM).
Технически полноценные B-rep/NURBS ядра. Ситуация с лицензией та же, что у Parasolid:
публичных бесплатных или академических условий нет, пробный доступ и академические
программы — по запросу. Rust-биндингов нет.
### Zoo Design API (бывш. KittyCAD)
Самый близкий к требованию 2 вариант: проприетарное ядро, **написанное на Rust**,
GPU-native, выдаёт настоящий B-rep. Есть официальный Rust-клиент `kittycad.rs`,
открытые Design Studio и язык KCL.
Но это **облачный сервис**, а не библиотека: геометрия считается на их серверах,
тарификация поминутная, бесплатно даётся 20 минут API (баланс $10), дальше
pay-as-you-go. Для настольного САПР с интерактивным редактированием это означает
зависимость от сети, задержку на каждую операцию и оплату за использование, которая
растёт вместе с числом пользователей. Для проекта, который сам по себе считает
гидродинамику локально, такая схема противоречива.
### Обмен форматами отдельно
CAD Exchanger SDK, HOOPS Exchange, ODA — не ядра моделирования, а конвертеры.
Они закрывают требование 5 там, где ядро не справляется (DWG, JT, CATIA, NX), и
имеют смысл как **дополнение** к выбранному ядру, если такие форматы понадобятся.
Все три коммерческие. Для OCCT, который сам читает STEP и IGES, необходимости
в них на текущем этапе нет.
---
## Сводная таблица
Обозначения: ● полностью, ◐ частично, ○ нет.
| Кандидат | 1. Лёгкость | 2. Rust | 3. Редактирование | 4. NURBS | 5. Форматы | 6. Лицензия и её риск |
|---|---|---|---|---|---|---|
| **OCCT + opencascade-rs** | ○ 2,7 ГБ сборки, exe 19,4 МБ | ◐ биндинги есть, но на Windows не собираются без патчей | ● булевы, фаски, скругления | ● полноценно, аналитика сохраняется | ● STEP/IGES/STL/OBJ/glTF | LGPL-2.1+искл.: динамическая линковка — ок, статическая обязывает |
| **truck** | ● 98 с сборки, exe 1,6 МБ | ● родной, собрался с первой попытки | ◐ булевы есть (в 4–6 раз медленнее), набор беднее | ◐ есть, но аналитика уходит в B-сплайны | ◐ STEP r/w, полигоны; IGES нет | Apache-2.0 — риска нет |
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.