docs: handoff — инкремент 2 (assembly_add_mate) готов; далее — компоненты/чертёж
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,15 +14,22 @@
|
|||||||
затем ЧЕРТЁЖ.
|
затем ЧЕРТЁЖ.
|
||||||
|
|
||||||
## Текущее состояние (main, синхронизирован с origin)
|
## Текущее состояние (main, синхронизирован с origin)
|
||||||
- 71 MCP-инструмент, 138 тестов зелёных (83 unit + 55 integration).
|
- 72 MCP-инструмента, 156 тестов зелёных (98 unit + 58 integration).
|
||||||
- **СБОРКИ начаты:** `assembly_add_component` СДЕЛАН (инкремент 1 вехи 1) — вставка детали/подсборки
|
- **СБОРКИ: инкременты 1 и 2 СДЕЛАНЫ** (API7, `AssemblyService`, namespace `Kompas.Mcp.Core.Assemblies`):
|
||||||
из `.m3d`/`.a3d` в активную сборку с позицией (API7, `AssemblyService`, namespace
|
- `assembly_add_component(filePath, x, y, z)` — вставка детали/подсборки из `.m3d`/`.a3d` с позицией.
|
||||||
`Kompas.Mcp.Core.Assemblies`). Workflow: `IParts7.AddFromFile(path,true,true)` →
|
Workflow: `IParts7.AddFromFile(path,true,true)` → `part.Placement.SetOrigin(x,y,z)` →
|
||||||
`part.Placement.SetOrigin(x,y,z)` → `UpdatePlacement(true)` → `top.RebuildModel(true)`.
|
`UpdatePlacement(true)` → `top.RebuildModel(true)`. Эмпирика: `UpdatePlacement`=FALSE для вручную
|
||||||
Эмпирика: `UpdatePlacement`=FALSE для вручную позиционируемого компонента — НЕ ошибка; позицию
|
позиционируемого компонента — НЕ ошибка; позицию применяет SetOrigin+RebuildModel; разфиксация
|
||||||
применяет SetOrigin, видимой делает RebuildModel; разфиксация первого компонента НЕ нужна.
|
первого компонента НЕ нужна.
|
||||||
Спек: `docs/superpowers/specs/2026-05-27-assembly-add-component-design.md`. **СЛЕДУЮЩЕЕ — инкремент 2:
|
- `assembly_add_mate(mateType, x1,y1,z1, x2,y2,z2, value)` — сопряжение граней двух компонентов.
|
||||||
`assembly_add_mate` (сопряжения).**
|
Workflow: `(IMateConstraints3D)top.MateConstraints` → `Add(MateConstraintType)` → `BaseObject1/2`
|
||||||
|
(грани через `top.FindObjectsByPoint(x,y,z,FirstLevel=false)`) → `ParamValue` (distance) →
|
||||||
|
`Update()` → `RebuildModel(true)` → проверка `mate.Valid` (false→ошибка+откат). Типы: `coincidence`,
|
||||||
|
`distance` (value>0). Решатель может двигать любой компонент → тест по ширине габарита.
|
||||||
|
- Спеки: `2026-05-27-assembly-add-component-design.md`, `2026-05-27-assembly-add-mate-design.md`.
|
||||||
|
- **Тест-инфра:** `IntegrationTestBase` (per-test `DocumentService.CloseAllAsync`) — все интеграционные
|
||||||
|
классы наследуют его.
|
||||||
|
- **СЛЕДУЮЩЕЕ — инкремент 3 (по желанию) или ВЕХА 2 (2D-ЧЕРТЁЖ).** См. ниже.
|
||||||
- Деталь: эскизы (пакет A), формообразующие (extrude/revolve/fillet/chamfer/shell/rib/sweep/loft),
|
- Деталь: эскизы (пакет A), формообразующие (extrude/revolve/fillet/chamfer/shell/rib/sweep/loft),
|
||||||
массивы и зеркало (пакет C), уклон (`draft`), все типы отверстий (`hole`/`_counterbore`/
|
массивы и зеркало (пакет C), уклон (`draft`), все типы отверстий (`hole`/`_counterbore`/
|
||||||
`_countersink`/`_conic`, API7), переменные (`create/set/delete_variable`), STEP import/export,
|
`_countersink`/`_conic`, API7), переменные (`create/set/delete_variable`), STEP import/export,
|
||||||
@@ -56,19 +63,19 @@
|
|||||||
|
|
||||||
Рекомендуемые инкременты (по одному, до зелёного → merge):
|
Рекомендуемые инкременты (по одному, до зелёного → merge):
|
||||||
1. ✅ **СДЕЛАНО:** `assembly_add_component(filePath, x, y, z)` — вставка детали из файла в сборку.
|
1. ✅ **СДЕЛАНО:** `assembly_add_component(filePath, x, y, z)` — вставка детали из файла в сборку.
|
||||||
2. **СЛЕДУЮЩЕЕ:** `assembly_add_mate(...)` — сопряжение между гранями/рёбрами двух компонентов
|
2. ✅ **СДЕЛАНО:** `assembly_add_mate` — сопряжения coincidence/distance (см. «Текущее состояние»).
|
||||||
(начни с совпадения/coincidence или расстояния). API7-путь (из ревью SDK): коллекция
|
Расширения (будущее): прочие типы (parallel/perpendicular/concentric/angle/tangency — добавить с
|
||||||
`(IMateConstraints3D)top.MateConstraints` → `Add(MateConstraintType)` → `IMateConstraint3D`
|
геометрической проверкой, concentric требует цилиндрических граней), параметр `Alignment`
|
||||||
(`BaseObject1`/`BaseObject2` = IModelObject граней компонентов; для `mc_Distance` — `ParamValue`;
|
(`ksMCAlignmentCooriented`/`Opposite`/`Closest`). Для concentric/angle проверять тип грани.
|
||||||
`Alignment`) → `Update()`. Типы: `mc_Coincidence=0`, `mc_Parallel=1`, `mc_Perpendicular=2`,
|
3. **(по желанию)** Перемещение/массив/фиксация компонентов. ИЛИ сразу переходить к ВЕХЕ 2 (чертёж) —
|
||||||
`mc_Tangency=3`, `mc_Concentric=4`, `mc_Distance=5`, `mc_Angle=6`, `mc_Symmetric=11`. Альтернатива
|
она самый ценный нереализованный класс после сборок.
|
||||||
API5: `ksDocument3D.AddMateConstraint(type, obj1, obj2, direction, fixed, val)`. **Сначала
|
|
||||||
рефлексия interop** (`IMateConstraints3D`/`IMateConstraint3D`/`MateConstraintType` — проверь
|
Проверенный API сопряжений (для расширений): `(IMateConstraints3D)top.MateConstraints` →
|
||||||
наличие и точные имена в v24) — возможна тонкость с именами/доступностью, как с параметрикой.
|
`Add(MateConstraintType)` → `IMateConstraint3D` (`BaseObject1`/`BaseObject2` = IModelObject граней;
|
||||||
Тест: 2 компонента → сопряжение совпадения/расстояния граней → габарит сборки меняется
|
`ParamValue` для distance/angle; `Alignment`) → `Update()` → `RebuildModel(true)`. Типы:
|
||||||
предсказуемо. Объекты граней компонентов брать через их `IPart7.FindObjectsByPoint` (в мировых
|
`mc_Coincidence=0`, `mc_Parallel=1`, `mc_Perpendicular=2`, `mc_Tangency=3`, `mc_Concentric=4`,
|
||||||
координатах с учётом placement компонента).
|
`mc_Distance=5`, `mc_Angle=6`, `mc_Symmetric=11`. Грани компонентов — `top.FindObjectsByPoint(x,y,z,
|
||||||
3. Перемещение/массив компонентов, фиксация — при необходимости.
|
FirstLevel=false)` (мировые координаты с учётом placement). Память: `kompas-assembly-insert-api7`.
|
||||||
|
|
||||||
Тонкости: компоненту нужен сохранённый файл-источник (сначала сохрани деталь). Уточни через
|
Тонкости: компоненту нужен сохранённый файл-источник (сначала сохрани деталь). Уточни через
|
||||||
`kompas-sdk-research` точные сигнатуры `AddFromFile`/`AddFromFileWithParam`, что такое
|
`kompas-sdk-research` точные сигнатуры `AddFromFile`/`AddFromFileWithParam`, что такое
|
||||||
|
|||||||
Reference in New Issue
Block a user