85 lines
2.8 KiB
C#
85 lines
2.8 KiB
C#
using System;
|
|
using Autodesk.AutoCAD.Geometry;
|
|
using CadParamPluging.Common;
|
|
using CadParamPluging.Domain.Models;
|
|
|
|
namespace CadParamPluging.Cad
|
|
{
|
|
public sealed class RingRawRollingGenerator : ITemplateDrawingGenerator
|
|
{
|
|
public static readonly string Key = TemplateKeyBuilder.Build("毛料态", "轧制", "环形", "无");
|
|
private const string MachinedStatus = "车加工";
|
|
|
|
public string TemplateKey => Key;
|
|
|
|
public FeatureDrivenDrawer.ExpectedDrawingSize CalculateExpectedSize(ParamBag bag, TemplateParams templateParams)
|
|
{
|
|
var workingBag = CloneBagWithMachinedStatus(bag, templateParams);
|
|
return FeatureDrivenDrawer.CalculateExpectedSize(workingBag, templateParams?.SheetSize);
|
|
}
|
|
|
|
public void Draw(CadContext ctx, ParamBag bag, TemplateParams templateParams, Point3d center, double scaleFactor)
|
|
{
|
|
if (ctx == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(ctx));
|
|
}
|
|
|
|
if (templateParams == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(templateParams));
|
|
}
|
|
|
|
var workingBag = CloneBagWithMachinedStatus(bag, templateParams);
|
|
var drawParams = CreateMachinedTemplateParams(templateParams);
|
|
|
|
FeatureDrivenDrawer.DrawRingRollingWithUnspecifiedFillet(
|
|
ctx,
|
|
workingBag,
|
|
drawParams.ProjectType,
|
|
drawParams.SheetSize,
|
|
drawParams.Scale,
|
|
drawParams.DrawingType,
|
|
center,
|
|
scaleFactor);
|
|
}
|
|
|
|
private static ParamBag CloneBagWithMachinedStatus(ParamBag source, TemplateParams templateParams)
|
|
{
|
|
var clone = new ParamBag();
|
|
if (source?.Items != null)
|
|
{
|
|
foreach (var item in source.Items)
|
|
{
|
|
if (item == null)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
clone.Items.Add(new ParamValue { Key = item.Key, Value = item.Value });
|
|
}
|
|
}
|
|
|
|
clone.Set("DeliveryStatus", MachinedStatus);
|
|
if (!string.IsNullOrWhiteSpace(templateParams?.DrawingType)
|
|
&& string.IsNullOrWhiteSpace(clone.GetString("ProcessMethod")))
|
|
{
|
|
clone.Set("ProcessMethod", templateParams.DrawingType);
|
|
}
|
|
|
|
return clone;
|
|
}
|
|
|
|
private static TemplateParams CreateMachinedTemplateParams(TemplateParams templateParams)
|
|
{
|
|
return new TemplateParams
|
|
{
|
|
ProjectType = MachinedStatus,
|
|
DrawingType = templateParams?.DrawingType,
|
|
SheetSize = templateParams?.SheetSize,
|
|
Scale = templateParams?.Scale
|
|
};
|
|
}
|
|
}
|
|
}
|