Add stirrup primitives
This commit is contained in:
@@ -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
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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}"/>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -63,6 +63,9 @@
|
||||
<local:PrimitiveTemplateSelector
|
||||
BeamShearSectionTemplate="{StaticResource BeamShearSectionPrimitiveTemplate}"
|
||||
InclinedSectionTemplate="{StaticResource InclinedSectionPrimitiveTemplate}"
|
||||
StirrupByRebarTemplate="{StaticResource StirrupByRebarPrimitiveTemplate}"
|
||||
StirrupByDensityTemplate="{StaticResource StirrupByDensityPrimitiveTemplate}"
|
||||
StirrupByInclinedRebarTemplate="{StaticResource StirrupByInclinedRebarPrimitiveTemplate}"
|
||||
/>
|
||||
</ItemsControl.ItemTemplateSelector>
|
||||
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user