Add stirrup primitives

This commit is contained in:
RedikultsevEvg
2025-08-09 00:23:13 +05:00
parent 2f6c35482b
commit b34618e8a4
17 changed files with 405 additions and 44 deletions

View File

@@ -27,7 +27,8 @@ namespace DataAccess.DTOs
Id = id;
VisualProperty = new PrimitiveVisualPropertyDTO(Guid.NewGuid())
{
Color = (Color)ColorConverter.ConvertFromString("Black")
Color = (Color)ColorConverter.ConvertFromString("Gray"),
Opacity = 0.5
};
}

View File

@@ -36,7 +36,8 @@ namespace DataAccess.DTOs
Id = id;
VisualProperty = new PrimitiveVisualPropertyDTO(Guid.NewGuid())
{
Color = (Color)ColorConverter.ConvertFromString("Brown")
Color = (Color)ColorConverter.ConvertFromString("Brown"),
Opacity = 0.5
};
}

View File

@@ -17,9 +17,11 @@ namespace StructureHelper.Infrastructure.UI.GraphicalPrimitives
public double CenterX { get; set; } = 0;
public double CenterY { get; set; } = 0;
public double FullDepth => inclinedSection.FullDepth;
public double EffectiveDepth => inclinedSection.EffectiveDepth;
public double BottomCover => FullDepth - EffectiveDepth;
public double PositiveLength => inclinedSection.EffectiveDepth * 3.5;
public double WebWidth => inclinedSection.WebWidth;
public double ReinforcementArea => inclinedSection.BeamShearSection.ReinforcementArea;
public double EffectiveDepth => Math.Round(inclinedSection.EffectiveDepth, 3);
public double BottomCover => Math.Round(FullDepth - EffectiveDepth, 3);
public double PositiveLength => 100;
public double NegativeLength { get; set; } = -0.1;
public double SupportHeight { get; set; } = 0.1;
public double SupportWidth { get; set; } = 0.2;
@@ -29,6 +31,8 @@ namespace StructureHelper.Infrastructure.UI.GraphicalPrimitives
public IPrimitiveVisualProperty VisualProperty => beamShearSection.VisualProperty;
public IBeamShearSection BeamShearSection => beamShearSection;
public BeamShearSectionPrimitive(IBeamShearSection beamShearSection, IInclinedSection inclinedSection)
{
this.beamShearSection = beamShearSection;

View File

@@ -14,9 +14,11 @@ namespace StructureHelper.Infrastructure.UI.GraphicalPrimitives
public double SectionEndX => inclinedSection.EndCoord;
public double SectionStartY => inclinedSection.FullDepth - inclinedSection.EffectiveDepth;
public double SectionEndY => inclinedSection.FullDepth;
public double FactorOfUsing => source.FactorOfUsing;
public double EffectiveDepth => inclinedSection.EffectiveDepth;
public double FactorOfUsing => Math.Round(source.FactorOfUsing, 4);
public double EffectiveDepth => Math.Round(inclinedSection.EffectiveDepth, 3);
public double SpanRatio => (inclinedSection.EndCoord - inclinedSection.StartCoord) / inclinedSection.EffectiveDepth;
public double ActualShearForce => Math.Round(source.InputData.ForceTuple.Qy);
public double UltimateShearForce => Math.Round(source.TotalStrength);
public double CenterX => 0;
public double CenterY => 0;

View File

@@ -0,0 +1,27 @@
using StructureHelperCommon.Models.VisualProperties;
using StructureHelperLogics.Models.BeamShears;
namespace StructureHelper.Infrastructure.UI.GraphicalPrimitives
{
internal class StirrupByDensityPrimitive : IGraphicalPrimitive
{
public IStirrupByDensity StirrupByDensity { get; }
public double CenterX => 0;
public double CenterY => 0;
public double StartPoinX => StirrupByDensity.StartCoordinate;
public double BottomPointY => InclinedSection.FullDepth - InclinedSection.EffectiveDepth;
public double TopPointY => InclinedSection.FullDepth;
public double Length => StirrupByDensity.EndCoordinate - StirrupByDensity.StartCoordinate;
public double Depth => InclinedSection.EffectiveDepth;
public IPrimitiveVisualProperty VisualProperty => StirrupByDensity.VisualProperty;
public IInclinedSection InclinedSection { get; set; }
public StirrupByDensityPrimitive(IStirrupByDensity stirrupByDensity, IInclinedSection inclinedSection)
{
StirrupByDensity = stirrupByDensity;
this.InclinedSection = inclinedSection;
}
}
}

View File

@@ -0,0 +1,36 @@
using StructureHelperCommon.Models.VisualProperties;
using StructureHelperLogics.Models.BeamShears;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelper.Infrastructure.UI.GraphicalPrimitives
{
public class StirrupByInclinedRebarPrimitive : IGraphicalPrimitive
{
private IInclinedSection inclinedSection;
public IStirrupByInclinedRebar StirrupByInclinedRebar { get; }
public double StartPointX => StirrupByInclinedRebar.StartCoordinate;
public double StartPointY => inclinedSection.FullDepth - StirrupByInclinedRebar.CompressedGap;
public double EndPointX => StirrupByInclinedRebar.StartCoordinate + GetRebarLengthX();
public double EndPointY => inclinedSection.FullDepth - inclinedSection.EffectiveDepth;
public double CenterX => 0;
public double CenterY => 0;
public IPrimitiveVisualProperty VisualProperty => StirrupByInclinedRebar.VisualProperty;
public StirrupByInclinedRebarPrimitive(IStirrupByInclinedRebar stirrupByInclinedRebar, IInclinedSection inclinedSection)
{
StirrupByInclinedRebar = stirrupByInclinedRebar;
this.inclinedSection = inclinedSection;
}
private double GetRebarLengthX()
{
double angleInRadian = Math.PI * StirrupByInclinedRebar.AngleOfInclination / 180;
double rebarLengthY = inclinedSection.EffectiveDepth - StirrupByInclinedRebar.CompressedGap;
double rebarLengthX = rebarLengthY / Math.Tan(angleInRadian);
return rebarLengthX;
}
}
}

View File

@@ -0,0 +1,34 @@
using StructureHelperCommon.Models.VisualProperties;
using StructureHelperLogics.Models.BeamShears;
using System;
namespace StructureHelper.Infrastructure.UI.GraphicalPrimitives
{
public class StirrupByRebarPrimitive : IGraphicalPrimitive
{
private readonly IInclinedSection inclinedSection;
private readonly IStirrupByDensity stirrupByDensity;
public IStirrupByRebar StirrupByRebar { get; }
public double CenterX => 0;
public double CenterY => 0;
public double StartPoinX => StirrupByRebar.StartCoordinate;
public double BottomPointY => InclinedSection.FullDepth - InclinedSection.EffectiveDepth;
public double TopPointY => InclinedSection.FullDepth;
public double Length => StirrupByRebar.EndCoordinate - StirrupByRebar.StartCoordinate;
public double Depth => InclinedSection.EffectiveDepth;
public double Density => Math.Round(stirrupByDensity.StirrupDensity);
public IPrimitiveVisualProperty VisualProperty => StirrupByRebar.VisualProperty;
public IInclinedSection InclinedSection => inclinedSection;
public StirrupByRebarPrimitive(IStirrupByRebar stirrupByRebar, IInclinedSection inclinedSection)
{
this.StirrupByRebar = stirrupByRebar;
this.inclinedSection = inclinedSection;
var logic = new StirrupByRebarToDensityConvertStrategy(null, inclinedSection);
stirrupByDensity = logic.Convert(stirrupByRebar);
}
}
}

View File

@@ -9,9 +9,11 @@
<Rectangle
Width="{Binding PositiveLength}"
Height="{Binding FullDepth}"
Stroke="Black"
StrokeThickness="0.02"
StrokeThickness="0.01"
>
<Rectangle.Stroke>
<SolidColorBrush Color="{Binding VisualProperty.Color}"/>
</Rectangle.Stroke>
<Rectangle.Fill>
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
</Rectangle.Fill>
@@ -27,11 +29,14 @@
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
</Grid.RowDefinitions>
<TextBlock Text="Beam shear section"/>
<TextBlock Grid.Row="1" Text="Full depth"/>
<TextBlock Text="Beam shear section: "/>
<TextBlock Grid.Column="1" Text="{Binding BeamShearSection.Name}"/>
<TextBlock Grid.Row="1" Text="Depth: "/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding FullDepth, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="2" Text="Effective depth"/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding EffectiveDepth, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="2" Text="Width: "/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding WebWidth, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="3" Text="Effective depth: "/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding EffectiveDepth, Converter={StaticResource LengthConverter}}"/>
</Grid>
</Rectangle.ToolTip>
</Rectangle>
@@ -40,9 +45,25 @@
X2="{Binding PositiveLength}"
Y1="{Binding BottomCover}"
Y2="{Binding BottomCover}"
Stroke="DarkGray"
StrokeThickness="0.02"
/>
Stroke="Black"
StrokeThickness="0.012"
>
<Line.ToolTip>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
</Grid.RowDefinitions>
<TextBlock Text="Reinforcement"/>
<TextBlock Grid.Row="1" Text="Area: "/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding ReinforcementArea, Converter={StaticResource AreaConverter}}"/>
</Grid>
</Line.ToolTip>
</Line>
<Rectangle
Canvas.Left="{Binding SupportStartX}"
Canvas.Top="{Binding SupportStartY}"
@@ -60,6 +81,7 @@
/>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="InclinedSectionPrimitiveTemplate"
DataType="primitives:InclinedSectionPrimitive">
<Canvas>
@@ -68,7 +90,7 @@
X2="{Binding SectionEndX}"
Y1="{Binding SectionStartY}"
Y2="{Binding SectionEndY}"
StrokeThickness="0.02"
StrokeThickness="0.01"
>
<Line.Stroke>
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
@@ -86,18 +108,25 @@
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
</Grid.RowDefinitions>
<TextBlock Text="Inclinated section"/>
<TextBlock Grid.Row="1" Text="Start coordinate"/>
<TextBlock Grid.Row="1" Text="Start coordinate: "/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding SectionStartX, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="2" Text="End coordinate"/>
<TextBlock Grid.Row="2" Text="End coordinate: "/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding SectionEndX, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="3" Text="Factor of using"/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding FactorOfUsing, Converter={StaticResource PlainDouble}}"/>
<TextBlock Grid.Row="4" Text="Effective depth"/>
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding EffectiveDepth, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="5" Text="Span c/d ratio"/>
<TextBlock Grid.Row="5" Grid.Column="1" Text="{Binding SpanRatio, Converter={StaticResource PlainDouble}}"/>
<TextBlock Grid.Row="3" Text="Actual shear force: "/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding ActualShearForce, Converter={StaticResource ForceConverter}}"/>
<TextBlock Grid.Row="4" Text="Ultimate shear force: "/>
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding UltimateShearForce, Converter={StaticResource ForceConverter}}"/>
<TextBlock Grid.Row="5" Text="Factor of using: "/>
<TextBlock Grid.Row="5" Grid.Column="1" Text="{Binding FactorOfUsing, Converter={StaticResource PlainDouble}}"/>
<TextBlock Grid.Row="6" Text="Effective depth: "/>
<TextBlock Grid.Row="6" Grid.Column="1" Text="{Binding EffectiveDepth, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="7" Text="Span c/d ratio: "/>
<TextBlock Grid.Row="7" Grid.Column="1" Text="{Binding SpanRatio, Converter={StaticResource PlainDouble}}"/>
</Grid>
</Line.ToolTip>
</Line>
@@ -106,7 +135,155 @@
X2="{Binding SectionStartX}"
Y1="0"
Y2="{Binding SectionStartY}"
StrokeThickness="0.02"
StrokeThickness="0.01"
>
<Line.Stroke>
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
</Line.Stroke>
</Line>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="StirrupByRebarPrimitiveTemplate"
DataType="primitives:StirrupByRebarPrimitive">
<Canvas>
<Rectangle
Width="{Binding Length}"
Height="{Binding Depth}"
StrokeThickness="0.005"
Canvas.Left="{Binding StartPoinX}"
Canvas.Top="{Binding BottomPointY}"
>
<Rectangle.Stroke>
<SolidColorBrush Color="{Binding VisualProperty.Color}"/>
</Rectangle.Stroke>
<Rectangle.Fill>
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
</Rectangle.Fill>
<Rectangle.ToolTip>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="23"/>
<RowDefinition Height="23"/>
<RowDefinition Height="23"/>
<RowDefinition Height="23"/>
<RowDefinition Height="23"/>
<RowDefinition Height="23"/>
</Grid.RowDefinitions>
<TextBlock Text="Stirrup by rebar: "/>
<TextBlock Grid.Column="1" Text="{Binding StirrupByRebar.Name}"/>
<TextBlock Grid.Row="1" Text="Diameter: "/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding StirrupByRebar.Diameter, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="2" Text="Steel: "/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding StirrupByRebar.Material.MaterialEntity.Name}"/>
<TextBlock Grid.Row="3" Text="Spacing: "/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding StirrupByRebar.Spacing, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="4" Text="Leg count: "/>
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding StirrupByRebar.LegCount, Converter={StaticResource PlainDouble}}"/>
<TextBlock Grid.Row="5" Text="Density: "/>
<TextBlock Grid.Row="5" Grid.Column="1" Text="{Binding Density, Converter={StaticResource DistributedLoadConverter}}"/>
</Grid>
</Rectangle.ToolTip>
</Rectangle>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="StirrupByDensityPrimitiveTemplate"
DataType="primitives:StirrupByDensityPrimitive">
<Canvas>
<Rectangle
Width="{Binding Length}"
Height="{Binding Depth}"
StrokeThickness="0.005"
Canvas.Left="{Binding StartPoinX}"
Canvas.Top="{Binding BottomPointY}"
>
<Rectangle.Stroke>
<SolidColorBrush Color="{Binding VisualProperty.Color}"/>
</Rectangle.Stroke>
<Rectangle.Fill>
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
</Rectangle.Fill>
<Rectangle.ToolTip>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="23"/>
<RowDefinition Height="23"/>
</Grid.RowDefinitions>
<TextBlock Text="Stirrup by density: "/>
<TextBlock Grid.Column="1" Text="{Binding StirrupByDensity.Name}"/>
<TextBlock Grid.Row="1" Text="Density: "/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding StirrupByDensity.StirrupDensity, Converter={StaticResource DistributedLoadConverter}}"/>
</Grid>
</Rectangle.ToolTip>
</Rectangle>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="StirrupByInclinedRebarPrimitiveTemplate"
DataType="primitives:StirrupByInclinedRebarPrimitive">
<Canvas>
<Line
X1="{Binding StartPointX}"
X2="{Binding EndPointX}"
Y1="{Binding StartPointY}"
Y2="{Binding EndPointY}"
StrokeThickness="{Binding StirrupByInclinedRebar.RebarSection.Diameter}"
>
<Line.Stroke>
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
</Line.Stroke>
<Line.ToolTip>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
</Grid.RowDefinitions>
<TextBlock Text="Inclinated rebar: "/>
<TextBlock Grid.Column="1" Text="{Binding StirrupByInclinedRebar.Name}"/>
<TextBlock Grid.Row="1" Text="Diameter: "/>
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding StirrupByInclinedRebar.RebarSection.Diameter, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="2" Text="Material: "/>
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding StirrupByInclinedRebar.RebarSection.Material.MaterialEntity.Name}"/>
<TextBlock Grid.Row="3" Text="Start coordinate: "/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding StirrupByInclinedRebar.StartCoordinate, Converter={StaticResource LengthConverter}}"/>
<TextBlock Grid.Row="4" Text="Angle of inclination: "/>
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding StirrupByInclinedRebar.AngleOfInclination, Converter={StaticResource PlainDouble}}"/>
</Grid>
</Line.ToolTip>
</Line>
<Line
X1="0"
X2="{Binding StartPointX}"
Y1="{Binding StartPointY}"
Y2="{Binding StartPointY}"
StrokeThickness="{Binding StirrupByInclinedRebar.RebarSection.Diameter}"
>
<Line.Stroke>
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
</Line.Stroke>
</Line>
<Line
X1="{Binding EndPointX}"
X2="100"
Y1="{Binding EndPointY}"
Y2="{Binding EndPointY}"
StrokeThickness="{Binding StirrupByInclinedRebar.RebarSection.Diameter}"
>
<Line.Stroke>
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>

