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

Open
opened 2026-09-10 15:26:13 +03:00 by NotBigGhost · 2 comments
Owner

Определение задачи

Исследование доступных опенсорсных ядер САПР и их применимости для данного проекта. В результате должен быть составлен документ, в рамках которого должны быть описаны наиболее подходящие для проекта движки, с обоснованием их ценности.

Критерий готовности

Получение от владельца проекта утверждения движка(ов) после ознакомления с документом.

Требования

  1. движок должен быть легковесный и оптимизированный.
  2. желаемый стек движка - rust, или доступное для rust апи.
  3. движок должен иметь базовый набор редактирования трёхмерных объектов (аналог plasticity).
  4. поддержка nurbs.
  5. поддержка стандартных параметрических и полигональных форматов.
# Определение задачи Исследование доступных опенсорсных ядер САПР и их применимости для данного проекта. В результате должен быть составлен документ, в рамках которого должны быть описаны наиболее подходящие для проекта движки, с обоснованием их ценности. # Критерий готовности Получение от владельца проекта утверждения движка(ов) после ознакомления с документом. # Требования 1) движок должен быть легковесный и оптимизированный. 2) желаемый стек движка - rust, или доступное для rust апи. 3) движок должен иметь базовый набор редактирования трёхмерных объектов (аналог plasticity). 4) поддержка nurbs. 5) поддержка стандартных параметрических и полигональных форматов.
NotBigGhost added this to the 2. Создание базового интерфейса и функционала САПР milestone 2026-09-10 15:26:13 +03:00
Agent added the
Reviewed
Confirmed
1
label 2026-09-18 01:33:22 +03:00
Agent self-assigned this 2026-09-18 01:33:25 +03:00
NotBigGhost added the Kind/Proposal label 2026-09-18 01:37:57 +03:00
Collaborator

План выполнения

Результат — документ docs/cad_kernels.md (русский, стиль docs/rust_vs_cpp.md: разложенные факты и измеренные числа).

  1. Длинный список и отсев. Открытые: Open CASCADE (OCCT), truck, Fornjot, SolveSpace, BRL-CAD, Rust-обвязки opencascade-rs/occt-sys; отдельно геометрия без моделирования (openNURBS, curvo, Manifold, CGAL) — с явной причиной отсева.
  2. Закрытые ядра с бесплатной или некоммерческой лицензией — по уточнению владельца рамка шире, чем «опенсорс» в теле задачи: C3D Modeler, Parasolid (на нём построена названная в задаче Plasticity), 3D ACIS, CGM Modeler, Zoo Design API (проприетарное ядро на Rust с бесплатным тарифом). Обмен форматами (CAD Exchanger SDK, HOOPS Exchange, ODA) — только как дополнение к требованию 5.
  3. Лицензионный фильтр отдельным разделом: бесплатно сейчас ≠ бесплатно в продукте. По каждому кандидату — что разрешает лицензия и что происходит при коммерциализации.
  4. Практическая проверка финалистов: сборка в песочнице вне репозитория, замеры времени холодной сборки, веса зависимостей и артефакта. Таймбокс на OCCT — 40 минут; превышение само по себе результат («стоимость входа»).
  5. Документ: требования → кандидаты двумя группами → сводная таблица «кандидат × требование» с колонкой лицензионного риска → измерения → рекомендация с запасным вариантом → риски и что придётся писать самим → источники.

Критерии готовности

  • Все пять требований задачи разобраны по каждому кандидату короткого списка.
  • По каждому закрытому ядру сказано, что разрешает бесплатная лицензия и что будет при коммерциализации.
  • Каждое утверждение о лицензии, статусе и возможностях — со ссылкой на источник.
  • Числа по финалистам измерены на этой машине; взятое из чужих источников помечено как таковое.
  • Однозначная рекомендация с обоснованием и названный запасной вариант.
  • Закрытие задачи — за владельцем: критерий готовности в теле задачи требует утверждения движка после ознакомления с документом, PR лишь доставляет документ.

Ветка: issue-5-cad-kernels от dev

Оговорка по процессу: получение лицензионных файлов для закрытых ядер (C3D, ACIS, Parasolid) требует регистрации от имени владельца — эти шаги будут выписаны в документе отдельным списком, а не выполнены мной.

