Add stirrup primitives
This commit is contained in:
@@ -27,7 +27,8 @@ namespace DataAccess.DTOs
|
|||||||
Id = id;
|
Id = id;
|
||||||
VisualProperty = new PrimitiveVisualPropertyDTO(Guid.NewGuid())
|
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;
|
Id = id;
|
||||||
VisualProperty = new PrimitiveVisualPropertyDTO(Guid.NewGuid())
|
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 CenterX { get; set; } = 0;
|
||||||
public double CenterY { get; set; } = 0;
|
public double CenterY { get; set; } = 0;
|
||||||
public double FullDepth => inclinedSection.FullDepth;
|
public double FullDepth => inclinedSection.FullDepth;
|
||||||
public double EffectiveDepth => inclinedSection.EffectiveDepth;
|
public double WebWidth => inclinedSection.WebWidth;
|
||||||
public double BottomCover => FullDepth - EffectiveDepth;
|
public double ReinforcementArea => inclinedSection.BeamShearSection.ReinforcementArea;
|
||||||
public double PositiveLength => inclinedSection.EffectiveDepth * 3.5;
|
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 NegativeLength { get; set; } = -0.1;
|
||||||
public double SupportHeight { get; set; } = 0.1;
|
public double SupportHeight { get; set; } = 0.1;
|
||||||
public double SupportWidth { get; set; } = 0.2;
|
public double SupportWidth { get; set; } = 0.2;
|
||||||
@@ -29,6 +31,8 @@ namespace StructureHelper.Infrastructure.UI.GraphicalPrimitives
|
|||||||
|
|
||||||
public IPrimitiveVisualProperty VisualProperty => beamShearSection.VisualProperty;
|
public IPrimitiveVisualProperty VisualProperty => beamShearSection.VisualProperty;
|
||||||
|
|
||||||
|
public IBeamShearSection BeamShearSection => beamShearSection;
|
||||||
|
|
||||||
public BeamShearSectionPrimitive(IBeamShearSection beamShearSection, IInclinedSection inclinedSection)
|
public BeamShearSectionPrimitive(IBeamShearSection beamShearSection, IInclinedSection inclinedSection)
|
||||||
{
|
{
|
||||||
this.beamShearSection = beamShearSection;
|
this.beamShearSection = beamShearSection;
|
||||||
|
|||||||
@@ -14,9 +14,11 @@ namespace StructureHelper.Infrastructure.UI.GraphicalPrimitives
|
|||||||
public double SectionEndX => inclinedSection.EndCoord;
|
public double SectionEndX => inclinedSection.EndCoord;
|
||||||
public double SectionStartY => inclinedSection.FullDepth - inclinedSection.EffectiveDepth;
|
public double SectionStartY => inclinedSection.FullDepth - inclinedSection.EffectiveDepth;
|
||||||
public double SectionEndY => inclinedSection.FullDepth;
|
public double SectionEndY => inclinedSection.FullDepth;
|
||||||
public double FactorOfUsing => source.FactorOfUsing;
|
public double FactorOfUsing => Math.Round(source.FactorOfUsing, 4);
|
||||||
public double EffectiveDepth => inclinedSection.EffectiveDepth;
|
public double EffectiveDepth => Math.Round(inclinedSection.EffectiveDepth, 3);
|
||||||
public double SpanRatio => (inclinedSection.EndCoord - inclinedSection.StartCoord) / inclinedSection.EffectiveDepth;
|
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 CenterX => 0;
|
||||||
public double CenterY => 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
|
<Rectangle
|
||||||
Width="{Binding PositiveLength}"
|
Width="{Binding PositiveLength}"
|
||||||
Height="{Binding FullDepth}"
|
Height="{Binding FullDepth}"
|
||||||
Stroke="Black"
|
StrokeThickness="0.01"
|
||||||
StrokeThickness="0.02"
|
|
||||||
>
|
>
|
||||||
|
<Rectangle.Stroke>
|
||||||
|
<SolidColorBrush Color="{Binding VisualProperty.Color}"/>
|
||||||
|
</Rectangle.Stroke>
|
||||||
<Rectangle.Fill>
|
<Rectangle.Fill>
|
||||||
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
|
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
|
||||||
</Rectangle.Fill>
|
</Rectangle.Fill>
|
||||||
@@ -27,11 +29,14 @@
|
|||||||
<RowDefinition Height="25"/>
|
<RowDefinition Height="25"/>
|
||||||
<RowDefinition Height="25"/>
|
<RowDefinition Height="25"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBlock Text="Beam shear section"/>
|
<TextBlock Text="Beam shear section: "/>
|
||||||
<TextBlock Grid.Row="1" Text="Full depth"/>
|
<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="1" Grid.Column="1" Text="{Binding FullDepth, Converter={StaticResource LengthConverter}}"/>
|
||||||
<TextBlock Grid.Row="2" Text="Effective depth"/>
|
<TextBlock Grid.Row="2" Text="Width: "/>
|
||||||
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding EffectiveDepth, Converter={StaticResource LengthConverter}}"/>
|
<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>
|
</Grid>
|
||||||
</Rectangle.ToolTip>
|
</Rectangle.ToolTip>
|
||||||
</Rectangle>
|
</Rectangle>
|
||||||
@@ -40,9 +45,25 @@
|
|||||||
X2="{Binding PositiveLength}"
|
X2="{Binding PositiveLength}"
|
||||||
Y1="{Binding BottomCover}"
|
Y1="{Binding BottomCover}"
|
||||||
Y2="{Binding BottomCover}"
|
Y2="{Binding BottomCover}"
|
||||||
Stroke="DarkGray"
|
Stroke="Black"
|
||||||
StrokeThickness="0.02"
|
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
|
<Rectangle
|
||||||
Canvas.Left="{Binding SupportStartX}"
|
Canvas.Left="{Binding SupportStartX}"
|
||||||
Canvas.Top="{Binding SupportStartY}"
|
Canvas.Top="{Binding SupportStartY}"
|
||||||
@@ -60,6 +81,7 @@
|
|||||||
/>
|
/>
|
||||||
</Canvas>
|
</Canvas>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
<DataTemplate x:Key="InclinedSectionPrimitiveTemplate"
|
<DataTemplate x:Key="InclinedSectionPrimitiveTemplate"
|
||||||
DataType="primitives:InclinedSectionPrimitive">
|
DataType="primitives:InclinedSectionPrimitive">
|
||||||
<Canvas>
|
<Canvas>
|
||||||
@@ -68,7 +90,7 @@
|
|||||||
X2="{Binding SectionEndX}"
|
X2="{Binding SectionEndX}"
|
||||||
Y1="{Binding SectionStartY}"
|
Y1="{Binding SectionStartY}"
|
||||||
Y2="{Binding SectionEndY}"
|
Y2="{Binding SectionEndY}"
|
||||||
StrokeThickness="0.02"
|
StrokeThickness="0.01"
|
||||||
>
|
>
|
||||||
<Line.Stroke>
|
<Line.Stroke>
|
||||||
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
|
<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"/>
|
<RowDefinition Height="25"/>
|
||||||
|
<RowDefinition Height="25"/>
|
||||||
|
<RowDefinition Height="25"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBlock Text="Inclinated section"/>
|
<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="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="2" Grid.Column="1" Text="{Binding SectionEndX, Converter={StaticResource LengthConverter}}"/>
|
||||||
<TextBlock Grid.Row="3" Text="Factor of using"/>
|
<TextBlock Grid.Row="3" Text="Actual shear force: "/>
|
||||||
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding FactorOfUsing, Converter={StaticResource PlainDouble}}"/>
|
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding ActualShearForce, Converter={StaticResource ForceConverter}}"/>
|
||||||
<TextBlock Grid.Row="4" Text="Effective depth"/>
|
<TextBlock Grid.Row="4" Text="Ultimate shear force: "/>
|
||||||
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding EffectiveDepth, Converter={StaticResource LengthConverter}}"/>
|
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding UltimateShearForce, Converter={StaticResource ForceConverter}}"/>
|
||||||
<TextBlock Grid.Row="5" Text="Span c/d ratio"/>
|
<TextBlock Grid.Row="5" Text="Factor of using: "/>
|
||||||
<TextBlock Grid.Row="5" Grid.Column="1" Text="{Binding SpanRatio, Converter={StaticResource PlainDouble}}"/>
|
<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>
|
</Grid>
|
||||||
</Line.ToolTip>
|
</Line.ToolTip>
|
||||||
</Line>
|
</Line>
|
||||||
@@ -106,7 +135,155 @@
|
|||||||
X2="{Binding SectionStartX}"
|
X2="{Binding SectionStartX}"
|
||||||
Y1="0"
|
Y1="0"
|
||||||
Y2="{Binding SectionStartY}"
|
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>
|
<Line.Stroke>
|
||||||
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
|
<SolidColorBrush Color="{Binding VisualProperty.Color}" Opacity="{Binding VisualProperty.Opacity}"/>
|
||||||
|
|||||||
@@ -1,20 +1,33 @@
|
|||||||
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
|
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
|
||||||
|
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||||
using StructureHelperLogics.Models.BeamShears;
|
using StructureHelperLogics.Models.BeamShears;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace StructureHelper.Windows.BeamShears
|
namespace StructureHelper.Windows.BeamShears
|
||||||
{
|
{
|
||||||
public class SectionResultToGraphicalPrimitivesConvertLogic : IObjectConvertStrategy<List<IGraphicalPrimitive>, IBeamShearSectionLogicResult>
|
public class SectionResultToGraphicalPrimitivesConvertLogic : IObjectConvertStrategy<List<IGraphicalPrimitive>, IBeamShearSectionLogicResult>
|
||||||
{
|
{
|
||||||
|
private IObjectConvertStrategy<List<IGraphicalPrimitive>, IStirrup> stirrupLogic;
|
||||||
|
private IInclinedSection inclinedSection;
|
||||||
|
|
||||||
public List<IGraphicalPrimitive> Convert(IBeamShearSectionLogicResult source)
|
public List<IGraphicalPrimitive> Convert(IBeamShearSectionLogicResult source)
|
||||||
{
|
{
|
||||||
|
inclinedSection = source.InputData.InclinedSection;
|
||||||
|
InitializeStrategies();
|
||||||
List<IGraphicalPrimitive> graphicalPrimitives = new List<IGraphicalPrimitive>();
|
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.Add(beamShearSectionPrimitive);
|
||||||
|
graphicalPrimitives.AddRange(stirrupLogic.Convert(source.InputData.Stirrup));
|
||||||
InclinedSectionPrimitive inclinedSectionPrimitive = new(source);
|
InclinedSectionPrimitive inclinedSectionPrimitive = new(source);
|
||||||
graphicalPrimitives.Add((inclinedSectionPrimitive));
|
graphicalPrimitives.Add((inclinedSectionPrimitive));
|
||||||
return graphicalPrimitives;
|
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;
|
||||||
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
|
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
|
||||||
using StructureHelperLogics.Models.Primitives;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace StructureHelper.Windows.UserControls.WorkPlanes
|
namespace StructureHelper.Windows.UserControls.WorkPlanes
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using FieldVisualizer.Entities.Values.Primitives;
|
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
|
||||||
using StructureHelper.Infrastructure.UI.GraphicalPrimitives;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
|
|
||||||
@@ -14,7 +8,9 @@ namespace StructureHelper.Windows.UserControls.WorkPlanes
|
|||||||
{
|
{
|
||||||
public DataTemplate BeamShearSectionTemplate { get; set; }
|
public DataTemplate BeamShearSectionTemplate { get; set; }
|
||||||
public DataTemplate InclinedSectionTemplate { 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)
|
public override DataTemplate SelectTemplate(object item, DependencyObject container)
|
||||||
{
|
{
|
||||||
@@ -22,6 +18,9 @@ namespace StructureHelper.Windows.UserControls.WorkPlanes
|
|||||||
{
|
{
|
||||||
BeamShearSectionPrimitive => BeamShearSectionTemplate,
|
BeamShearSectionPrimitive => BeamShearSectionTemplate,
|
||||||
InclinedSectionPrimitive => InclinedSectionTemplate,
|
InclinedSectionPrimitive => InclinedSectionTemplate,
|
||||||
|
StirrupByRebarPrimitive => StirrupByRebarTemplate,
|
||||||
|
StirrupByDensityPrimitive => StirrupByDensityTemplate,
|
||||||
|
StirrupByInclinedRebarPrimitive => StirrupByInclinedRebarTemplate,
|
||||||
_ => base.SelectTemplate(item, container)
|
_ => base.SelectTemplate(item, container)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ namespace StructureHelper.Windows.UserControls.WorkPlanes
|
|||||||
ZoomCenterY *= zoomFactor;// position.Y / NegativeScaleValue;// - CenterOffsetY;
|
ZoomCenterY *= zoomFactor;// position.Y / NegativeScaleValue;// - CenterOffsetY;
|
||||||
|
|
||||||
// Update scale
|
// Update scale
|
||||||
ScaleValue *= zoomFactor;
|
ScaleValue = Math.Round(ScaleValue * zoomFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public double AxisFontSize
|
public double AxisFontSize
|
||||||
|
|||||||
@@ -63,6 +63,9 @@
|
|||||||
<local:PrimitiveTemplateSelector
|
<local:PrimitiveTemplateSelector
|
||||||
BeamShearSectionTemplate="{StaticResource BeamShearSectionPrimitiveTemplate}"
|
BeamShearSectionTemplate="{StaticResource BeamShearSectionPrimitiveTemplate}"
|
||||||
InclinedSectionTemplate="{StaticResource InclinedSectionPrimitiveTemplate}"
|
InclinedSectionTemplate="{StaticResource InclinedSectionPrimitiveTemplate}"
|
||||||
|
StirrupByRebarTemplate="{StaticResource StirrupByRebarPrimitiveTemplate}"
|
||||||
|
StirrupByDensityTemplate="{StaticResource StirrupByDensityPrimitiveTemplate}"
|
||||||
|
StirrupByInclinedRebarTemplate="{StaticResource StirrupByInclinedRebarPrimitiveTemplate}"
|
||||||
/>
|
/>
|
||||||
</ItemsControl.ItemTemplateSelector>
|
</ItemsControl.ItemTemplateSelector>
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ namespace StructureHelperLogics.Models.BeamShears
|
|||||||
Id = id;
|
Id = id;
|
||||||
VisualProperty = new PrimitiveVisualProperty(Guid.NewGuid())
|
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;
|
Material = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Reinforcement400).HelperMaterial as IReinforcementLibMaterial;
|
||||||
VisualProperty = new PrimitiveVisualProperty(Guid.NewGuid())
|
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