View File

@@ -1,20 +1,33 @@
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.Models.BeamShears;
using System;
using System.Collections.Generic;
namespace StructureHelper.Windows.BeamShears
{
public class SectionResultToGraphicalPrimitivesConvertLogic : IObjectConvertStrategy<List<IGraphicalPrimitive>, IBeamShearSectionLogicResult>
{
private IObjectConvertStrategy<List<IGraphicalPrimitive>, IStirrup> stirrupLogic;
private IInclinedSection inclinedSection;
public List<IGraphicalPrimitive> Convert(IBeamShearSectionLogicResult source)
{
inclinedSection = source.InputData.InclinedSection;
InitializeStrategies();
List<IGraphicalPrimitive> graphicalPrimitives = new List<IGraphicalPrimitive>();
BeamShearSectionPrimitive beamShearSectionPrimitive = new(source.InputData.InclinedSection.BeamShearSection, source.InputData.InclinedSection);
BeamShearSectionPrimitive beamShearSectionPrimitive = new(source.InputData.InclinedSection.BeamShearSection, inclinedSection);
graphicalPrimitives.Add(beamShearSectionPrimitive);
graphicalPrimitives.AddRange(stirrupLogic.Convert(source.InputData.Stirrup));
InclinedSectionPrimitive inclinedSectionPrimitive = new(source);
graphicalPrimitives.Add((inclinedSectionPrimitive));
return graphicalPrimitives;
}
private void InitializeStrategies()
{
stirrupLogic ??= new StirrupToGraphicPrimitiveConvertLogic(inclinedSection);
}
}
}

