feat: drawing_create_standard_views — стандартные виды чертежа (API7)
Веха 2 (2D-ЧЕРТЁЖ), инкремент 1. Новый DrawingService (API7, namespace
Kompas.Mcp.Core.Drawings): doc2d.ViewsAndLayersManager.Views.AddStandartViews(
path, "#Спереди", {1,3,5}=front/top/left, x, y, scale, 20, 20). Новый DrawingTools
(инструмент drawing_create_standard_views), регистрация в DI.
Подтверждено спайком: object[]→SAFEARRAY VT_I4 ОК, 3 вида создаются (Count 1→4).
Ревью Codex спека учтено: File.Exists+Length>0; created==3 строго; гарантия
непустоты (сумма ObjectCount>0); опц. x,y (повторный вызов не стопкой); record
DrawingViewsResult{Created,Total}. Точечный release RCW отклонён (v2-2).
Валидация — чистый DrawingValidation (расширение .m3d/.a3d, scale>0).
Тесты: +16 unit (DrawingValidation), +3 integration (DrawingTests: создание 3 видов,
отклонение не-чертежа, несуществующий файл). Итого 114 unit + 61 integration = 175.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,22 @@
|
||||
# Дизайн: стандартные виды чертежа (drawing_create_standard_views) через API7
|
||||
|
||||
**Дата:** 2026-05-27
|
||||
**Статус:** спайк зелёный (механизм подтверждён вживую); спроектировано; на ревью (Codex)
|
||||
**Статус:** спайк зелёный; ревью Codex учтено (10 замечаний); реализуется
|
||||
|
||||
## Решения по ревью Codex
|
||||
|
||||
- **#1** файл модели: `File.Exists` И `FileInfo.Length > 0` (несохранённый/битый файл).
|
||||
- **#3/#5/#6** непустота видов — гарантия В СЕРВИСЕ: после создания суммируем `IView.ObjectCount`
|
||||
по коллекции; если 0 → ошибка «виды пусты (модель не спроецировалась)». Это и проверяет, что
|
||||
rebuild не нужен (геометрия уже есть). Координатные проверки (`GetProjectionPoint`) — избыточны.
|
||||
- **#8** строгий контракт: `created == 3` (иначе ошибка с `before/after/ok`), а не `> 0`.
|
||||
- **#9** позиция главного вида — опциональные `x`,`y` (дефолт 100/150), чтобы повторный вызов не
|
||||
клал виды стопкой; `dx`/`dy`=20 фиксированы (YAGNI).
|
||||
- **#10** возврат — record `DrawingViewsResult { Created, Total }` (не голый int) для отчёта и
|
||||
будущей адресации видов.
|
||||
- **#2** негативный unit-тест на чужое расширение (`.step`) — в плане.
|
||||
- **#4** точечный release RCW отклонён (конвенция v2-2, как `AssemblyService`). **#7** неверный
|
||||
`ProjectionName` не тестируем — `"#Спереди"` захардкожен, не управляется пользователем.
|
||||
|
||||
## Цель
|
||||
|
||||
|
||||
Reference in New Issue
Block a user