docs: параметрика (переменные модели) — README/CLAUDE/ARCHITECTURE/OPEN_QUESTIONS/presentation, 67 инструментов, 116 тестов
This commit is contained in:
@@ -160,3 +160,16 @@ stateful-сессии? Пока полагаемся на последовате
|
||||
**Ключевая тонкость (эмпирика):** `direction=false`=расширение (outward), `direction=true`=сужение — **обратно справке**. Маппинг в коде: `def.direction = !outward`. Тот же класс проблем с направлением, что у boss/cut (v2-1). Валидация угла вынесена в `SketchGeometry.RequireDraftAngle(0<angle<90)`. +9 unit-тестов + 2 integration-теста. Итог: **64 инструмента, 115 тестов (69 unit + 46 integration).**
|
||||
|
||||
Примечание: `o3d_DraftFromEdges=644` / `IDraftFromEdges` — это другая операция «уклон от базовой линии» (API7), здесь не используется.
|
||||
|
||||
### ✅ Пакет D «параметрика» — CRUD переменных реализован
|
||||
**Решено (start).** 3 новых инструмента: `create_variable`, `set_variable`, `delete_variable` — `VariableService` (`src/Kompas.Mcp.Core/Modeling/VariableService.cs`) + `VariableTools` (`src/Kompas.Mcp.Host/Tools/VariableTools.cs`). Исправлен `list_variables` в `ModelInspectionService.ReadVariables`. Итог: **67 инструментов, 116 тестов (69 unit + 47 integration).**
|
||||
|
||||
**Ключевые API-тонкости (эмпирика):**
|
||||
- Создание переменной — ТОЛЬКО через `ksPart.GetFeature().VariableCollection` (свойство-коллекция на корневом `ksFeature`). `ksPart.VariableCollection()` (метод) возвращает только **внешние** переменные и непригоден для создания пользовательских.
|
||||
- Expression — ведущее поле; Value — вычисленный результат. Изменяют значение через Expression.
|
||||
- После `ksPart.RebuildModel()` RCW `ksVariable` застревает на старом значении → перечитывать из свежей коллекции (`ReadValueFresh`). Зависимые переменные пересчитываются автоматически.
|
||||
- `RemoveVariable` возвращает FALSE при наличии зависимых переменных → удаление невозможно.
|
||||
- `list_variables` исправлен: ранее читал `ksPart.VariableCollection()` (только внешние), теперь `ksPart.GetFeature().VariableCollection` (все), с фолбэком на старый путь.
|
||||
|
||||
**⚠️ Осознанное ограничение — геометрия не меняется:** переменная управляет геометрией только в параметрической модели, где размеры эскизов привязаны к именам переменных. Наши эскизы строятся литеральными координатами — `set_variable` хранит и вычисляет значение, но геометрию НЕ меняет.
|
||||
Связь размеров эскизов с переменными (параметрические эскизы через API2D) — отдельный пласт, **не реализован**. Это осознанно задокументировано; реализация — продолжение пакета D.
|
||||
|
||||
Reference in New Issue
Block a user