PrimitiveProps editing via context menu was added

This commit is contained in:
Evgeny Redikultsev
2023-02-27 08:34:51 +05:00
parent 8fecfb931f
commit b29d7bfd58
37 changed files with 578 additions and 91 deletions

View File

@@ -12,12 +12,12 @@ namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
{
public class CircleGeometryLogic : IRCGeometryLogic
{
ICircleBeamTemplate template;
ICircleTemplate template;
public IEnumerable<IHeadMaterial> HeadMaterials { get; set; }
public CircleGeometryLogic(ICircleBeamTemplate template)
public CircleGeometryLogic(ICircleTemplate template)
{
this.template = template;
}
@@ -32,7 +32,7 @@ namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
private IEnumerable<INdmPrimitive> GetConcretePrimitives()
{
var diameter = template.SectionDiameter;
var diameter = template.Shape.Diameter;
var concreteMaterial = HeadMaterials.ToList()[0];
var primitives = new List<INdmPrimitive>();
var rectangle = new CirclePrimitive() { Diameter = diameter, Name = "Concrete block", HeadMaterial = concreteMaterial };
@@ -43,11 +43,11 @@ namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
private IEnumerable<INdmPrimitive> GetReinfrocementPrimitives()
{
var reinforcementMaterial = HeadMaterials.ToList()[1];
var radius = template.SectionDiameter / 2 - template.CoverGap;
var dAngle = 2d * Math.PI / template.BarQuantity;
var radius = template.Shape.Diameter / 2 - template.CoverGap;
var dAngle = 2d * Math.PI / template.BarCount;
var barArea = Math.PI* template.BarDiameter* template.BarDiameter / 4d;
var primitives = new List<INdmPrimitive>();
for (int i = 0; i < template.BarQuantity; i++)
for (int i = 0; i < template.BarCount; i++)
{
var angle = i * dAngle;
var x = radius * Math.Sin(angle);

View File

@@ -0,0 +1,25 @@
using StructureHelperCommon.Models.Shapes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
{
public class CircleTemplate : ICircleTemplate
{
public ICircleShape Shape { get; }
public double CoverGap { get; set; }
public int BarCount { get; set; }
public double BarDiameter { get; set; }
public CircleTemplate()
{
Shape = new CircleShape();
Shape.Diameter = 0.5d;
CoverGap = 0.05d;
BarCount = 8;
BarDiameter = 0.025d;
}
}
}

View File

@@ -7,14 +7,11 @@ using System.Threading.Tasks;
namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
{
public interface ICircleBeamTemplate
public interface ICircleTemplate : IRCSectionTemplate
{
ICircleShape Circle { get; }
ICircleShape Shape { get; }
double CoverGap { get; set; }
double SectionDiameter { get; set; }
int BarQuantity { get; set; }
int BarCount { get; set; }
double BarDiameter { get; set; }
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
{
public interface IRCSectionTemplate
{
}
}

View File

@@ -1,4 +1,5 @@
using StructureHelperCommon.Models.Shapes;
using StructureHelperLogics.Models.Templates.CrossSections.RCs;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -7,7 +8,7 @@ using System.Threading.Tasks;
namespace StructureHelperLogics.Models.Templates.RCs
{
public interface IRectangleBeamTemplate
public interface IRectangleBeamTemplate : IRCSectionTemplate
{
IShape Shape { get; }
double CoverGap { get; set; }

View File

@@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
{
@@ -17,9 +18,11 @@ namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
var result = new List<IHeadMaterial>();
var concrete = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Concrete40, ProgramSetting.CodeType);
concrete.Name = "Concrete";
concrete.Color = (Color)ColorConverter.ConvertFromString("AliceBlue");
result.Add(concrete);
var reinforcement = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Reinforecement400, ProgramSetting.CodeType);
reinforcement.Name = "Reinforcement";
reinforcement.Color = (Color)ColorConverter.ConvertFromString("Red");
result.Add(reinforcement);
return result;
}

View File

@@ -14,7 +14,7 @@ namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
{
public class RectGeometryLogic : IRCGeometryLogic
{
RectangleBeamTemplate template;
IRectangleBeamTemplate template;
IHeadMaterial concrete => HeadMaterials.ToList()[0];
IHeadMaterial reinforcement => HeadMaterials.ToList()[1];
@@ -27,7 +27,7 @@ namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
public IEnumerable<IHeadMaterial> HeadMaterials { get; set; }
public RectGeometryLogic(RectangleBeamTemplate template)
public RectGeometryLogic(IRectangleBeamTemplate template)
{
this.template = template;
}