/
docNemo
/
clothes-graph
Обзор
Документация
Войти
/
docNemo
/
clothes-graph
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/ClothesGraph.Model/Drafting/EvaluationValues.cs
39 строк
2 KB
docNemo
Вкладка деталей выкройки, создание документа и пересчёт производных вкладок
09 авг 2026, 14:03
09 авг 2026, 14:03
dd71293
Код
Авторство
О чём код?
using System.Collections.Generic; using ClothesGraph.Geometry; using ClothesGraph.Model.Formulas; using ClothesGraph.Model.Measurements; namespace ClothesGraph.Model.Drafting; /// <summary> /// Источник значений формул по вычисленному чертежу. /// </summary> /// <remarks> /// Формулы деталей ссылаются и на мерки, и на построения — длину линии, угол, /// координату точки. Источник один на всех, кто собирает детали: редактор и /// печать обязаны давать одну и ту же геометрию, а два независимых источника /// со временем разошлись бы. /// </remarks> public sealed class EvaluationValues( DraftEvaluation evaluation, IReadOnlyDictionary<MeasurementId, Length> measurements, LengthUnit unit) : IFormulaValues { public double GetMeasurement(MeasurementId id) => measurements.TryGetValue(id, out var value) ? value.To(unit) : throw new FormulaEvaluationException("Мерка не задана в текущем размере"); public double GetNodeProperty(NodeId node, NodeProperty property) { if (evaluation.TryGetCurve(node, out var curve) && curve is not null) return property == NodeProperty.Length ? curve.Length.To(unit) : curve.DirectionAt(0); if (evaluation.TryGetPoint(node, out var point)) return property == NodeProperty.X ? point.X.To(unit) : point.Y.To(unit); throw new FormulaEvaluationException("Построение ещё не вычислено"); } }