docs: handoff — инкремент 1 (assembly_add_component) готов; следующее — сопряжения
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,7 +14,15 @@
|
||||
затем ЧЕРТЁЖ.
|
||||
|
||||
## Текущее состояние (main, синхронизирован с origin)
|
||||
- 70 MCP-инструментов, 119 тестов зелёных (69 unit + 50 integration). Только ДЕТАЛЬ (`ksDocumentPart`).
|
||||
- 71 MCP-инструмент, 138 тестов зелёных (83 unit + 55 integration).
|
||||
- **СБОРКИ начаты:** `assembly_add_component` СДЕЛАН (инкремент 1 вехи 1) — вставка детали/подсборки
|
||||
из `.m3d`/`.a3d` в активную сборку с позицией (API7, `AssemblyService`, namespace
|
||||
`Kompas.Mcp.Core.Assemblies`). Workflow: `IParts7.AddFromFile(path,true,true)` →
|
||||
`part.Placement.SetOrigin(x,y,z)` → `UpdatePlacement(true)` → `top.RebuildModel(true)`.
|
||||
Эмпирика: `UpdatePlacement`=FALSE для вручную позиционируемого компонента — НЕ ошибка; позицию
|
||||
применяет SetOrigin, видимой делает RebuildModel; разфиксация первого компонента НЕ нужна.
|
||||
Спек: `docs/superpowers/specs/2026-05-27-assembly-add-component-design.md`. **СЛЕДУЮЩЕЕ — инкремент 2:
|
||||
`assembly_add_mate` (сопряжения).**
|
||||
- Деталь: эскизы (пакет A), формообразующие (extrude/revolve/fillet/chamfer/shell/rib/sweep/loft),
|
||||
массивы и зеркало (пакет C), уклон (`draft`), все типы отверстий (`hole`/`_counterbore`/
|
||||
`_countersink`/`_conic`, API7), переменные (`create/set/delete_variable`), STEP import/export,
|
||||
@@ -47,13 +55,19 @@
|
||||
`IMate3DByTangent`, `IMate3DSymmetry`, и др. (совпадение/параллельность/расстояние/угол).
|
||||
|
||||
Рекомендуемые инкременты (по одному, до зелёного → merge):
|
||||
1. `assembly_add_component(filePath, x, y, z)` — вставить деталь из `.m3d`-файла в активную сборку.
|
||||
Тест: построить деталь → `document_save_as` во временный файл (`.scratch/`) → создать сборку →
|
||||
вставить компонент → `list_components` показывает 1 компонент, габарит/объём сборки ≈ детали.
|
||||
(Эталон обхода/извлечения — память `kompas-step-and-assembly-api`.)
|
||||
2. `assembly_add_mate(...)` — сопряжение между гранями/рёбрами двух компонентов (начни с
|
||||
совпадения/coincidence или расстояния). Тест: 2 компонента → сопряжение → положение/габарит
|
||||
меняется предсказуемо.
|
||||
1. ✅ **СДЕЛАНО:** `assembly_add_component(filePath, x, y, z)` — вставка детали из файла в сборку.
|
||||
2. **СЛЕДУЮЩЕЕ:** `assembly_add_mate(...)` — сопряжение между гранями/рёбрами двух компонентов
|
||||
(начни с совпадения/coincidence или расстояния). API7-путь (из ревью SDK): коллекция
|
||||
`(IMateConstraints3D)top.MateConstraints` → `Add(MateConstraintType)` → `IMateConstraint3D`
|
||||
(`BaseObject1`/`BaseObject2` = IModelObject граней компонентов; для `mc_Distance` — `ParamValue`;
|
||||
`Alignment`) → `Update()`. Типы: `mc_Coincidence=0`, `mc_Parallel=1`, `mc_Perpendicular=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` — проверь
|
||||
наличие и точные имена в v24) — возможна тонкость с именами/доступностью, как с параметрикой.
|
||||
Тест: 2 компонента → сопряжение совпадения/расстояния граней → габарит сборки меняется
|
||||
предсказуемо. Объекты граней компонентов брать через их `IPart7.FindObjectsByPoint` (в мировых
|
||||
координатах с учётом placement компонента).
|
||||
3. Перемещение/массив компонентов, фиксация — при необходимости.
|
||||
|
||||
Тонкости: компоненту нужен сохранённый файл-источник (сначала сохрани деталь). Уточни через
|
||||
|
||||
Reference in New Issue
Block a user