Add value diagram windows and view models
This commit is contained in:
@@ -1,14 +1,11 @@
|
||||
using netDxf;
|
||||
using netDxf.Entities;
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using netDxf.Entities;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models.Shapes;
|
||||
using StructureHelperCommon.Services.Exports;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace StructureHelperLogics.NdmCalculations.Primitives
|
||||
{
|
||||
public class GetPrimitivesByDxfEntities : IObjectConvertStrategy<List<INdmPrimitive>, IEnumerable<EntityObject>>
|
||||
public class DxfEntitiesToNdmPrimitivesConvertStrategy : IObjectConvertStrategy<List<INdmPrimitive>, IEnumerable<EntityObject>>
|
||||
{
|
||||
private const double metresToMillimeters = 1000.0;
|
||||
private List<INdmPrimitive> primitives = [];
|
||||
@@ -68,7 +65,6 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
|
||||
primitive = ellipse;
|
||||
}
|
||||
primitive.Center = new Point2D(circle.Center.X / metresToMillimeters, circle.Center.Y / metresToMillimeters);
|
||||
|
||||
return primitive;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace StructureHelperLogics.NdmCalculations.Primitives
|
||||
{
|
||||
public class GetPrimitivesByFile : IGetPrimitivesLogic
|
||||
public class GetPrimitivesByFile : IImportFromFileLogic
|
||||
{
|
||||
private List<INdmPrimitive> primitives = [];
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace StructureHelperLogics.NdmCalculations.Primitives
|
||||
importEntitiesLogic.Import();
|
||||
if (importEntitiesLogic.Entities.Count != 0)
|
||||
{
|
||||
var primitivesLogic = new GetPrimitivesByDxfEntities();
|
||||
var primitivesLogic = new DxfEntitiesToNdmPrimitivesConvertStrategy();
|
||||
primitives = primitivesLogic.Convert(importEntitiesLogic.Entities);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
using netDxf.Entities;
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using StructureHelperCommon.Models.Shapes;
|
||||
using StructureHelperCommon.Services.Exports;
|
||||
|
||||
namespace StructureHelperLogics.NdmCalculations.Primitives
|
||||
{
|
||||
public class NdmPrimitivesToDxfEntitiesConvertStrategy : IObjectConvertStrategy<List<(EntityObject, LayerNames)>, IEnumerable<INdmPrimitive>>
|
||||
{
|
||||
private const double metresToMillimeters = 1000.0;
|
||||
private List<(EntityObject, LayerNames)> entities = [];
|
||||
private IShapeConvertStrategy<EntityObject, IShape> shapeConvertStrategy = new ShapeToDxfEntityConvertStrategy() { Scale = metresToMillimeters };
|
||||
|
||||
|
||||
public List<(EntityObject, LayerNames)> Convert(IEnumerable<INdmPrimitive> source)
|
||||
{
|
||||
entities.Clear();
|
||||
foreach (var ndmPrimitive in source)
|
||||
{
|
||||
shapeConvertStrategy.Dx = ndmPrimitive.Center.X;
|
||||
shapeConvertStrategy.Dy = ndmPrimitive.Center.Y;
|
||||
if (ndmPrimitive is IRectangleNdmPrimitive rectangleNdmPrimitive)
|
||||
{
|
||||
var rectangle = shapeConvertStrategy.Convert(rectangleNdmPrimitive);
|
||||
entities.Add((rectangle, LayerNames.StructiralPrimitives));
|
||||
}
|
||||
else if (ndmPrimitive is IShapeNdmPrimitive shapeNdmPrimitive)
|
||||
{
|
||||
var polygon = shapeConvertStrategy.Convert(shapeNdmPrimitive.Shape);
|
||||
entities.Add((polygon, LayerNames.StructiralPrimitives));
|
||||
}
|
||||
else if (ndmPrimitive is IEllipseNdmPrimitive ellipseNdmPrimitive)
|
||||
{
|
||||
CircleShape circleShape = new CircleShape() { Diameter = ellipseNdmPrimitive.Width};
|
||||
var circle = shapeConvertStrategy.Convert(circleShape);
|
||||
entities.Add((circle, LayerNames.StructiralPrimitives));
|
||||
}
|
||||
else if (ndmPrimitive is IRebarNdmPrimitive rebar)
|
||||
{
|
||||
LayerNames layerName = LayerNames.StructuralRebars;
|
||||
convertPoint(rebar, layerName);
|
||||
}
|
||||
else if (ndmPrimitive is IPointNdmPrimitive point)
|
||||
{
|
||||
LayerNames layerName = LayerNames.StructiralPrimitives;
|
||||
convertPoint(point, layerName);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(ndmPrimitive));
|
||||
}
|
||||
}
|
||||
return entities;
|
||||
}
|
||||
|
||||
private void convertPoint(IPointNdmPrimitive point, LayerNames layerName)
|
||||
{
|
||||
double diameter = Math.Sqrt(point.Area / Math.PI * 4.0);
|
||||
CircleShape circleShape = new CircleShape() { Diameter = diameter };
|
||||
var circle = shapeConvertStrategy.Convert(circleShape);
|
||||
entities.Add((circle, layerName));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user