## План выполнения Результат — документ `docs/cad_kernels.md` (русский, стиль `docs/rust_vs_cpp.md`: разложенные факты и измеренные числа). 1. **Длинный список и отсев.** Открытые: Open CASCADE (OCCT), truck, Fornjot, SolveSpace, BRL-CAD, Rust-обвязки `opencascade-rs`/`occt-sys`; отдельно геометрия без моделирования (openNURBS, `curvo`, Manifold, CGAL) — с явной причиной отсева. 2. **Закрытые ядра с бесплатной или некоммерческой лицензией** — по уточнению владельца рамка шире, чем «опенсорс» в теле задачи: C3D Modeler, Parasolid (на нём построена названная в задаче Plasticity), 3D ACIS, CGM Modeler, Zoo Design API (проприетарное ядро на Rust с бесплатным тарифом). Обмен форматами (CAD Exchanger SDK, HOOPS Exchange, ODA) — только как дополнение к требованию 5. 3. **Лицензионный фильтр отдельным разделом:** бесплатно сейчас ≠ бесплатно в продукте. По каждому кандидату — что разрешает лицензия и что происходит при коммерциализации. 4. **Практическая проверка финалистов:** сборка в песочнице вне репозитория, замеры времени холодной сборки, веса зависимостей и артефакта. Таймбокс на OCCT — 40 минут; превышение само по себе результат («стоимость входа»). 5. **Документ:** требования → кандидаты двумя группами → сводная таблица «кандидат × требование» с колонкой лицензионного риска → измерения → рекомендация с запасным вариантом → риски и что придётся писать самим → источники. **Критерии готовности** - Все пять требований задачи разобраны по каждому кандидату короткого списка. - По каждому закрытому ядру сказано, что разрешает бесплатная лицензия и что будет при коммерциализации. - Каждое утверждение о лицензии, статусе и возможностях — со ссылкой на источник. - Числа по финалистам измерены на этой машине; взятое из чужих источников помечено как таковое. - Однозначная рекомендация с обоснованием и названный запасной вариант. - Закрытие задачи — за владельцем: критерий готовности в теле задачи требует утверждения движка после ознакомления с документом, PR лишь доставляет документ. **Ветка:** `issue-5-cad-kernels` от `dev` Оговорка по процессу: получение лицензионных файлов для закрытых ядер (C3D, ACIS, Parasolid) требует регистрации от имени владельца — эти шаги будут выписаны в документе отдельным списком, а не выполнены мной.
Collaborator

Работа выполнена, открыт PR: #7

Итог: рекомендую Open CASCADE Technology через opencascade-rs, запасной вариант — truck. Документ docs/cad_kernels.md разбирает 13 кандидатов в двух группах (открытые и закрытые с бесплатными лицензиями) по пяти требованиям задачи плюс лицензионный риск шестым.

Проверки: truck и OCCT не просто изучены по документации, а собраны и прогнаны зондами на одной задаче. truck — сборка 98,6 с, зонды отработали. OCCT — собрался только после трёх настроек окружения, патча из невлитого PR и четырёх строк правки build.rs; после этого зонд отработал целиком. Все 18 ссылок документа проверены (200). Сборка проекта не затрагивается: docs/ не упоминается в CMake.

Что определило выбор: OCCT на одном цилиндре пишет CYLINDRICAL_SURFACE в 5 652 байта, truck — девять сплайновых заплаток в 13 281 байт; булевы у OCCT в 4–6 раз быстрее. Fornjot, главный чисто-растовый претендент, архивирован в июне 2026. Бесплатного входа в промышленное ядро нет ни у C3D, ни у Parasolid, ни у ACIS.

Статус: метки Status/In Review в этом репозитории нет (набор — 18 меток), поэтому состояние «ушло на утверждение» осталось без метки. Reviewed/Confirmed стоит.

Осталось за вами:

  1. Утвердить ядро — это и есть критерий готовности из тела задачи; PR лишь доставляет документ.
  2. Решить вопрос линковки, если продукт проприетарный: удобный путь даёт статический OCCT, а исключение к LGPL покрывает только заголовки.
  3. Решить про форк opencascade-rs — без него сборку на Windows каждый разработчик будет чинить заново.
  4. Ревью и мёрж PR — задача закроется автоматически.
Работа выполнена, открыт PR: https://gitea.arseniev.info/NotBigGhost/CFDManager/pulls/7 **Итог:** рекомендую **Open CASCADE Technology через `opencascade-rs`**, запасной вариант — **truck**. Документ `docs/cad_kernels.md` разбирает 13 кандидатов в двух группах (открытые и закрытые с бесплатными лицензиями) по пяти требованиям задачи плюс лицензионный риск шестым. **Проверки:** truck и OCCT не просто изучены по документации, а собраны и прогнаны зондами на одной задаче. truck — сборка 98,6 с, зонды отработали. OCCT — собрался только после трёх настроек окружения, патча из невлитого PR и четырёх строк правки `build.rs`; после этого зонд отработал целиком. Все 18 ссылок документа проверены (200). Сборка проекта не затрагивается: `docs/` не упоминается в CMake. **Что определило выбор:** OCCT на одном цилиндре пишет `CYLINDRICAL_SURFACE` в 5 652 байта, truck — девять сплайновых заплаток в 13 281 байт; булевы у OCCT в 4–6 раз быстрее. Fornjot, главный чисто-растовый претендент, архивирован в июне 2026. Бесплатного входа в промышленное ядро нет ни у C3D, ни у Parasolid, ни у ACIS. **Статус:** метки `Status/In Review` в этом репозитории нет (набор — 18 меток), поэтому состояние «ушло на утверждение» осталось без метки. `Reviewed/Confirmed` стоит. **Осталось за вами:** 1. Утвердить ядро — это и есть критерий готовности из тела задачи; PR лишь доставляет документ. 2. Решить вопрос линковки, если продукт проприетарный: удобный путь даёт статический OCCT, а исключение к LGPL покрывает только заголовки. 3. Решить про форк `opencascade-rs` — без него сборку на Windows каждый разработчик будет чинить заново. 4. Ревью и мёрж PR — задача закроется автоматически.
NotBigGhost added the
Status
In Review
label 2026-09-18 02:49:46 +03:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: NotBigGhost/CFDManager#5