/
docNemo
/
clothes-graph
Обзор
Документация
Войти
/
docNemo
/
clothes-graph
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/ClothesGraph.Model/PrintSettings.cs
62 строки
3 KB
docNemo
Запрос на слияние 'interface-to-spec' (
#1
) из interface-to-spec в main
09 авг 2026, 20:28
Верифицирован
09 авг 2026, 20:28
1bbc436
Код
Авторство
О чём код?
using System.Collections.Generic; using ClothesGraph.Geometry; using ClothesGraph.Model.Pieces; namespace ClothesGraph.Model; /// <summary>Положение детали в области печати.</summary> /// <remarks> /// Свойство раскладки, а не конструкции: при смене формата бумаги меняется /// размещение, а сама деталь остаётся прежней. Поэтому хранится отдельно /// от детали и переживает пересчёт листов. /// </remarks> public sealed record PiecePlacement(Offset2 Offset, double RotationDegrees); /// <summary> /// Настройки вывода на листы, сохраняемые вместе с документом. /// </summary> /// <remarks> /// Заданы простыми величинами, а не типами слоя печати: тот зависит от модели, /// и обратная зависимость замкнула бы кольцо. Слой печати переводит эти /// значения в свою раскладку сам. /// </remarks> public sealed class PrintSettings { /// <summary>Название формата листа: A4, A3, Letter, рулон.</summary> public string PageSizeName { get; set; } = "A4"; public Length PageWidth { get; set; } = Length.FromMillimetres(210); public Length PageHeight { get; set; } = Length.FromMillimetres(297); public bool IsLandscape { get; set; } public Length Margin { get; set; } = Length.FromMillimetres(8); /// <summary>Склейка с перекрытием; иначе листы стыкуются встык.</summary> public bool JoinWithOverlap { get; set; } = true; public Length Overlap { get; set; } = Length.FromMillimetres(15); /// <summary> /// Размещение деталей, заданное пользователем. /// </summary> /// <remarks> /// Детали, которых здесь нет, раскладываются автоматически в ряд. Как /// только пользователь передвинул деталь, её положение запоминается и /// больше не пересчитывается: иначе смена формата листа сбрасывала бы /// раскладку, над которой он только что работал. /// </remarks> public IDictionary<PieceId, PiecePlacement> Placements { get; } = new Dictionary<PieceId, PiecePlacement>(); /// <summary> /// Детали, исключённые из вывода. /// </summary> /// <remarks> /// Хранится исключение, а не выбор: деталь, добавленная в документ после /// того как выбор был сделан, должна печататься, а не молча выпасть. При /// хранении выбора её пришлось бы вспоминать отмечать. /// </remarks> public ISet<PieceId> ExcludedFromPrint { get; } = new HashSet<PieceId>(); }