diff --git a/StructureHelper/Infrastructure/UI/DataContexts/CircleViewPrimitive.cs b/StructureHelper/Infrastructure/UI/DataContexts/CircleViewPrimitive.cs index 9523ad0..748b9ed 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/CircleViewPrimitive.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/CircleViewPrimitive.cs @@ -53,5 +53,12 @@ namespace StructureHelper.Infrastructure.UI.DataContexts OnPropertyChanged(nameof(PrimitiveLeft)); OnPropertyChanged(nameof(PrimitiveTop)); } + public override void Refresh() + { + OnPropertyChanged(nameof(Diameter)); + OnPropertyChanged(nameof(PrimitiveLeft)); + OnPropertyChanged(nameof(PrimitiveTop)); + base.Refresh(); + } } } diff --git a/StructureHelper/Infrastructure/UI/DataContexts/PointViewPrimitive.cs b/StructureHelper/Infrastructure/UI/DataContexts/PointViewPrimitive.cs index cff5884..bc5d969 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/PointViewPrimitive.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/PointViewPrimitive.cs @@ -42,7 +42,11 @@ namespace StructureHelper.Infrastructure.UI.DataContexts { return primitive; } - + public override void Refresh() + { + RefreshPlacement(); + base.Refresh(); + } private void RefreshPlacement() { OnPropertyChanged(nameof(Area)); diff --git a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs index 931a22b..b280374 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs @@ -39,19 +39,19 @@ namespace StructureHelper.Infrastructure.UI.DataContexts } public double CenterX { - get => primitive.CenterX; + get => primitive.Center.X; set { - primitive.CenterX = value; + primitive.Center.X = value; OnPropertyChanged(nameof(CenterX)); } } public double CenterY { - get => primitive.CenterY; + get => primitive.Center.Y; set { - primitive.CenterY = value; + primitive.Center.Y = value; OnPropertyChanged(nameof(CenterY)); OnPropertyChanged(nameof(InvertedCenterY)); } @@ -261,5 +261,16 @@ namespace StructureHelper.Infrastructure.UI.DataContexts { OnPropertyChanged(nameof(Color)); } + public virtual void Refresh() + { + OnPropertyChanged(nameof(Name)); + OnPropertyChanged(nameof(Color)); + OnPropertyChanged(nameof(CenterX)); + OnPropertyChanged(nameof(CenterY)); + OnPropertyChanged(nameof(SetMaterialColor)); + OnPropertyChanged(nameof(Triangulate)); + OnPropertyChanged(nameof(PrimitiveWidth)); + OnPropertyChanged(nameof(PrimitiveHeight)); + } } } diff --git a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs index ff76ad7..1f963a0 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs @@ -35,14 +35,14 @@ namespace StructureHelper.Infrastructure.UI.DataContexts var circle = primitive as ICirclePrimitive; viewItem = new CircleViewPrimitive(circle); } - else if (primitive is IPointPrimitive & primitive is not ReinforcementPrimitive) + else if (primitive is IPointPrimitive & primitive is not RebarPrimitive) { var point = primitive as IPointPrimitive; viewItem = new PointViewPrimitive(point); } - else if (primitive is ReinforcementPrimitive) + else if (primitive is RebarPrimitive) { - var point = primitive as ReinforcementPrimitive; + var point = primitive as RebarPrimitive; viewItem = new ReinforcementViewPrimitive(point); } else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + $". Actual type: {primitive.GetType()}"); diff --git a/StructureHelper/Infrastructure/UI/DataContexts/RectangleViewPrimitive.cs b/StructureHelper/Infrastructure/UI/DataContexts/RectangleViewPrimitive.cs index 3f08950..f286553 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/RectangleViewPrimitive.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/RectangleViewPrimitive.cs @@ -42,7 +42,12 @@ namespace StructureHelper.Infrastructure.UI.DataContexts primitive = _primitive; DivisionViewModel = new HasDivisionViewModel(primitive); } - + public override void Refresh() + { + OnPropertyChanged(nameof(PrimitiveLeft)); + OnPropertyChanged(nameof(PrimitiveTop)); + base.Refresh(); + } public override INdmPrimitive GetNdmPrimitive() { return primitive; diff --git a/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs b/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs index 4d869a6..e644160 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs @@ -9,7 +9,7 @@ namespace StructureHelper.Infrastructure.UI.DataContexts { public class ReinforcementViewPrimitive : PointViewPrimitive, IHasHostPrimitive { - ReinforcementPrimitive primitive; + RebarPrimitive primitive; public INdmPrimitive HostPrimitive { @@ -21,9 +21,14 @@ namespace StructureHelper.Infrastructure.UI.DataContexts } } - public ReinforcementViewPrimitive(ReinforcementPrimitive _primitive) : base(_primitive) + public ReinforcementViewPrimitive(RebarPrimitive _primitive) : base(_primitive) { primitive = _primitive; } + public override void Refresh() + { + OnPropertyChanged(nameof(HostPrimitive)); + base.Refresh(); + } } } diff --git a/StructureHelper/Libraries/LoaderCalculator.dll b/StructureHelper/Libraries/LoaderCalculator.dll index 9a7406a..a41eb6e 100644 Binary files a/StructureHelper/Libraries/LoaderCalculator.dll and b/StructureHelper/Libraries/LoaderCalculator.dll differ diff --git a/StructureHelper/Models/Primitives/Factories/PrimitiveFactory.cs b/StructureHelper/Models/Primitives/Factories/PrimitiveFactory.cs deleted file mode 100644 index 3f68c55..0000000 --- a/StructureHelper/Models/Primitives/Factories/PrimitiveFactory.cs +++ /dev/null @@ -1,81 +0,0 @@ -using StructureHelper.Infrastructure.UI.DataContexts; -using StructureHelper.Models.Materials; -using StructureHelperCommon.Infrastructures.Enums; -using StructureHelperLogics.Models.Primitives; -using StructureHelperLogics.Models.Templates.RCs; -using StructureHelperLogics.NdmCalculations.Primitives; -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace StructureHelper.Models.Primitives.Factories -{ - internal static class PrimitiveFactory - { - public static IEnumerable GetRectangleRCElement(RectangleBeamTemplate template, IHeadMaterial concrete, IHeadMaterial reinforcement) - { - List primitives = new List(); - var rect = template.Shape as StructureHelperCommon.Models.Shapes.RectangleShape; - var width = rect.Width; - var height = rect.Height; - var area1 = Math.PI * template.BottomDiameter * template.BottomDiameter / 4d; - var area2 = Math.PI * template.TopDiameter * template.TopDiameter / 4d; - var gap = template.CoverGap; - - double[] xs = new double[] { -width / 2 + gap, width / 2 - gap }; - double[] ys = new double[] { -height / 2 + gap, height / 2 - gap }; - - var rectangle = new RectanglePrimitive() { Width = width, Height = height, Name = "Concrete block" }; - primitives.Add(new RectangleViewPrimitive(rectangle) { HeadMaterial = concrete}); - var point = new PointPrimitive() { CenterX = xs[0], CenterY = ys[0], Area = area1}; - var viewPoint = new PointViewPrimitive(point) { HeadMaterial = reinforcement, Name = "Left bottom point" }; - viewPoint.RegisterDeltas(xs[0], ys[0]); - primitives.Add(viewPoint); - point = new PointPrimitive() {CenterX = xs[1], CenterY = ys[0], Area = area1 }; - viewPoint = new PointViewPrimitive(point) { HeadMaterial = reinforcement, Name = "Right bottom point" }; - primitives.Add(viewPoint); - point = new PointPrimitive() { CenterX = xs[0], CenterY = ys[1], Area = area2 }; - viewPoint = new PointViewPrimitive(point) { HeadMaterial = reinforcement, Name = "Left top point" }; - primitives.Add(viewPoint); - point = new PointPrimitive() { CenterX = xs[1], CenterY = ys[1], Area = area2 }; - viewPoint = new PointViewPrimitive(point) { HeadMaterial = reinforcement, Name = "Right top point" }; - viewPoint.RegisterDeltas(xs[1], ys[1]); - primitives.Add(viewPoint); - - if (template.WidthCount > 2) - { - int count = template.WidthCount - 1; - double dist = (xs[1] - xs[0]) / count; - for (int i = 1; i < count; i++) - { - point = new PointPrimitive() {CenterX = xs[0] + dist * i, CenterY = ys[0], Area = area1 }; - viewPoint = new PointViewPrimitive(point) { HeadMaterial = reinforcement, Name = $"Bottom point {i}" }; - primitives.Add(viewPoint); - - point = new PointPrimitive() { CenterX = xs[0] + dist * i, CenterY = ys[1], Area = area2 }; - viewPoint = new PointViewPrimitive(point) { HeadMaterial = reinforcement, Name = $"Top point {i}" }; - primitives.Add(viewPoint); - } - } - if (template.HeightCount > 2) - { - int count = template.HeightCount - 1; - double dist = (ys[1] - ys[0]) / count; - for (int i = 1; i < count; i++) - { - point = new PointPrimitive() {CenterX = xs[0], CenterY = ys[0] + dist * i, Area = area1 }; - viewPoint = new PointViewPrimitive(point) { HeadMaterial = reinforcement, Name = $"Left point {i}" }; - primitives.Add(viewPoint); - - point = new PointPrimitive() { CenterX = xs[1], CenterY = ys[0] + dist * i, Area = area1 }; - viewPoint = new PointViewPrimitive(point) { HeadMaterial = reinforcement, Name = $"Right point {i}" }; - primitives.Add(viewPoint); - } - } - return primitives; - } - } -} diff --git a/StructureHelper/Services/ResultViewers/ShowAnchorageResult.cs b/StructureHelper/Services/ResultViewers/ShowAnchorageResult.cs index 0ac9c22..4f90733 100644 --- a/StructureHelper/Services/ResultViewers/ShowAnchorageResult.cs +++ b/StructureHelper/Services/ResultViewers/ShowAnchorageResult.cs @@ -50,9 +50,9 @@ namespace StructureHelper.Services.ResultViewers List primitives = new List(); foreach (var item in ndmPrimitives) { - if (item is ReinforcementPrimitive) + if (item is RebarPrimitive) { - var primitive = item as ReinforcementPrimitive; + var primitive = item as RebarPrimitive; var inputData = InputDataFactory.GetInputData(primitive, strainMatrix, limitState, calcTerm, 1d); if (fullStrength == true) { @@ -73,9 +73,9 @@ namespace StructureHelper.Services.ResultViewers List primitives = new List(); foreach (var item in ndmPrimitives) { - if (item is ReinforcementPrimitive) + if (item is RebarPrimitive) { - var primitive = item as ReinforcementPrimitive; + var primitive = item as RebarPrimitive; var inputData = InputDataFactory.GetInputData(primitive, strainMatrix, limitState, calcTerm, 1d); var calculator = new AnchorageCalculator(inputData); var val = calculator.GetBaseDevLength() * UnitConstants.Length; @@ -92,9 +92,9 @@ namespace StructureHelper.Services.ResultViewers List primitives = new List(); foreach (var item in ndmPrimitives) { - if (item is ReinforcementPrimitive) + if (item is RebarPrimitive) { - var primitive = item as ReinforcementPrimitive; + var primitive = item as RebarPrimitive; var inputData = InputDataFactory.GetInputData(primitive, strainMatrix, limitState, calcTerm, 1d); if (fullStrength == true) { @@ -116,9 +116,9 @@ namespace StructureHelper.Services.ResultViewers List primitives = new List(); foreach (var item in ndmPrimitives) { - if (item is ReinforcementPrimitive) + if (item is RebarPrimitive) { - var primitive = item as ReinforcementPrimitive; + var primitive = item as RebarPrimitive; var inputData = InputDataFactory.GetInputData(primitive, strainMatrix, limitState, calcTerm, lapperdCountRate); if (fullStrength == true) { @@ -138,8 +138,8 @@ namespace StructureHelper.Services.ResultViewers { var valuePrimitive = new FieldVisualizer.Entities.Values.Primitives.CirclePrimitive() { - CenterX = primitive.CenterX, - CenterY = primitive.CenterY, + CenterX = primitive.Center.X, + CenterY = primitive.Center.Y, Diameter = Math.Sqrt(primitive.Area / Math.PI) * 2, Value = val }; diff --git a/StructureHelper/StructureHelper.csproj b/StructureHelper/StructureHelper.csproj index 2a86384..76dd3e7 100644 --- a/StructureHelper/StructureHelper.csproj +++ b/StructureHelper/StructureHelper.csproj @@ -50,6 +50,7 @@ + diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml index 411ecb2..32c082d 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml @@ -16,7 +16,7 @@ - + @@ -92,5 +92,6 @@ + diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml.cs index a92b889..0e7ae6b 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml.cs @@ -25,6 +25,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu public ForceCalculatorView(ForceCalculatorViewModel _forceCalculatorViewModel) { viewModel = _forceCalculatorViewModel; + viewModel.ParentWindow = this; DataContext = viewModel; InitializeComponent(); } diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml index ef7698c..4eda487 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml @@ -46,6 +46,7 @@