From 1fbd0921165ff0ddfff3b1d18e0e53ca6f075450 Mon Sep 17 00:00:00 2001 From: Shahovalov MIkhail Date: Tue, 26 May 2026 18:49:31 +0300 Subject: [PATCH] =?UTF-8?q?docs(skill):=20=D0=B0=D0=BA=D1=82=D1=83=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?kompas-3d=20=D0=BF=D0=BE=D0=B4=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5?= =?UTF-8?q?=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .claude/skills/kompas-3d/SKILL.md | 42 ++++++++++++++++++------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/.claude/skills/kompas-3d/SKILL.md b/.claude/skills/kompas-3d/SKILL.md index cdd2af5..a4d547a 100644 --- a/.claude/skills/kompas-3d/SKILL.md +++ b/.claude/skills/kompas-3d/SKILL.md @@ -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, сборки. ## Связанное