80 lines
2.6 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|