feat: drawing_add_linear_dimension — упрочнение по ревью Codex реализации

#4: отклонение нулевого NominalValue после Update (ориентация несовместима с
точками, напр. horizontal на вертикали |X2-X1|=0) — откат dim.Delete + ошибка.
#3: Parallel протестирован — работает БЕЗ явного Angle (КОМПАС авто-вычисляет угол
по точкам; (0,0)-(30,40)→50). #7: rollback-ветка покрыта тестом нулевой проекции.
#8: контракт «первый несистемный вид» — осознанный (задокументирован).

Тесты: DrawingDimensionTests 5→7 (+parallel, +нулевая проекция/откат). Итого
131 unit + 72 integration = 203.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-27 18:07:01 +03:00
parent 8e0ab374af
commit 71cafb2270
3 changed files with 56 additions and 1 deletions
@@ -118,6 +118,12 @@ public sealed class DrawingService
// NominalValue читаем ТОЛЬКО после успешного Update и Valid.
var value = ((IDimensionText)dim).NominalValue;
// Нулевое значение — ориентация несовместима с точками (напр. horizontal для точек на одной
// вертикали: |X2-X1|=0). RequireDistinctPoints это не ловит — точки различны по Y.
if (Math.Abs(value) < 1e-6)
throw new InvalidOperationException(
"Размер измерил нулевое значение — выбранная ориентация несовместима с точками " +
"(например, horizontal для точек на одной вертикали; используйте vertical/parallel).");
return new DrawingDimensionResult { Value = value, ViewNumber = view.Number };
}
catch