docs(skill): актуализировать kompas-3d под новые инструменты

46 инструментов; split_solid_by_plane / move_body / boolean_union и
validate_part переведены в реализованные, добавлены inspection-инструменты
(describe_*, list_bodies/features/variables, measure). Playbook модификации
B-rep: цепочка cut→spread→union; эвристика «Update()==true ≠ успех — всегда
validate_part после редактирования».

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-26 18:49:31 +03:00
parent 28d2ae3868
commit 1fbd092116
+24 -18
View File
@@ -34,16 +34,16 @@ description: >
## Инструменты MCP
**Реализованы (v2+, 35 инструментов):** `kompas_connect`, `kompas_set_visible`, `kompas_status`;
`document_create|open|save|save_as|close|active`; `sketch_create`, `sketch_create_on_face[_index]`,
`sketch_add_line|circle|rectangle|axis`, `sketch_close`; `extrude_boss|cut`, `revolve_boss|cut`,
`fillet_edge[_index]`, `chamfer_edge[_index]`, `rebuild`; **`move_face`** (прямое редактирование: сдвинуть грань на N мм);
`get_part_info`, `get_bounding_box`, `list_faces`, `list_edges`, `list_components`;
`import_step`, `export_step`; `model_snapshot`.
**Реализованы (v2+, 46 инструментов):**
- *Система/документы:* `kompas_connect`, `kompas_set_visible`, `kompas_status`; `document_create|open|save|save_as|close|active`.
- *Эскиз:* `sketch_create`, `sketch_create_on_face[_index]`, `sketch_add_line|circle|rectangle|axis`, `sketch_close`.
- *Операции:* `extrude_boss|cut`, `revolve_boss|cut`, `fillet_edge[_index]`, `chamfer_edge[_index]`, `rebuild`.
- *Прямое редактирование (без дерева, в т.ч. импортированная B-rep):* `move_face` (сдвинуть грань на N мм по нормали), `split_solid_by_plane` (рассечь тело плоскостью), `move_body` (сдвинуть тело на вектор), `boolean_union` (объединить тела).
- *Обмен:* `import_step`, `export_step`.
- *Запрос/осмотр:* `get_part_info`, `get_bounding_box`, `list_faces`, `list_edges`, `list_components`, `list_bodies`, `list_features`, `list_variables`, `measure`, `describe_model|face|edge` (структурный осмотр без снимка), `model_snapshot`.
- *Проверка:* `validate_part` (операции в ошибке / требующие перестроения).
**Планируются (трансляция SDK, по мере кейсов):** рассечение/перемещение тела как инструменты
(`SplitSolids`/`BodyRepositions` — механика есть, продуктизация не закончена), `list_bodies`,
массивы/паттерны, переменные/свойства.
**Планируются (трансляция SDK, по мере кейсов):** массивы/паттерны, оболочка/уклон, запись переменных, 2D-чертёж, построение сборок.
> Если нужного инструмента ещё нет — не хардкодь обход под кейс. Заведи кейс в `usecases/`,
> докажи механику (тест или минимальный прогон в usecases/), затем продуктизируй как
@@ -73,10 +73,13 @@ description: >
(`OpenSourceDocument`). Гашение видимости компонента на снимок **не влияет** — изоляция так не делается.
4. **Осмотр детали**: габарит по осям (какая ось — «высота»), `list_faces`/`list_edges`, стандартные
проекции (`#Спереди/#Сверху/#Слева/#Справа/#Изометрия`) + `model_snapshot` для каждой.
5. **Модификация**: на «тупой» импортированной B-rep работает `move_face` — сдвинуть грань на +N мм
(наружу, добавить материал) или N мм (внутрь). Рассечение/раздвижка тела — механика есть,
отдельных инструментов пока нет (см. ниже).
6. **Экспорт STEP**: `ConvertToAdditionFormat` (есть AP203/AP214/AP242).
5. **Модификация** на «тупой» импортированной B-rep:
- *Простой случай* — `move_face`: сдвинуть плоскую грань на +N мм (наружу) или −N (внутрь).
⚠ На сложном торце (с отверстием/пазом) FaceMover может дать `et3dError54`**обязательно `validate_part` после**.
- *Вставка N мм в середину призматической ножки* (надёжно, грани совпадают):
`split_solid_by_plane(plane, offset)``move_body(индекс верхнего тела, dz=N)`
`move_face(точка на грани реза, +N)` (мост) → `boolean_union()`. После — `validate_part`.
6. **Экспорт STEP**: `export_step(path, format=auto|ap203|ap214|ap242)`.
Точные COM-приёмы и сигнатуры — в авто-памяти `kompas-step-and-assembly-api` и в `usecases/0002/case.md`.
@@ -92,14 +95,17 @@ description: >
`CalcMassInertiaProperties`); перед чтением после правок — `rebuild`.
- **id эскизов/операций** недействительны после смены активного документа (create/open/close).
- **Единицы — мм** (геометрия) и кг (масса). Локальные координаты эскиза ≠ мировые координаты модели.
- **`Update()==true` ≠ успех.** Прямое редактирование (move_face/split/union) может «пройти», оставив
операцию в ошибке. **Всегда `validate_part` после редактирования** — пустой результат = чисто;
иначе деталь невалидна (напр. `et3dError54`), и STEP/печать брать нельзя. Инструменты
move_face/move_body/boolean_union сами дописывают итог `validate_part` в ответ.
## Открытые вопросы / границы
- **Перемещение грани (`move_face`) — реализовано.** Работает на импортированной B-rep через
`IPart7.FindObjectsByPoint` + `FaceMover`. Проверено: top_spacer 39.45→41.45 мм.
- **Рассечение/перемещение тела** (`SplitSolids`/`BodyRepositions`) — механика задокументирована,
отдельными MCP-инструментами не оформлена. Возможная следующая опция.
- Сборки/паттерны/переменные в MCP пока не реализованы.
- **Прямое редактирование B-rep — реализовано полностью:** `move_face`, `split_solid_by_plane`,
`move_body`, `boolean_union`. Цепочка cut→spread→union проверена end-to-end (usecases/0002,
top_spacer 39.45→41.45 мм, `validate_part` чисто).
- Не реализованы как инструменты: массивы/паттерны, оболочка/уклон, запись переменных, 2D, сборки.
## Связанное