docs: handoff — линейные размеры готовы (инкремент 3 чертежа); далее — диаметр/радиус

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-27 18:14:40 +03:00
parent 2c594bc890
commit cd76abd652
+19 -14
View File
@@ -14,12 +14,16 @@
затем ЧЕРТЁЖ.
## Текущее состояние (main, синхронизирован с origin)
- 74 MCP-инструмента, 188 тестов зелёных (123 unit + 65 integration).
- **ВЕХА 2D-ЧЕРТЁЖ: 2 инкремента готовы.** (1) `drawing_create_standard_views` — стандартные виды
(спереди/сверху/слева). (2) `drawing_fill_title_block(designation?, name?, material?)` — основная
надпись: графы обозначение(2)/наименование(1)/материал(3) через `LayoutSheets.ItemByNumber[1].
Stamp.Text[id].Str` + `Update()` (API7). `Str` замещает (Clear не нужен). Память: `kompas-drawing-api7`.
**СЛЕДУЮЩЕЕ — инкремент 3: размеры/обозначения на видах** (нужен спайк по размерным интерфейсам).
- 75 MCP-инструментов, 203 теста зелёных (131 unit + 72 integration).
- **ВЕХА 2D-ЧЕРТЁЖ: 3 инкремента готовы.** (1) `drawing_create_standard_views` — стандартные виды
(возвращает `ViewNumbers` для адресации). (2) `drawing_fill_title_block` — основная надпись
(`Stamp.Text[id].Str`). (3) `drawing_add_linear_dimension(x1,y1,x2,y2,x3,y3,orientation,viewNumber)`
— линейный размер на виде (horizontal/vertical/parallel) через `(ISymbols2DContainer)view` (QI от
вида) → `LineDimensions.Add` → координаты в ЛОКАЛЬНОЙ СК вида → `Update` → авто-значение
`((IDimensionText)dim).NominalValue`. Находка: размеры НЕ в `IView.ObjectCount` (они в
`ISymbols2DContainer`). Память: `kompas-drawing-api7`. **СЛЕДУЮЩЕЕ — инкремент 4: диаметральные/
радиальные/угловые размеры** (те же `ISymbols2DContainer.*Dimensions`; нужен спайк привязки к
окружности/дуге) ИЛИ рамка/формат листа (`ILayoutSheet.Format`/`SheetFormat` — проще).
- **ВЕХА 2 (2D-ЧЕРТЁЖ) НАЧАТА:** `drawing_create_standard_views(partFilePath, scale, x, y)` СДЕЛАН
(инкремент 1) — стандартные ассоциативные виды (спереди/сверху/слева) детали/сборки на активном
чертеже (API7, `DrawingService`, namespace `Kompas.Mcp.Core.Drawings`). Workflow:
@@ -112,14 +116,15 @@ FirstLevel=false)` (мировые координаты с учётом placemen
(спереди/сверху/слева) детали/сборки на чертеже. `AddStandartViews(path, "#Спереди",
object[]{1,3,5}, x, y, scale, 20, 20)`; проверено `created==3` + непустота. Память:
`kompas-drawing-api7`.
2.**СДЕЛАНО:** `drawing_fill_title_block(designation?, name?, material?)` — основная надпись
(штамп). `LayoutSheets.ItemByNumber[1].Stamp.Text[id].Str` + `Update()`. Память `kompas-drawing-api7`.
3. **СЛЕДУЮЩЕЕ:** размеры/обозначения на видах (линейные/диаметральные). Точки входа: контейнер вида
(`IDrawingContainer`) → размерные интерфейсы `ILineDimension`/`IDiametralDimension`/`IRadialDimension`/
`IAngleDimension` (есть в interop, подтверждено рефлексией). **Сначала рефлексия + `kompas-sdk-research`
+ спайк ДО спека** (привязка размера к геометрии вида, координаты внутри вида — реальная
неопределённость). Тест — `IView.ObjectCount` вырос / размер существует. Альтернатива: рамка/формат
листа (`ILayoutSheet.Format`/`SheetFormat`) — проще, но менее ценно, чем размеры.
2.**СДЕЛАНО:** `drawing_fill_title_block(designation?, name?, material?)` — основная надпись.
3.**СДЕЛАНО:** `drawing_add_linear_dimension` — линейный размер на виде (`ISymbols2DContainer.
LineDimensions`). Размеры — в `ISymbols2DContainer` (QI от `IView`), НЕ в `IDrawingContainer`/
`IView.ObjectCount`. Координаты — локальная СК вида. Память `kompas-drawing-api7`.
4. **СЛЕДУЮЩЕЕ:** диаметральные/радиальные/угловые размеры — те же `ISymbols2DContainer`:
`DiametralDimensions`/`RadialDimensions`/`AngleDimensions` (`IDiametralDimension`/`IRadialDimension`/
`IAngleDimension` есть в interop). **Спайк ДО спека** (привязка к окружности/дуге вида — точка на
окружности vs центр; авто-значение). Тест — `*Dimensions.Count` целевого вида вырос, значение.
Проще/альтернатива: рамка/формат листа (`ILayoutSheet.Format` → `SheetFormat`).
Тонкости: чертёж проверяется не объёмом, а числом видов/объектов; ассоциативные виды требуют
сохранённого `.m3d`/`.a3d`-файла. Коды видов `ksRelativeProjectionTypeEnum`: `ksPtFront=1`,