View File

@@ -0,0 +1,68 @@
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.Models.BeamShears;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelper.Windows.BeamShears
{
internal class StirrupToGraphicPrimitiveConvertLogic : IObjectConvertStrategy<List<IGraphicalPrimitive>, IStirrup>
{
private IInclinedSection inclinedSection;
private List<IGraphicalPrimitive> primitives;
public StirrupToGraphicPrimitiveConvertLogic(IInclinedSection inclinedSection)
{
this.inclinedSection = inclinedSection;
}
public List<IGraphicalPrimitive> Convert(IStirrup source)
{
primitives = new List<IGraphicalPrimitive>();
GetStirrupPrimitives(source);
return primitives;
}
private void GetStirrupPrimitives(IStirrup source)
{
if (source is IHasStirrups hasStirrup) //if stirrup group
{
foreach (var item in hasStirrup.Stirrups)
{
GetStirrupPrimitives(item); //recursion for stirrup group
}
}
else
{
GetStirrupPrimitive(source);
}
}
private void GetStirrupPrimitive(IStirrup stirrup)
{
if (stirrup is IStirrupByRebar stirrupByRebar)
{
StirrupByRebarPrimitive stirrupByRebarPrimitive = new(stirrupByRebar, inclinedSection);
primitives.Add(stirrupByRebarPrimitive);
}
else if (stirrup is IStirrupByDensity stirrupByDensity)
{
StirrupByDensityPrimitive stirrupByDensityPrimitive = new(stirrupByDensity, inclinedSection);
primitives.Add(stirrupByDensityPrimitive);
}
else if (stirrup is IStirrupByInclinedRebar stirrupByInclinedRebar)
{
StirrupByInclinedRebarPrimitive stirrupByInclinedRebarPrimitive = new(stirrupByInclinedRebar, inclinedSection);
primitives.Add(stirrupByInclinedRebarPrimitive);
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(stirrup));
}
}
}
}

