diff --git a/docs/superpowers/NEXT-SESSION.md b/docs/superpowers/NEXT-SESSION.md index 9af7940..5102a42 100644 --- a/docs/superpowers/NEXT-SESSION.md +++ b/docs/superpowers/NEXT-SESSION.md @@ -9,15 +9,17 @@ КОМПАС-3D должен быть запущен (нужен для интеграционных тестов). ## Текущее состояние (main, синхронизирован с origin) -- 67 MCP-инструментов, 116 тестов зелёных (69 unit + 47 integration). +- 69 MCP-инструментов, 118 тестов зелёных (69 unit + 49 integration). - Пакет A «богаче эскизы» — готов (дуга×2, эллипс, ломаная, многоугольник, сплайн, точка). - Пакет B «формообразующие» — основная часть готова: shell, rib, sweep, loft. - Пакет C «массивы и зеркало» — ГОТОВ: `linear_pattern`, `circular_pattern`, `mirror_operation`, `mirror_body`. Источник копирования — id операций из реестра `_features` (хелпер `RequireFeature`); оси — `CoordinateAxis`/`CoordinateAxes` (`Core/Modeling`). -- `hole` — отверстие ГОТОВ (через **API7**, в API5 определения нет): `HoleService` - (`Core/Modeling/HoleService.cs`), простое цилиндрическое, сквозное/глухое. Прецедент: первая - формообразующая на API7 (раньше API7 был только у `move_face`). +- `hole` — отверстия ГОТОВЫ (через **API7**, в API5 определения нет): `HoleService` + (`Core/Modeling/HoleService.cs`). Типы: простое цилиндрическое (`hole`), с цековкой + (`hole_counterbore`, `ksHTCounterbore`), с зенковкой (`hole_countersink`, `ksHTCountersinking`). + `HoleCore` рефакторен под `configure`-колбэк (`HoleParameters` после `HoleType`). Прецедент: + первая формообразующая на API7. Направление в тело — по убыли объёма. - `draft` — уклон граней ГОТОВ (через **API5** `ksInclineDefinition`/`o3d_incline=42` — операция «Incline», не «Draft»; стандартный паттерн `PartModeler.Features.cs`, регистрируется в `_features`). Эмпирика: `direction=false`=расширение, `true`=сужение → маппинг `!outward`. @@ -32,24 +34,24 @@ `.Features.cs` (операции, включая массивы/зеркало/уклон). API7-сервисы: `HoleService`, `FaceEditService`. - Чистые маппинги/валидация — в `SketchGeometry` (Core/Modeling); тип точки — `SketchPoint` (Host). - Прочитай память: `kompas-formative-features-api5` (definition в API5; draft=Incline есть), - `kompas-pattern-mirror-api5` (пакет C), `kompas-hole-api7` (hole: только API7), - `kompas-variables-api5` (переменные: create на ksFeature, ограничение про геометрию). + `kompas-pattern-mirror-api5` (пакет C), `kompas-hole-api7` (hole + цековка/зенковка), + `kompas-variables-api5` (переменные), `kompas-parametric-sketch-findings` (тупик — не повторять). -## Задача этой сессии (по приоритету) -1. **Параметрические эскизы** РАЗВЕДАНЫ — путь намечен, но это КРУПНАЯ отдельная подсистема (не - инкремент). Установлено: управляющий размер `ksCDimWithVariable` только в API7; API5-эскиз через - API7 `ISketch.Curves`=null; нужен путь `ISketch.BeginEdit→FragmentDocument→IDrawingContainer` - (новая API7-подсистема построения эскизов). См. `docs/superpowers/specs/2026-05-27-parametric-sketch-findings.md` - и память `kompas-parametric-sketch-findings`. Начинать с минимального spike (отрезок через API7 - IDrawingContainer → ksCDimWithVariable с именем → сменить переменную → перестроить → длина - изменилась?). Ключевой риск: реагирует ли решатель эскиза из внешней автоматизации. -2. Расширения hole: зенковка/цековка/коническое отверстие (`ksHTCounterbore=1/Countersinking=2/ - Conic=4` + подынтерфейсы `ISpotfacingHoleParameters`/`IConicHoleParameters`/…), резьба. - Меньше неопределённости — хороший следующий инкремент. -3. Расширения draft: уклон от ребра (`IDraftFromEdges`, API7); нейтральная плоскость по грани. -4. Расширения пакета C: 2D-сетка линейного массива, выбор оси по ребру, массив вдоль кривой - (`o3d_curveCopy=37`). -5. 2D-чертёж / сборки — крупные отдельные направления. +## ОТРИЦАТЕЛЬНЫЙ результат (не повторять) +- **Параметрические эскизы (переменная двигает геометрию) — НЕДОСТИЖИМЫ через доступный COM-API.** + Решающий spike: `ksCDimWithVariable` (`IDrawingObject1.NewConstraint`) `Create()`=FALSE из внешней + автоматизации; `ksCFixedLenght` строится, но игнорирует `Expression` со ссылкой на переменную. + Полная разведка: `docs/superpowers/specs/2026-05-27-parametric-sketch-findings.md`. Параметрика + ограничена CRUD переменных (готово). НЕ тратить время на этот путь повторно. + +## Задача следующей сессии (по приоритету) +1. Завершить типы отверстий: **коническое** (`hole_conic`, `ksHTConic=4` + `IConicHoleParameters`: + ConicDiameter/ConicAngle) — тот же `HoleCore`-паттерн. Резьба (`ShowThread`/`IThread`) — сложно + тестировать (нет изменения объёма), низкий приоритет. +2. Расширения draft: уклон от ребра (`IDraftFromEdges`, API7); нейтральная плоскость по грани. +3. Расширения пакета C: 2D-сетка линейного массива (2-я ось у `ksMeshCopyDefinition`), выбор оси + массива по ребру, массив вдоль кривой (`o3d_curveCopy=37`/`ksCurveCopyDefinition`). +4. 2D-чертёж / сборки — крупные отдельные направления (новая большая веха). Бери по одной операции за инкремент, доводи до зелёного и merge+push, потом следующую. Не пытайся сделать весь пакет одним заходом — инкремент надёжнее.