CadParamPluging/Domain/DomainFacade.cs
2025-12-17 10:04:08 +08:00

80 lines
2.6 KiB
C#

using System;
using Autodesk.AutoCAD.Geometry;
using CadParamPluging.Cad;
using CadParamPluging.Common;
using CadParamPluging.Data;
using CadParamPluging.Domain.Models;
namespace CadParamPluging.Domain
{
public static class DomainFacade
{
private static readonly ITemplateRepository TemplateRepository = new DefaultTemplateRepository();
public static TemplateInfo SelectTemplate(TemplateParams templateParams)
{
var definition = TemplateRepository.FindTemplate(templateParams);
if (definition == null)
{
throw new BusinessException("未找到匹配的模板,或匹配结果不唯一。");
}
return new TemplateInfo
{
Name = definition.Description ?? definition.FilePath,
FilePath = definition.FilePath,
Description = definition.Description
};
}
public static void ValidateParameters(TemplateParams templateParams, DrawingParams drawingParams)
{
if (templateParams == null)
{
throw new BusinessException("模板参数不能为空。");
}
if (string.IsNullOrWhiteSpace(templateParams.ProjectType) ||
string.IsNullOrWhiteSpace(templateParams.DrawingType))
{
throw new BusinessException("请填写项目类型和图纸类型。");
}
// 出图参数由不同模板决定,后续由模板对应的生成器做更精细的校验。
}
public static void DrawByParams(TemplateInfo template, DrawingParams drawingParams, CadDrawingService cadService)
{
if (template == null)
{
throw new ArgumentNullException(nameof(template));
}
if (cadService == null)
{
throw new ArgumentNullException(nameof(cadService));
}
var width = drawingParams?.Width ?? 0;
var height = drawingParams?.Height ?? 0;
if (width <= 0 || height <= 0)
{
width = width <= 0 ? 5000 : width;
height = height <= 0 ? 3000 : height;
}
var p1 = new Point3d(0, 0, 0);
var p2 = new Point3d(width, 0, 0);
var p3 = new Point3d(width, height, 0);
var p4 = new Point3d(0, height, 0);
cadService.DrawLine(p1, p2);
cadService.DrawLine(p2, p3);
cadService.DrawLine(p3, p4);
cadService.DrawLine(p4, p1);
}
}
}