View File

@@ -1,12 +1,6 @@
using StructureHelper.Infrastructure;
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
using StructureHelperLogics.Models.Primitives;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelper.Windows.UserControls.WorkPlanes
{

View File

@@ -1,10 +1,4 @@
using FieldVisualizer.Entities.Values.Primitives;
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
using System.Windows;
using System.Windows.Controls;
@@ -14,7 +8,9 @@ namespace StructureHelper.Windows.UserControls.WorkPlanes
{
public DataTemplate BeamShearSectionTemplate { get; set; }
public DataTemplate InclinedSectionTemplate { get; set; }
public DataTemplate BeamShearStirrupByRebarTemplate { get; set; }
public DataTemplate StirrupByRebarTemplate { get; set; }
public DataTemplate StirrupByDensityTemplate { get; set; }
public DataTemplate StirrupByInclinedRebarTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
@@ -22,6 +18,9 @@ namespace StructureHelper.Windows.UserControls.WorkPlanes
{
BeamShearSectionPrimitive => BeamShearSectionTemplate,
InclinedSectionPrimitive => InclinedSectionTemplate,
StirrupByRebarPrimitive => StirrupByRebarTemplate,
StirrupByDensityPrimitive => StirrupByDensityTemplate,
StirrupByInclinedRebarPrimitive => StirrupByInclinedRebarTemplate,
_ => base.SelectTemplate(item, container)
};
}

View File

@@ -110,7 +110,7 @@ namespace StructureHelper.Windows.UserControls.WorkPlanes
ZoomCenterY *= zoomFactor;// position.Y / NegativeScaleValue;// - CenterOffsetY;
// Update scale
ScaleValue *= zoomFactor;
ScaleValue = Math.Round(ScaleValue * zoomFactor);
}
public double AxisFontSize

