From 1d7a97f4fd11e3bc60ab28fbe53781dfb2f5986f Mon Sep 17 00:00:00 2001 From: Evgeny Redikultsev Date: Thu, 10 Nov 2022 22:06:27 +0500 Subject: [PATCH] Z-Index was added --- Infrastructure/UI/DataContexts/Point.cs | 17 +++++++--- .../UI/DataContexts/PrimitiveBase.cs | 22 ++++++++++-- Infrastructure/UI/DataContexts/Rectangle.cs | 4 +-- Libraries/LoaderCalculator.dll | Bin 56832 -> 57856 bytes Services/Primitives/IPrimitiveRepository.cs | 1 - .../Models/NdmPrimitives/IPrimitive.cs | 10 ------ .../Models/NdmPrimitives/PointPrimitive.cs | 31 ----------------- .../Models/NdmPrimitives/PrimitiveBase.cs | 22 ------------ .../NdmPrimitives/RectanglePrimitive.cs | 32 ------------------ .../StructureHelperCommon.csproj | 8 ----- .../Models/Materials/ElasticMaterial.cs | 2 +- .../Models/Materials/IHelperMaterial.cs | 2 +- .../Models/Materials/ILibMaterial.cs | 2 +- .../Models/Materials/IPrimitiveMaterial.cs | 2 +- .../Models/Materials/LibMaterial.cs | 2 +- .../Models/Materials/PrimitiveMaterial.cs | 6 ++-- .../Primitives}/INdmPrimitive.cs | 4 +-- .../Primitives}/NdmPrimitive.cs | 4 +-- .../PointTriangulationLogicOptions.cs | 3 +- .../RectangleTriangulationLogicOptions.cs | 2 +- .../Triangulations/Triangulation.cs | 20 ++++++++--- .../Services/CalculationService.cs | 2 +- .../RCSectionFromNdmPrimitiveTest.cs | 15 ++++---- .../Ndms/RCSections/RCSectionTest.cs | 4 +-- .../Ndms/SteelSections/ReinforcementTest.cs | 3 +- Windows/MainWindow/MainViewModel.cs | 2 +- .../PrimitivePropertiesView.xaml | 7 ++-- .../PrimitivePropertiesViewModel.cs | 11 +++++- 28 files changed, 93 insertions(+), 147 deletions(-) delete mode 100644 StructureHelperCommon/Models/NdmPrimitives/IPrimitive.cs delete mode 100644 StructureHelperCommon/Models/NdmPrimitives/PointPrimitive.cs delete mode 100644 StructureHelperCommon/Models/NdmPrimitives/PrimitiveBase.cs delete mode 100644 StructureHelperCommon/Models/NdmPrimitives/RectanglePrimitive.cs rename {StructureHelperCommon => StructureHelperLogics}/Models/Materials/IPrimitiveMaterial.cs (85%) rename {StructureHelperCommon => StructureHelperLogics}/Models/Materials/PrimitiveMaterial.cs (68%) rename {StructureHelperCommon/Models/Entities => StructureHelperLogics/NdmCalculations/Primitives}/INdmPrimitive.cs (81%) rename {StructureHelperCommon/Models/Entities => StructureHelperLogics/NdmCalculations/Primitives}/NdmPrimitive.cs (83%) diff --git a/Infrastructure/UI/DataContexts/Point.cs b/Infrastructure/UI/DataContexts/Point.cs index 5acd966..5216e57 100644 --- a/Infrastructure/UI/DataContexts/Point.cs +++ b/Infrastructure/UI/DataContexts/Point.cs @@ -2,15 +2,24 @@ using StructureHelper.Infrastructure.Enums; using StructureHelper.UnitSystem.Systems; using StructureHelper.Windows.MainWindow; -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.Materials; +using StructureHelperLogics.Models.Primitives; +using StructureHelperLogics.Models.Materials; using StructureHelperCommon.Models.Shapes; namespace StructureHelper.Infrastructure.UI.DataContexts { public class Point : PrimitiveBase { - public double Area { get; set; } + private double area; + public double Area + { get => area; + set + { + area = value; + OnPropertyChanged(nameof(Area)); + OnPropertyChanged(nameof(Diameter)); + } + } public Point(double area, double x, double y, MainViewModel ownerVm) : base(PrimitiveType.Point, x, y, ownerVm) { Name = "New point"; @@ -37,7 +46,7 @@ namespace StructureHelper.Infrastructure.UI.DataContexts CenterY = y; } - public double Diameter { get => Math.Sqrt(Area / Math.PI) * 2; } + public double Diameter { get => Math.Sqrt(area / Math.PI) * 2; } public override INdmPrimitive GetNdmPrimitive(IUnitSystem unitSystem) { diff --git a/Infrastructure/UI/DataContexts/PrimitiveBase.cs b/Infrastructure/UI/DataContexts/PrimitiveBase.cs index 9cf271d..d538628 100644 --- a/Infrastructure/UI/DataContexts/PrimitiveBase.cs +++ b/Infrastructure/UI/DataContexts/PrimitiveBase.cs @@ -13,9 +13,9 @@ using StructureHelper.Windows.MainWindow; using StructureHelperCommon.Infrastructures.Enums; using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Strings; -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.Materials; +using StructureHelperLogics.Models.Materials; using StructureHelperCommon.Services.ColorServices; +using StructureHelperLogics.Models.Primitives; namespace StructureHelper.Infrastructure.UI.DataContexts { @@ -37,6 +37,8 @@ namespace StructureHelper.Infrastructure.UI.DataContexts private double prestrainKx, prestrainKy, prestrainEpsZ; private double opacity = 1, showedOpacity = 0, x, y, xY1, yX1, primitiveWidth, primitiveHeight, showedX, showedY; protected double delta = 0.5; + private double stressValue; + private double strainValue; private int showedZIndex = 1, zIndex; #endregion @@ -249,6 +251,22 @@ namespace StructureHelper.Infrastructure.UI.DataContexts get => primitiveHeight; set => OnPropertyChanged(value, ref primitiveHeight); } + public double StressValue + { + get { return stressValue; } + set + { + OnPropertyChanged(value, ref stressValue); + } + } + public double StrainValue + { + get { return strainValue; } + set + { + OnPropertyChanged(value, ref strainValue); + } + } public double ShowedX { get => showedX; diff --git a/Infrastructure/UI/DataContexts/Rectangle.cs b/Infrastructure/UI/DataContexts/Rectangle.cs index aa95efd..5ddc500 100644 --- a/Infrastructure/UI/DataContexts/Rectangle.cs +++ b/Infrastructure/UI/DataContexts/Rectangle.cs @@ -1,10 +1,10 @@ using StructureHelper.Infrastructure.Enums; using StructureHelper.UnitSystem.Systems; using StructureHelper.Windows.MainWindow; -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.Materials; +using StructureHelperLogics.Models.Materials; using StructureHelperCommon.Models.Shapes; using System; +using StructureHelperLogics.Models.Primitives; namespace StructureHelper.Infrastructure.UI.DataContexts { diff --git a/Libraries/LoaderCalculator.dll b/Libraries/LoaderCalculator.dll index 75e5c75bf1ae40e0689c80794d54912fcae2ee69..ae6c4268c9c1895f508122408e9e6347793d0769 100644 GIT binary patch delta 24280 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 F{~wM9pZfp+ diff --git a/Services/Primitives/IPrimitiveRepository.cs b/Services/Primitives/IPrimitiveRepository.cs index e8300b2..93ddcb5 100644 --- a/Services/Primitives/IPrimitiveRepository.cs +++ b/Services/Primitives/IPrimitiveRepository.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using StructureHelper.Infrastructure.UI.DataContexts; -using StructureHelperCommon.Models.NdmPrimitives; using StructureHelperCommon.Models.Shapes; using Point = StructureHelper.Infrastructure.UI.DataContexts.Point; using Rectangle = StructureHelper.Infrastructure.UI.DataContexts.Rectangle; diff --git a/StructureHelperCommon/Models/NdmPrimitives/IPrimitive.cs b/StructureHelperCommon/Models/NdmPrimitives/IPrimitive.cs deleted file mode 100644 index 53d260a..0000000 --- a/StructureHelperCommon/Models/NdmPrimitives/IPrimitive.cs +++ /dev/null @@ -1,10 +0,0 @@ -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.Shapes; - -namespace StructureHelperCommon.Models.NdmPrimitives -{ - public interface IPrimitive : ICenterShape - { - INdmPrimitive GetNdmPrimitive(); - } -} diff --git a/StructureHelperCommon/Models/NdmPrimitives/PointPrimitive.cs b/StructureHelperCommon/Models/NdmPrimitives/PointPrimitive.cs deleted file mode 100644 index d098f2a..0000000 --- a/StructureHelperCommon/Models/NdmPrimitives/PointPrimitive.cs +++ /dev/null @@ -1,31 +0,0 @@ -using StructureHelperCommon.Infrastructures.Enums; -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.Materials; -using StructureHelperCommon.Models.Shapes; - -namespace StructureHelperCommon.Models.NdmPrimitives -{ - public class PointPrimitive : PrimitiveBase, IPoint - { - public double Area - { - get => _shape.Area; - set => _shape.Area = value; - } - - public PointPrimitive(ICenter center, IPoint shape) : base(center, shape) { } - public override INdmPrimitive GetNdmPrimitive() - { - double strength = 400e6d; - string materialName = "s400"; - IPrimitiveMaterial primitiveMaterial = new PrimitiveMaterial { MaterialType = GetMaterialTypes(), ClassName = materialName, Strength = strength }; ; - INdmPrimitive ndmPrimitive = new NdmPrimitive { Center = _center, Shape = _shape, PrimitiveMaterial = primitiveMaterial }; - return ndmPrimitive; - } - - private MaterialTypes GetMaterialTypes() - { - return MaterialTypes.Reinforcement; - } - } -} diff --git a/StructureHelperCommon/Models/NdmPrimitives/PrimitiveBase.cs b/StructureHelperCommon/Models/NdmPrimitives/PrimitiveBase.cs deleted file mode 100644 index 0af755d..0000000 --- a/StructureHelperCommon/Models/NdmPrimitives/PrimitiveBase.cs +++ /dev/null @@ -1,22 +0,0 @@ -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.Shapes; - -namespace StructureHelperCommon.Models.NdmPrimitives -{ - public abstract class PrimitiveBase : IPrimitive where T : IShape - { - protected ICenter _center; - protected T _shape; - - public ICenter Center => _center; - public IShape Shape => _shape; - - protected PrimitiveBase(ICenter center, T shape) - { - _center = center; - _shape = shape; - } - - public abstract INdmPrimitive GetNdmPrimitive(); - } -} diff --git a/StructureHelperCommon/Models/NdmPrimitives/RectanglePrimitive.cs b/StructureHelperCommon/Models/NdmPrimitives/RectanglePrimitive.cs deleted file mode 100644 index 6fb5ea4..0000000 --- a/StructureHelperCommon/Models/NdmPrimitives/RectanglePrimitive.cs +++ /dev/null @@ -1,32 +0,0 @@ -using StructureHelperCommon.Infrastructures.Enums; -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.Materials; -using StructureHelperCommon.Models.Shapes; - -namespace StructureHelperCommon.Models.NdmPrimitives -{ - public class RectanglePrimitive : PrimitiveBase, IRectangle - { - public RectanglePrimitive(ICenter center, IRectangle shape) : base(center, shape) { } - - public double Width => _shape.Width; - - public double Height => _shape.Height; - - public double Angle => _shape.Angle; - - public override INdmPrimitive GetNdmPrimitive() - { - double strength = 40e6d; - string materialName = "C40/45"; - IPrimitiveMaterial primitiveMaterial = new PrimitiveMaterial { MaterialType = GetMaterialTypes(), ClassName = materialName, Strength = strength }; ; - INdmPrimitive ndmPrimitive = new NdmPrimitive { Center = _center, Shape = _shape, PrimitiveMaterial = primitiveMaterial, NdmMaxSize = 1, NdmMinDivision = 20 }; - return ndmPrimitive; - } - - private MaterialTypes GetMaterialTypes() - { - return MaterialTypes.Concrete; - } - } -} diff --git a/StructureHelperCommon/StructureHelperCommon.csproj b/StructureHelperCommon/StructureHelperCommon.csproj index af6a756..3fab5e8 100644 --- a/StructureHelperCommon/StructureHelperCommon.csproj +++ b/StructureHelperCommon/StructureHelperCommon.csproj @@ -50,15 +50,7 @@ - - - - - - - - diff --git a/StructureHelperLogics/Models/Materials/ElasticMaterial.cs b/StructureHelperLogics/Models/Materials/ElasticMaterial.cs index 500212d..fa7e353 100644 --- a/StructureHelperLogics/Models/Materials/ElasticMaterial.cs +++ b/StructureHelperLogics/Models/Materials/ElasticMaterial.cs @@ -1,4 +1,4 @@ -using StructureHelperCommon.Models.Materials; +using StructureHelperLogics.Models.Materials; using System; using System.Collections.Generic; using System.Linq; diff --git a/StructureHelperLogics/Models/Materials/IHelperMaterial.cs b/StructureHelperLogics/Models/Materials/IHelperMaterial.cs index df10795..f040833 100644 --- a/StructureHelperLogics/Models/Materials/IHelperMaterial.cs +++ b/StructureHelperLogics/Models/Materials/IHelperMaterial.cs @@ -1,5 +1,5 @@ using LoaderCalculator.Data.Materials; -using StructureHelperCommon.Models.Materials; +using StructureHelperLogics.Models.Materials; using System; using System.Collections.Generic; using System.Text; diff --git a/StructureHelperLogics/Models/Materials/ILibMaterial.cs b/StructureHelperLogics/Models/Materials/ILibMaterial.cs index 667f110..179e6e4 100644 --- a/StructureHelperLogics/Models/Materials/ILibMaterial.cs +++ b/StructureHelperLogics/Models/Materials/ILibMaterial.cs @@ -1,5 +1,5 @@ using StructureHelperCommon.Infrastructures.Enums; -using StructureHelperCommon.Models.Materials; +using StructureHelperLogics.Models.Materials; using StructureHelperLogics.Infrastructures.CommonEnums; using System; using System.Collections.Generic; diff --git a/StructureHelperCommon/Models/Materials/IPrimitiveMaterial.cs b/StructureHelperLogics/Models/Materials/IPrimitiveMaterial.cs similarity index 85% rename from StructureHelperCommon/Models/Materials/IPrimitiveMaterial.cs rename to StructureHelperLogics/Models/Materials/IPrimitiveMaterial.cs index 9289b2b..76a6355 100644 --- a/StructureHelperCommon/Models/Materials/IPrimitiveMaterial.cs +++ b/StructureHelperLogics/Models/Materials/IPrimitiveMaterial.cs @@ -1,6 +1,6 @@ using StructureHelperCommon.Infrastructures.Enums; -namespace StructureHelperCommon.Models.Materials +namespace StructureHelperLogics.Models.Materials { public interface IPrimitiveMaterial { diff --git a/StructureHelperLogics/Models/Materials/LibMaterial.cs b/StructureHelperLogics/Models/Materials/LibMaterial.cs index 4ff2199..30b1c3b 100644 --- a/StructureHelperLogics/Models/Materials/LibMaterial.cs +++ b/StructureHelperLogics/Models/Materials/LibMaterial.cs @@ -2,7 +2,7 @@ using StructureHelperCommon.Infrastructures.Enums; using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Strings; -using StructureHelperCommon.Models.Materials; +using StructureHelperLogics.Models.Materials; using System; using System.Collections.Generic; using System.Text; diff --git a/StructureHelperCommon/Models/Materials/PrimitiveMaterial.cs b/StructureHelperLogics/Models/Materials/PrimitiveMaterial.cs similarity index 68% rename from StructureHelperCommon/Models/Materials/PrimitiveMaterial.cs rename to StructureHelperLogics/Models/Materials/PrimitiveMaterial.cs index 4a05055..ecf5f64 100644 --- a/StructureHelperCommon/Models/Materials/PrimitiveMaterial.cs +++ b/StructureHelperLogics/Models/Materials/PrimitiveMaterial.cs @@ -1,13 +1,15 @@ -using StructureHelperCommon.Infrastructures.Enums; +using StructureHelper.Models.Materials; +using StructureHelperCommon.Infrastructures.Enums; using System; -namespace StructureHelperCommon.Models.Materials +namespace StructureHelperLogics.Models.Materials { public class PrimitiveMaterial : IPrimitiveMaterial { public string Id { get; } public MaterialTypes MaterialType { get; set; } public CodeTypes CodeType { get; set; } + IHeadMaterial HeadMaterial { get; set; } public string ClassName { get; set; } public double Strength { get; set; } diff --git a/StructureHelperCommon/Models/Entities/INdmPrimitive.cs b/StructureHelperLogics/NdmCalculations/Primitives/INdmPrimitive.cs similarity index 81% rename from StructureHelperCommon/Models/Entities/INdmPrimitive.cs rename to StructureHelperLogics/NdmCalculations/Primitives/INdmPrimitive.cs index 1ddc65a..1471cea 100644 --- a/StructureHelperCommon/Models/Entities/INdmPrimitive.cs +++ b/StructureHelperLogics/NdmCalculations/Primitives/INdmPrimitive.cs @@ -1,7 +1,7 @@ -using StructureHelperCommon.Models.Materials; +using StructureHelperLogics.Models.Materials; using StructureHelperCommon.Models.Shapes; -namespace StructureHelperCommon.Models.Entities +namespace StructureHelperLogics.Models.Primitives { public interface INdmPrimitive { diff --git a/StructureHelperCommon/Models/Entities/NdmPrimitive.cs b/StructureHelperLogics/NdmCalculations/Primitives/NdmPrimitive.cs similarity index 83% rename from StructureHelperCommon/Models/Entities/NdmPrimitive.cs rename to StructureHelperLogics/NdmCalculations/Primitives/NdmPrimitive.cs index a837b67..f86de59 100644 --- a/StructureHelperCommon/Models/Entities/NdmPrimitive.cs +++ b/StructureHelperLogics/NdmCalculations/Primitives/NdmPrimitive.cs @@ -1,7 +1,7 @@ -using StructureHelperCommon.Models.Materials; +using StructureHelperLogics.Models.Materials; using StructureHelperCommon.Models.Shapes; -namespace StructureHelperCommon.Models.Entities +namespace StructureHelperLogics.Models.Primitives { public class NdmPrimitive : INdmPrimitive { diff --git a/StructureHelperLogics/NdmCalculations/Triangulations/PointTriangulationLogicOptions.cs b/StructureHelperLogics/NdmCalculations/Triangulations/PointTriangulationLogicOptions.cs index faede61..7a56a01 100644 --- a/StructureHelperLogics/NdmCalculations/Triangulations/PointTriangulationLogicOptions.cs +++ b/StructureHelperLogics/NdmCalculations/Triangulations/PointTriangulationLogicOptions.cs @@ -1,8 +1,7 @@ using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Strings; -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.NdmPrimitives; using StructureHelperCommon.Models.Shapes; +using StructureHelperLogics.Models.Primitives; namespace StructureHelperLogics.NdmCalculations.Triangulations { diff --git a/StructureHelperLogics/NdmCalculations/Triangulations/RectangleTriangulationLogicOptions.cs b/StructureHelperLogics/NdmCalculations/Triangulations/RectangleTriangulationLogicOptions.cs index aa70138..540942d 100644 --- a/StructureHelperLogics/NdmCalculations/Triangulations/RectangleTriangulationLogicOptions.cs +++ b/StructureHelperLogics/NdmCalculations/Triangulations/RectangleTriangulationLogicOptions.cs @@ -1,8 +1,8 @@ using System; using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Strings; -using StructureHelperCommon.Models.Entities; using StructureHelperCommon.Models.Shapes; +using StructureHelperLogics.Models.Primitives; namespace StructureHelperLogics.NdmCalculations.Triangulations { diff --git a/StructureHelperLogics/NdmCalculations/Triangulations/Triangulation.cs b/StructureHelperLogics/NdmCalculations/Triangulations/Triangulation.cs index 07a8718..ff6d815 100644 --- a/StructureHelperLogics/NdmCalculations/Triangulations/Triangulation.cs +++ b/StructureHelperLogics/NdmCalculations/Triangulations/Triangulation.cs @@ -6,9 +6,9 @@ using LoaderCalculator.Data.Ndms; using StructureHelperCommon.Infrastructures.Enums; using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Strings; -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.Materials; +using StructureHelperLogics.Models.Materials; using StructureHelperCommon.Models.Shapes; +using StructureHelperLogics.Models.Primitives; namespace StructureHelperLogics.NdmCalculations.Triangulations { @@ -29,7 +29,11 @@ namespace StructureHelperLogics.NdmCalculations.Triangulations } return ndms; } - + /// + /// Returns dictionary of unique materials by collection of primitives + /// + /// + /// private static Dictionary GetPrimitiveMaterials(IEnumerable ndmPrimitives) { Dictionary primitiveMaterials = new Dictionary(); @@ -40,7 +44,13 @@ namespace StructureHelperLogics.NdmCalculations.Triangulations } return primitiveMaterials; } - + /// + /// Return dictionary of ndm-materials by dictionary of primirive materials + /// + /// + /// + /// + /// private static Dictionary GetMaterials(Dictionary PrimitiveMaterials, ITriangulationOptions options) { Dictionary materials = new Dictionary(); @@ -49,7 +59,7 @@ namespace StructureHelperLogics.NdmCalculations.Triangulations foreach (string id in keyCollection) { IPrimitiveMaterial primitiveMaterial; - if (PrimitiveMaterials.TryGetValue(id, out primitiveMaterial) == false) { throw new Exception("Material dictionary is not valid"); } + if (PrimitiveMaterials.TryGetValue(id, out primitiveMaterial) == false) { throw new StructureHelperException("Material dictionary is not valid"); } material = GetMaterial(primitiveMaterial, options); materials.Add(id, material); } diff --git a/StructureHelperLogics/Services/CalculationService.cs b/StructureHelperLogics/Services/CalculationService.cs index 2bac1bd..f804431 100644 --- a/StructureHelperLogics/Services/CalculationService.cs +++ b/StructureHelperLogics/Services/CalculationService.cs @@ -4,12 +4,12 @@ using LoaderCalculator; using LoaderCalculator.Data.Matrix; using LoaderCalculator.Data.Ndms; using LoaderCalculator.Data.SourceData; -using StructureHelperCommon.Models.Entities; using StructureHelperLogics.NdmCalculations.Triangulations; using StructureHelperLogics.Infrastructures.CommonEnums; using StructureHelperLogics.Models.Calculations.CalculationsResults; using StructureHelperLogics.Models.Calculations.CalculationProperties; using System; +using StructureHelperLogics.Models.Primitives; namespace StructureHelperLogics.Services { diff --git a/StructureHelperTests/FunctionalTests/Ndms/RCSections/RCSectionFromNdmPrimitiveTest.cs b/StructureHelperTests/FunctionalTests/Ndms/RCSections/RCSectionFromNdmPrimitiveTest.cs index e3736b6..3320688 100644 --- a/StructureHelperTests/FunctionalTests/Ndms/RCSections/RCSectionFromNdmPrimitiveTest.cs +++ b/StructureHelperTests/FunctionalTests/Ndms/RCSections/RCSectionFromNdmPrimitiveTest.cs @@ -7,9 +7,10 @@ using NUnit.Framework; using StructureHelperLogics.NdmCalculations.Triangulations; using System.Collections.Generic; using System.Threading; -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.NdmPrimitives; using StructureHelperCommon.Models.Shapes; +using StructureHelperLogics.Models.Primitives; +using StructureHelper.Infrastructure.UI.DataContexts; +using dContext = StructureHelper.Infrastructure.UI.DataContexts; namespace StructureHelperTests.FunctionalTests.Ndms.RCSections { @@ -40,19 +41,19 @@ namespace StructureHelperTests.FunctionalTests.Ndms.RCSections ITriangulationOptions options = new TriangulationOptions { LimiteState = StructureHelperLogics.Infrastructures.CommonEnums.LimitStates.Collapse, CalcTerm = StructureHelperLogics.Infrastructures.CommonEnums.CalcTerms.ShortTerm }; var ndmPrimitives = new List(); //Добавляем прямоугольник бетонного сечения - var concreteRectangle = new RectanglePrimitive(new Center { X = 0, Y = 0 }, new Rectangle { Width = width, Height = height, Angle = 0 }); + var concreteRectangle = new dContext.Rectangle(new Center { X = 0, Y = 0 }, new Rectangle { Width = width, Height = height, Angle = 0 }); ndmPrimitives.Add(concreteRectangle.GetNdmPrimitive()); //Добавляем 4 точки для арматуры // 0.05 - величина защитного слоя (расстояние от грани прямоугольника до центра арматуры //С площадью нижней арматуры - var leftBottomReinforcementPoint = new PointPrimitive(new Center { X = -width / 2 + 0.05d, Y = -height / 2 + 0.05 }, new Point { Area = bottomArea }); + var leftBottomReinforcementPoint = new dContext.Point(new Center { X = -width / 2 + 0.05d, Y = -height / 2 + 0.05 }, new Point { Area = bottomArea }); ndmPrimitives.Add(leftBottomReinforcementPoint.GetNdmPrimitive()); - var rightBottomReinforcementPoint = new PointPrimitive(new Center { X = width / 2 - 0.05d, Y = -height / 2 + 0.05 }, new Point { Area = bottomArea }); + var rightBottomReinforcementPoint = new Point(new Center { X = width / 2 - 0.05d, Y = -height / 2 + 0.05 }, new Point { Area = bottomArea }); ndmPrimitives.Add(rightBottomReinforcementPoint.GetNdmPrimitive()); //С площадью верхней арматуры - var leftTopReinforcementPoint = new PointPrimitive(new Center { X = -width / 2 + 0.05d, Y = height / 2 - 0.05 }, new Point { Area = topArea }); + var leftTopReinforcementPoint = new dContext.Point(new Center { X = -width / 2 + 0.05d, Y = height / 2 - 0.05 }, new Point { Area = topArea }); ndmPrimitives.Add(leftTopReinforcementPoint.GetNdmPrimitive()); - var rightTopReinforcementPoint = new PointPrimitive(new Center { X = width / 2 - 0.05d, Y = height / 2 - 0.05 }, new Point { Area = topArea }); + var rightTopReinforcementPoint = new dContext.Point(new Center { X = width / 2 - 0.05d, Y = height / 2 - 0.05 }, new Point { Area = topArea }); ndmPrimitives.Add(rightTopReinforcementPoint.GetNdmPrimitive()); //Формируем коллекцию элементарных участков для расчета в библитеке (т.е. выполняем триангуляцию) ndmCollection.AddRange(Triangulation.GetNdms(ndmPrimitives, options)); diff --git a/StructureHelperTests/FunctionalTests/Ndms/RCSections/RCSectionTest.cs b/StructureHelperTests/FunctionalTests/Ndms/RCSections/RCSectionTest.cs index 91a88a9..25028ca 100644 --- a/StructureHelperTests/FunctionalTests/Ndms/RCSections/RCSectionTest.cs +++ b/StructureHelperTests/FunctionalTests/Ndms/RCSections/RCSectionTest.cs @@ -7,10 +7,10 @@ using NUnit.Framework; using StructureHelperLogics.NdmCalculations.Triangulations; using System.Collections.Generic; using System.Threading; -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.Materials; using StructureHelperCommon.Models.Shapes; using StructureHelperCommon.Infrastructures.Enums; +using StructureHelperLogics.Models.Calculations; +using StructureHelperLogics.Models.Primitives; namespace StructureHelperTests.FunctionalTests.Ndms.RCSections { diff --git a/StructureHelperTests/FunctionalTests/Ndms/SteelSections/ReinforcementTest.cs b/StructureHelperTests/FunctionalTests/Ndms/SteelSections/ReinforcementTest.cs index 6d19bb4..fcc62eb 100644 --- a/StructureHelperTests/FunctionalTests/Ndms/SteelSections/ReinforcementTest.cs +++ b/StructureHelperTests/FunctionalTests/Ndms/SteelSections/ReinforcementTest.cs @@ -6,10 +6,9 @@ using NUnit.Framework; using StructureHelperLogics.NdmCalculations.Triangulations; using System.Collections.Generic; using System.Threading; -using StructureHelperCommon.Models.Entities; -using StructureHelperCommon.Models.Materials; using StructureHelperCommon.Models.Shapes; using StructureHelperCommon.Infrastructures.Enums; +using StructureHelperLogics.Models.Materials; namespace StructureHelperTests.FunctionalTests.Ndms.SteelSections { diff --git a/Windows/MainWindow/MainViewModel.cs b/Windows/MainWindow/MainViewModel.cs index 0ae955c..c35493e 100644 --- a/Windows/MainWindow/MainViewModel.cs +++ b/Windows/MainWindow/MainViewModel.cs @@ -264,7 +264,7 @@ namespace StructureHelper.Windows.MainWindow } else if (primitiveType == PrimitiveType.Point) { - primitive = new Point(0.50, 0, 0, this); + primitive = new Point(0.0005d, 0d, 0d, this); } else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + nameof(primitiveType)); } Primitives.Add(primitive); diff --git a/Windows/PrimitiveProperiesWindow/PrimitivePropertiesView.xaml b/Windows/PrimitiveProperiesWindow/PrimitivePropertiesView.xaml index 6759349..573741b 100644 --- a/Windows/PrimitiveProperiesWindow/PrimitivePropertiesView.xaml +++ b/Windows/PrimitiveProperiesWindow/PrimitivePropertiesView.xaml @@ -48,7 +48,7 @@ - + @@ -76,6 +76,7 @@ + @@ -86,6 +87,7 @@ + @@ -111,6 +113,7 @@ + @@ -122,7 +125,7 @@ - + diff --git a/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs b/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs index 43f7ad8..fcdb02b 100644 --- a/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs +++ b/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs @@ -3,7 +3,6 @@ using StructureHelper.Infrastructure.UI.DataContexts; using StructureHelper.Models.Materials; using StructureHelper.Windows.ColorPickerWindow; using StructureHelper.Windows.MainWindow.Materials; -using StructureHelperCommon.Models.NdmPrimitives; using StructureHelperCommon.Models.Shapes; using StructureHelperCommon.Services.ColorServices; using StructureHelperLogics.Models.Materials; @@ -181,6 +180,8 @@ namespace StructureHelper.Windows.ViewModels.PrimitiveProperties { var shape = primitive as Point; shape.Area = value; + OnPropertyChanged(nameof(Area)); + OnPropertyChanged(nameof(shape.Diameter)); } } } @@ -206,6 +207,14 @@ namespace StructureHelper.Windows.ViewModels.PrimitiveProperties } } + public int ZIndex + { get => primitive.ZIndex; + set + { + primitive.ZIndex = value; + } + } + public string this[string columnName] { get