View File

@@ -63,6 +63,9 @@
<local:PrimitiveTemplateSelector
BeamShearSectionTemplate="{StaticResource BeamShearSectionPrimitiveTemplate}"
InclinedSectionTemplate="{StaticResource InclinedSectionPrimitiveTemplate}"
StirrupByRebarTemplate="{StaticResource StirrupByRebarPrimitiveTemplate}"
StirrupByDensityTemplate="{StaticResource StirrupByDensityPrimitiveTemplate}"
StirrupByInclinedRebarTemplate="{StaticResource StirrupByInclinedRebarPrimitiveTemplate}"
/>
</ItemsControl.ItemTemplateSelector>

View File

@@ -21,7 +21,8 @@ namespace StructureHelperLogics.Models.BeamShears
Id = id;
VisualProperty = new PrimitiveVisualProperty(Guid.NewGuid())
{
Color = (Color)ColorConverter.ConvertFromString("Gray")
Color = (Color)ColorConverter.ConvertFromString("Gray"),
Opacity = 0.5
};
}

View File

@@ -74,7 +74,8 @@ namespace StructureHelperLogics.Models.BeamShears
Material = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Reinforcement400).HelperMaterial as IReinforcementLibMaterial;
VisualProperty = new PrimitiveVisualProperty(Guid.NewGuid())
{
Color = (Color)ColorConverter.ConvertFromString("Brown")
Color = (Color)ColorConverter.ConvertFromString("Brown"),
Opacity = 0.5
};
}