Add beam shear classes

This commit is contained in:
Evgeny Redikultsev
2025-02-08 22:13:50 +05:00
parent 57bc6141c9
commit 91ccebf147
33 changed files with 1002 additions and 449 deletions

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelper.Infrastructure.Enums
{
public enum AnalysisTypes
{
CrossSection,
BeamShear
}
}

View File

@@ -155,13 +155,19 @@
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="OkCancelButtons"> <DataTemplate x:Key="Back">
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right"> <Path Margin="4" Data="M -1 18 l 2 -9 l 1 3 a 15 15 90 0 1 22 -3 l -2 4 a 13 13 90 0 0 -18 2 l 3 3 z" Fill="White" Stroke="Black"/>
<Button Style="{StaticResource CancelButton}" Command="{Binding CancelCommand}"/> </DataTemplate>
<Button Style="{StaticResource OkButton}" Command="{Binding OkCommand}"/> <DataTemplate x:Key="BeamShear">
</StackPanel> <Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Line X1="2" Y1="11" X2="30" Y2="11" Stroke="Black" StrokeThickness="0.5"/>
<Path Data="M2,11 v-6 l28,12 v-6" Stroke="Black" StrokeThickness="1"/>
<Path Data="M2,26 v-8 h10 v2 l-8,6 z" Fill="DarkGray" Stroke="Black" StrokeThickness="1"/>
<Path Data="M14,22 v-2 h16 v8 h-24 z" Fill="DarkGray" Stroke="Black" StrokeThickness="1"/>
</Canvas.Children>
</Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="ButtonCalculatorRectangle"> <DataTemplate x:Key="ButtonCalculatorRectangle">
<Rectangle Style="{DynamicResource ButtonRect}" Stroke="{DynamicResource CalculatorFrame}"> <Rectangle Style="{DynamicResource ButtonRect}" Stroke="{DynamicResource CalculatorFrame}">
<Rectangle.Fill> <Rectangle.Fill>
@@ -172,7 +178,6 @@
</Rectangle.Fill> </Rectangle.Fill>
</Rectangle> </Rectangle>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="ButtonResultRectangle"> <DataTemplate x:Key="ButtonResultRectangle">
<Rectangle Style="{DynamicResource ButtonRect}" Stroke="{DynamicResource ResultFrame}"> <Rectangle Style="{DynamicResource ButtonRect}" Stroke="{DynamicResource ResultFrame}">
<Rectangle.Fill> <Rectangle.Fill>
@@ -183,19 +188,15 @@
</Rectangle.Fill> </Rectangle.Fill>
</Rectangle> </Rectangle>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="DiagramCalculator"> <DataTemplate x:Key="CalculatorRun">
<Canvas Style="{DynamicResource ButtonCalculatorCanvas}"> <Canvas Style="{DynamicResource ButtonCalculatorCanvas}">
<Canvas.Children> <Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonCalculatorRectangle}"/> <ContentControl ContentTemplate="{DynamicResource ButtonCalculatorRectangle}"/>
<Line Margin="4" X1="0" Y1="20" X2="25" Y2="20" StrokeThickness="1.5" Stroke="{DynamicResource CalculatorFrame}"/> <Path Margin="4" Data="M 4 2 l 12 10 l -12 10 l 0 -20" Fill="{DynamicResource CalculatorFrame}"/>
<Line Margin="4" X1="4" Y1="0" X2="4" Y2="25" StrokeThickness="1.5" Stroke="{DynamicResource CalculatorFrame}"/>
<Path Margin="4" Data="M 0 5 l 4 -4 l 7 4 l 7 6 l 2 4 l -2 7 l -2 2 " Stroke="{DynamicResource CalculatorFrame}"/>
<TextBlock Margin="4,2,0,0" Text="M-N" Foreground="Black" FontSize="10" HorizontalAlignment="Stretch" FontWeight="Bold" />
</Canvas.Children> </Canvas.Children>
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="CrackCalculator"> <DataTemplate x:Key="CrackCalculator">
<Canvas Style="{DynamicResource ButtonCalculatorCanvas}"> <Canvas Style="{DynamicResource ButtonCalculatorCanvas}">
<Canvas.Children> <Canvas.Children>
@@ -212,16 +213,15 @@
</Canvas.Children> </Canvas.Children>
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="CopyToClipboard">
<DataTemplate x:Key="CalculatorRun"> <Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas Style="{DynamicResource ButtonCalculatorCanvas}">
<Canvas.Children> <Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonCalculatorRectangle}"/> <ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Path Margin="4" Data="M 4 2 l 12 10 l -12 10 l 0 -20" Fill="{DynamicResource CalculatorFrame}"/> <ContentControl Canvas.Top="10" Canvas.Left="14" ContentTemplate="{DynamicResource Document}"/>
<ContentControl Canvas.Top="6" Canvas.Left="8" ContentTemplate="{DynamicResource Document}"/>
</Canvas.Children> </Canvas.Children>
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="CoordGrid"> <DataTemplate x:Key="CoordGrid">
<Canvas Style="{DynamicResource ButtonResultCanvas}"> <Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children> <Canvas.Children>
@@ -231,47 +231,6 @@
</Canvas.Children> </Canvas.Children>
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="StepSolution">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
<Line X1="5" Y1="27" X2="26" Y2="6" Stroke="Black"/>
<Line X1="25.5" Y1="22" X2="25.5" Y2="6" Stroke="LightGray"/>
<Line X1="10" Y1="6" X2="25.5" Y2="6" Stroke="LightGray"/>
<Line X1="5.5" Y1="26" X2="5.5" Y2="22" Stroke="LightGray"/>
<Line X1="5.5" Y1="26" X2="10" Y2="26" Stroke="LightGray"/>
<Ellipse Margin="4, 25, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="11, 18, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="18, 11, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="24, 5, 0, 0" Width="3" Height="3" Fill="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="MomentCurvature">
<Path Margin="4" Data="M 3 18 l 4 -7 h 4 l 8 -7 h 5" Stroke="Black"/>
</DataTemplate>
<DataTemplate x:Key="MomentCurvatureDiagram">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
<ContentControl ContentTemplate="{DynamicResource MomentCurvature}"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="MomentCurvatureCrackDiagram">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
<ContentControl ContentTemplate="{DynamicResource MomentCurvature}"/>
<TextBlock Text="Crc" FontSize="8" FontWeight="Bold" Margin="4,2,0,0"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="CrackForces"> <DataTemplate x:Key="CrackForces">
<Canvas Style="{DynamicResource ButtonResultCanvas}"> <Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children> <Canvas.Children>
@@ -281,7 +240,255 @@
</Canvas.Children> </Canvas.Children>
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="DeSelectAll">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<CheckBox Canvas.Left="13" Canvas.Top="13" IsChecked="False" IsEnabled="False"/>
<CheckBox Canvas.Left="2" Canvas.Top="2" IsChecked="False" IsEnabled="False"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Diagrams">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Line X1="2" Y1="16" X2="30" Y2="16" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="16" Y1="2" X2="16" Y2="30" Stroke="Black" StrokeThickness="0.5"/>
<Path Margin="2" Data="M 0 21 l 6 0 l 9 -8 l 9 -8 l 4 0" Stroke="Black" StrokeThickness="1"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="DiagramCalculator">
<Canvas Style="{DynamicResource ButtonCalculatorCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonCalculatorRectangle}"/>
<Line Margin="4" X1="0" Y1="20" X2="25" Y2="20" StrokeThickness="1.5" Stroke="{DynamicResource CalculatorFrame}"/>
<Line Margin="4" X1="4" Y1="0" X2="4" Y2="25" StrokeThickness="1.5" Stroke="{DynamicResource CalculatorFrame}"/>
<Path Margin="4" Data="M 0 5 l 4 -4 l 7 4 l 7 6 l 2 4 l -2 7 l -2 2 " Stroke="{DynamicResource CalculatorFrame}"/>
<TextBlock Margin="4,2,0,0" Text="M-N" Foreground="Black" FontSize="10" HorizontalAlignment="Stretch" FontWeight="Bold" />
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Document">
<Canvas>
<Canvas.Children>
<Rectangle Height="16" Width="12" Fill="White" Stroke="DarkGray"/>
<Line X1="2" Y1="4" X2="10" Y2="4" Stroke="Black"/>
<Line X1="2" Y1="7" X2="10" Y2="7" Stroke="Black"/>
<Line X1="2" Y1="10" X2="10" Y2="10" Stroke="Black"/>
<Line X1="2" Y1="13" X2="10" Y2="13" Stroke="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="EditAnalysis">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Path Margin="4" Data="M 2 22 l 4 -6 l 15 -16 l 4 4 l -15 14 z" Fill="DarkGray" Stroke="Black" StrokeThickness="1"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="AnalysisVersions">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Ellipse Width="10" Height="10" Fill="LightGray" Stroke="Black" StrokeThickness="1" Margin="18,18,0,0"/>
<Ellipse Width="12" Height="12" Fill="LightGray" Stroke="Black" StrokeThickness="1" Margin="12,12,0,0"/>
<Ellipse Width="14" Height="14" Fill="White" Stroke="Black" StrokeThickness="1" Margin="5,5,0,0"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ExportToNewAnalysis">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Path Margin="4" Data="M 12 22 l 0 -18 l 12 0 l 0 14 l -4 4 z" Fill="White" Stroke="Black"/>
<Path Margin="4" Data="M 20 22 l 0 -4 l 4 0 " Fill="White" Stroke="Black"/>
<TextBlock Margin="16, 4, 0, 0" Text="+-" FontSize="10"/>
<Path Margin="4" Data="M -1 18 l 0 -4 l 10 0 l 0 -3 l 5 5 l -5 5 l 0 -3 z" Fill="White" Stroke="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ExportToXLS">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource Table}"/>
<TextBlock Text="CSV" FontSize="8" FontWeight="Bold" Margin="4,2,0,2"/>
<TextBlock Text="XLS" FontSize="12" FontWeight="Bold" FontStyle="Italic" Margin="6,14,0,2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ExportToExcelButton">
<Button Style="{DynamicResource ToolButton}" Command="{Binding ExportToCSVCommand}">
<Button.ToolTip>
<uc:ButtonToolTipEh HeaderText="Export to *.csv"
IconContent="{StaticResource ExportToXLS}"
DescriptionText="Export all valid results to *.csv file"/>
</Button.ToolTip>
<Viewbox>
<ContentControl ContentTemplate="{DynamicResource ExportToXLS}"/>
</Viewbox>
</Button>
</DataTemplate>
<DataTemplate x:Key="FileOpen">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Path Margin="4" Data="M 2 6 l 8 0 l 3 3 l 6 0 l 0 12 l -17 0 z" Fill="DarkGray" Stroke="Black" StrokeThickness="1"/>
<Path Margin="4" Data="M 6 12 l 20 0 l -5 10 l -19 0 z" Fill="LightGray" Stroke="Black" StrokeThickness="1"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="FileSave">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Rectangle Height="26" Width="26" Canvas.Left="3" Canvas.Top="3"
Fill="DarkGray" Stroke="Black" StrokeThickness="1"
RadiusX="2" RadiusY="2"/>
<Rectangle Height="8" Width="12" Canvas.Left="10" Canvas.Top="4"
Fill="LightGray" Stroke="Black" StrokeThickness="0.5"/>
<Rectangle Height="6" Width="4" Canvas.Left="16" Canvas.Top="5"
Fill="DarkGray" Stroke="Black" StrokeThickness="0.5"/>
<Rectangle Height="14" Width="22" Canvas.Left="5" Canvas.Top="13"
Fill="LightGray" Stroke="Black" StrokeThickness="0.5"
RadiusX="2" RadiusY="2"/>
<Line X1="7" Y1="18" X2="24" Y2="18" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="7" Y1="21" X2="24" Y2="21" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="7" Y1="24" X2="24" Y2="24" Stroke="Black" StrokeThickness="0.5"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ForceTable">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<ContentControl ContentTemplate="{DynamicResource Table}"/>
<TextBlock Text="Force" FontSize="8" FontWeight="Bold" Margin="4,2,0,2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Forward">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource Back}">
<ContentControl.RenderTransform>
<TransformGroup>
<TranslateTransform Y="-5"/>
<ScaleTransform ScaleX="-1" CenterX="15" CenterY="8"/>
</TransformGroup>
</ContentControl.RenderTransform>
</ContentControl>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="GeometryTable">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<ContentControl ContentTemplate="{DynamicResource Table}"/>
<TextBlock Text="Geom" FontSize="8" FontWeight="Bold" Margin="4,2,0,2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="GetArea">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<TextBlock Text="A" FontSize="22" FontWeight="Bold" Margin="2,-4,0,2"/>
<TextBlock Text="?" FontSize="18" FontWeight="Bold" Margin="20,8,0,2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Image">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Path Data="M 4 16 l 8 -3 l 3 3 l 6 -3 l 7 3 v 12 h -24 z" Fill="DarkGray" Stroke="Black" StrokeThickness="1"/>
<Ellipse Canvas.Top="16" Canvas.Left="18" Height="6" Width="6" Fill="White"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="InteractionDiagram">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
<Path Margin="4" Data="M 6 0 l 5 3 l 6 4 l 3 5 l 0 4 l -4 3 l -10 3 z" Stroke="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="InvertSelection">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<CheckBox Canvas.Left="13" Canvas.Top="13" IsChecked="True" IsEnabled="False"/>
<CheckBox Canvas.Left="2" Canvas.Top="2" IsChecked="False" IsEnabled="False"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="IsoFieldResult">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Path Margin="4" Data="M 0 0 h 20 A 20 20 90 0 1 0 24 z" Fill="Gray"/>
<Path Margin="4" Data="M 0 0 h 16 A 16 16 90 0 1 0 18 z" Fill="DarkGray"/>
<Path Margin="4" Data="M 0 0 h 10 A 10 10 90 0 1 0 10 z" Fill="LightGray"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="LappingLength">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Line X1="10" Y1="17" X2="28" Y2="17" Stroke="Black"/>
<Line X1="3" Y1="20" X2="22" Y2="20" Stroke="Black"/>
<Line X1="10" Y1="6" X2="10" Y2="15" Stroke="Black"/>
<Line X1="22" Y1="6" X2="22" Y2="15" Stroke="Black"/>
<Line X1="7" Y1="10" X2="25" Y2="10" Stroke="Black"/>
<Line X1="7" Y1="13" X2="13" Y2="7" Stroke="Black"/>
<Line X1="19" Y1="13" X2="25" Y2="7" Stroke="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="MomentCurvature">
<Path Margin="4" Data="M 3 18 l 4 -7 h 4 l 8 -7 h 5" Stroke="Black"/>
</DataTemplate>
<DataTemplate x:Key="MomentCurvatureCrackDiagram">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
<ContentControl ContentTemplate="{DynamicResource MomentCurvature}"/>
<TextBlock Text="Crc" FontSize="8" FontWeight="Bold" Margin="4,2,0,0"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="MomentCurvatureDiagram">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
<ContentControl ContentTemplate="{DynamicResource MomentCurvature}"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="NdmCrossSection">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Rectangle Height="16" Width="8" Canvas.Left="12" Canvas.Top="12"
Fill="DarkGray" Stroke="Black" StrokeThickness="1"/>
<Rectangle Height="6" Width="16" Canvas.Left="8" Canvas.Top="7"
Fill="LightGray" Stroke="Black" StrokeThickness="1"/>
<Line X1="2" Y1="16" X2="30" Y2="16" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="16" Y1="2" X2="16" Y2="30" Stroke="Black" StrokeThickness="0.5"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="OkCancelButtons">
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Style="{StaticResource CancelButton}" Command="{Binding CancelCommand}"/>
<Button Style="{StaticResource OkButton}" Command="{Binding OkCommand}"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="PngImage">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource Image}"/>
<TextBlock Text="PNG" FontSize="8" FontWeight="Bold" Margin="4,2,0,2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Prestrain"> <DataTemplate x:Key="Prestrain">
<Canvas Style="{DynamicResource ButtonResultCanvas}"> <Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children> <Canvas.Children>
@@ -306,279 +513,6 @@
</Canvas.Children> </Canvas.Children>
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="LappingLength">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Line X1="10" Y1="17" X2="28" Y2="17" Stroke="Black"/>
<Line X1="3" Y1="20" X2="22" Y2="20" Stroke="Black"/>
<Line X1="10" Y1="6" X2="10" Y2="15" Stroke="Black"/>
<Line X1="22" Y1="6" X2="22" Y2="15" Stroke="Black"/>
<Line X1="7" Y1="10" X2="25" Y2="10" Stroke="Black"/>
<Line X1="7" Y1="13" X2="13" Y2="7" Stroke="Black"/>
<Line X1="19" Y1="13" X2="25" Y2="7" Stroke="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ValuePointDiagram">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
<Path Margin="4" Data="M 3 0 l 4 12 l 12 6 h 5" Stroke="Black"/>
<Rectangle Margin="15, 5, 0, 0" Width="10" Height="10" Fill="DarkGray"/>
<Ellipse Margin="23, 13, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="23, 4, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="14, 13, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="14, 4, 0, 0" Width="3" Height="3" Fill="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="InteractionDiagram">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
<Path Margin="4" Data="M 6 0 l 5 3 l 6 4 l 3 5 l 0 4 l -4 3 l -10 3 z" Stroke="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Table">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Line X1="4" Y1="13" X2="28" Y2="13" Stroke="Black"/>
<Line X1="4" Y1="16" X2="28" Y2="16" Stroke="Black"/>
<Line X1="4" Y1="19" X2="28" Y2="19" Stroke="DarkGray" StrokeThickness="0.5"/>
<Line X1="4" Y1="22" X2="28" Y2="22" Stroke="DarkGray" StrokeThickness="0.5"/>
<Line X1="4" Y1="25" X2="28" Y2="25" Stroke="DarkGray" StrokeThickness="0.5"/>
<Line X1="12" Y1="13" X2="12" Y2="28" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="17" Y1="13" X2="17" Y2="28" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="22" Y1="13" X2="22" Y2="28" Stroke="Black" StrokeThickness="0.5"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="GeometryTable">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<ContentControl ContentTemplate="{DynamicResource Table}"/>
<TextBlock Text="Geom" FontSize="8" FontWeight="Bold" Margin="4,2,0,2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ForceTable">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<ContentControl ContentTemplate="{DynamicResource Table}"/>
<TextBlock Text="Force" FontSize="8" FontWeight="Bold" Margin="4,2,0,2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Image">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Path Data="M 4 16 l 8 -3 l 3 3 l 6 -3 l 7 3 v 12 h -24 z" Fill="DarkGray" Stroke="Black" StrokeThickness="1"/>
<Ellipse Canvas.Top="16" Canvas.Left="18" Height="6" Width="6" Fill="White"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="GetArea">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<TextBlock Text="A" FontSize="22" FontWeight="Bold" Margin="2,-4,0,2"/>
<TextBlock Text="?" FontSize="18" FontWeight="Bold" Margin="20,8,0,2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="PngImage">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource Image}"/>
<TextBlock Text="PNG" FontSize="8" FontWeight="Bold" Margin="4,2,0,2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Document">
<Canvas>
<Canvas.Children>
<Rectangle Height="16" Width="12" Fill="White" Stroke="DarkGray"/>
<Line X1="2" Y1="4" X2="10" Y2="4" Stroke="Black"/>
<Line X1="2" Y1="7" X2="10" Y2="7" Stroke="Black"/>
<Line X1="2" Y1="10" X2="10" Y2="10" Stroke="Black"/>
<Line X1="2" Y1="13" X2="10" Y2="13" Stroke="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="CopyToClipboard">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<ContentControl Canvas.Top="10" Canvas.Left="14" ContentTemplate="{DynamicResource Document}"/>
<ContentControl Canvas.Top="6" Canvas.Left="8" ContentTemplate="{DynamicResource Document}"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Report">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<ContentControl Canvas.Top="5" Canvas.Left="6" ContentTemplate="{DynamicResource Document}"/>
<ContentControl Canvas.Top="8" Canvas.Left="10" ContentTemplate="{DynamicResource Document}"/>
<ContentControl Canvas.Top="11" Canvas.Left="14" ContentTemplate="{DynamicResource Document}"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ExportToXLS">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource Table}"/>
<TextBlock Text="CSV" FontSize="8" FontWeight="Bold" Margin="4,2,0,2"/>
<TextBlock Text="XLS" FontSize="12" FontWeight="Bold" FontStyle="Italic" Margin="6,14,0,2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="IsoFieldResult">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Path Margin="4" Data="M 0 0 h 20 A 20 20 90 0 1 0 24 z" Fill="Gray"/>
<Path Margin="4" Data="M 0 0 h 16 A 16 16 90 0 1 0 18 z" Fill="DarkGray"/>
<Path Margin="4" Data="M 0 0 h 10 A 10 10 90 0 1 0 10 z" Fill="LightGray"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ShowRebarsResult">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Rectangle Canvas.Left="8" Canvas.Top="6" Width="16" Height="21" Fill="LightGray" Stroke ="Black"/>
<Ellipse Canvas.Left="10" Canvas.Top="21" Width="4" Height="4" Fill="DarkGray" Stroke ="Black"/>
<Ellipse Canvas.Left="18" Canvas.Top="21" Width="4" Height="4" Fill="DarkGray" Stroke ="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="FileOpen">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Path Margin="4" Data="M 2 6 l 8 0 l 3 3 l 6 0 l 0 12 l -17 0 z" Fill="DarkGray" Stroke="Black" StrokeThickness="1"/>
<Path Margin="4" Data="M 6 12 l 20 0 l -5 10 l -19 0 z" Fill="LightGray" Stroke="Black" StrokeThickness="1"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="FileSave">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Rectangle Height="26" Width="26" Canvas.Left="3" Canvas.Top="3"
Fill="DarkGray" Stroke="Black" StrokeThickness="1"
RadiusX="2" RadiusY="2"/>
<Rectangle Height="8" Width="12" Canvas.Left="10" Canvas.Top="4"
Fill="LightGray" Stroke="Black" StrokeThickness="0.5"/>
<Rectangle Height="6" Width="4" Canvas.Left="16" Canvas.Top="5"
Fill="DarkGray" Stroke="Black" StrokeThickness="0.5"/>
<Rectangle Height="14" Width="22" Canvas.Left="5" Canvas.Top="13"
Fill="LightGray" Stroke="Black" StrokeThickness="0.5"
RadiusX="2" RadiusY="2"/>
<Line X1="7" Y1="18" X2="24" Y2="18" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="7" Y1="21" X2="24" Y2="21" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="7" Y1="24" X2="24" Y2="24" Stroke="Black" StrokeThickness="0.5"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Settings">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Path Margin="4" Data="M8,8 v-6 l-4,-4
a7,7 90 0 1 7,10
l12,12 v3 h-3 l-12,-12
a7,7 90 0 1 -10,-7
l4,4
z" Fill="DarkGray" Stroke="Black"/>
<Ellipse Height="2" Width="2" Fill="White" Canvas.Left="24" Canvas.Top="24"/>
<Ellipse Height="5" Width="5" Fill="White" Canvas.Left="6" Canvas.Top="6"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Diagrams">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Line X1="2" Y1="16" X2="30" Y2="16" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="16" Y1="2" X2="16" Y2="30" Stroke="Black" StrokeThickness="0.5"/>
<Path Margin="2" Data="M 0 21 l 6 0 l 9 -8 l 9 -8 l 4 0" Stroke="Black" StrokeThickness="1"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="NdmCrossSection">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Rectangle Height="16" Width="8" Canvas.Left="12" Canvas.Top="12"
Fill="DarkGray" Stroke="Black" StrokeThickness="1"/>
<Rectangle Height="6" Width="16" Canvas.Left="8" Canvas.Top="7"
Fill="LightGray" Stroke="Black" StrokeThickness="1"/>
<Line X1="2" Y1="16" X2="30" Y2="16" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="16" Y1="2" X2="16" Y2="30" Stroke="Black" StrokeThickness="0.5"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="SelectAll">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<CheckBox Canvas.Left="13" Canvas.Top="13" IsChecked="True" IsEnabled="False"/>
<CheckBox Canvas.Left="2" Canvas.Top="2" IsChecked="True" IsEnabled="False"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="DeSelectAll">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<CheckBox Canvas.Left="13" Canvas.Top="13" IsChecked="False" IsEnabled="False"/>
<CheckBox Canvas.Left="2" Canvas.Top="2" IsChecked="False" IsEnabled="False"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="InvertSelection">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<CheckBox Canvas.Left="13" Canvas.Top="13" IsChecked="True" IsEnabled="False"/>
<CheckBox Canvas.Left="2" Canvas.Top="2" IsChecked="False" IsEnabled="False"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="AnalysisVersions">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Ellipse Width="10" Height="10" Fill="LightGray" Stroke="Black" StrokeThickness="1" Margin="18,18,0,0"/>
<Ellipse Width="12" Height="12" Fill="LightGray" Stroke="Black" StrokeThickness="1" Margin="12,12,0,0"/>
<Ellipse Width="14" Height="14" Fill="White" Stroke="Black" StrokeThickness="1" Margin="5,5,0,0"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="RunAnalysis"> <DataTemplate x:Key="RunAnalysis">
<Canvas Style="{DynamicResource ButtonResultCanvas}"> <Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children> <Canvas.Children>
@@ -586,43 +520,6 @@
</Canvas.Children> </Canvas.Children>
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="EditAnalysis">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Path Margin="4" Data="M 2 22 l 4 -6 l 15 -16 l 4 4 l -15 14 z" Fill="DarkGray" Stroke="Black" StrokeThickness="1"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Restore">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource Back}"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Back">
<Path Margin="4" Data="M -1 18 l 2 -9 l 1 3 a 15 15 90 0 1 22 -3 l -2 4 a 13 13 90 0 0 -18 2 l 3 3 z" Fill="White" Stroke="Black"/>
</DataTemplate>
<DataTemplate x:Key="Forward">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource Back}">
<ContentControl.RenderTransform>
<TransformGroup>
<TranslateTransform Y="-5"/>
<ScaleTransform ScaleX="-1" CenterX="15" CenterY="8"/>
</TransformGroup>
</ContentControl.RenderTransform>
</ContentControl>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Renew"> <DataTemplate x:Key="Renew">
<Canvas Style="{DynamicResource ButtonResultCanvas}"> <Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children> <Canvas.Children>
@@ -645,7 +542,23 @@
</Canvas.Children> </Canvas.Children>
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="Report">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<ContentControl Canvas.Top="5" Canvas.Left="6" ContentTemplate="{DynamicResource Document}"/>
<ContentControl Canvas.Top="8" Canvas.Left="10" ContentTemplate="{DynamicResource Document}"/>
<ContentControl Canvas.Top="11" Canvas.Left="14" ContentTemplate="{DynamicResource Document}"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Restore">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource Back}"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="RestoreAndDelete"> <DataTemplate x:Key="RestoreAndDelete">
<Canvas Style="{DynamicResource ButtonResultCanvas}"> <Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children> <Canvas.Children>
@@ -654,22 +567,6 @@
</Canvas.Children> </Canvas.Children>
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="StraightArrow">
<Path Margin="4" Data="M 5 13 l 0 -4 l 10 0 l 0 -3 l 5 5 l -5 5 l 0 -3 z" Fill="White" Stroke="Black"/>
</DataTemplate>
<DataTemplate x:Key="ExportToNewAnalysis">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Path Margin="4" Data="M 12 22 l 0 -18 l 12 0 l 0 14 l -4 4 z" Fill="White" Stroke="Black"/>
<Path Margin="4" Data="M 20 22 l 0 -4 l 4 0 " Fill="White" Stroke="Black"/>
<TextBlock Margin="16, 4, 0, 0" Text="+-" FontSize="10"/>
<Path Margin="4" Data="M -1 18 l 0 -4 l 10 0 l 0 -3 l 5 5 l -5 5 l 0 -3 z" Fill="White" Stroke="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Print"> <DataTemplate x:Key="Print">
<Canvas Style="{DynamicResource ButtonResultCanvas}"> <Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children> <Canvas.Children>
@@ -682,18 +579,83 @@
</Canvas.Children> </Canvas.Children>
</Canvas> </Canvas>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="SelectAll">
<DataTemplate x:Key="ExportToExcelButton"> <Canvas Style="{DynamicResource ButtonResultCanvas}">
<Button Style="{DynamicResource ToolButton}" Command="{Binding ExportToCSVCommand}"> <Canvas.Children>
<Button.ToolTip> <CheckBox Canvas.Left="13" Canvas.Top="13" IsChecked="True" IsEnabled="False"/>
<uc:ButtonToolTipEh HeaderText="Export to *.csv" <CheckBox Canvas.Left="2" Canvas.Top="2" IsChecked="True" IsEnabled="False"/>
IconContent="{StaticResource ExportToXLS}" </Canvas.Children>
DescriptionText="Export all valid results to *.csv file"/> </Canvas>
</Button.ToolTip> </DataTemplate>
<Viewbox> <DataTemplate x:Key="Settings">
<ContentControl ContentTemplate="{DynamicResource ExportToXLS}"/> <Canvas Style="{DynamicResource ButtonResultCanvas}">
</Viewbox> <Canvas.Children>
</Button> <Path Margin="4" Data="M8,8 v-6 l-4,-4
a7,7 90 0 1 7,10
l12,12 v3 h-3 l-12,-12
a7,7 90 0 1 -10,-7
l4,4
z" Fill="DarkGray" Stroke="Black"/>
<Ellipse Height="2" Width="2" Fill="White" Canvas.Left="24" Canvas.Top="24"/>
<Ellipse Height="5" Width="5" Fill="White" Canvas.Left="6" Canvas.Top="6"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ShowRebarsResult">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Rectangle Canvas.Left="8" Canvas.Top="6" Width="16" Height="21" Fill="LightGray" Stroke ="Black"/>
<Ellipse Canvas.Left="10" Canvas.Top="21" Width="4" Height="4" Fill="DarkGray" Stroke ="Black"/>
<Ellipse Canvas.Left="18" Canvas.Top="21" Width="4" Height="4" Fill="DarkGray" Stroke ="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="StepSolution">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
<Line X1="5" Y1="27" X2="26" Y2="6" Stroke="Black"/>
<Line X1="25.5" Y1="22" X2="25.5" Y2="6" Stroke="LightGray"/>
<Line X1="10" Y1="6" X2="25.5" Y2="6" Stroke="LightGray"/>
<Line X1="5.5" Y1="26" X2="5.5" Y2="22" Stroke="LightGray"/>
<Line X1="5.5" Y1="26" X2="10" Y2="26" Stroke="LightGray"/>
<Ellipse Margin="4, 25, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="11, 18, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="18, 11, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="24, 5, 0, 0" Width="3" Height="3" Fill="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="StraightArrow">
<Path Margin="4" Data="M 5 13 l 0 -4 l 10 0 l 0 -3 l 5 5 l -5 5 l 0 -3 z" Fill="White" Stroke="Black"/>
</DataTemplate>
<DataTemplate x:Key="Table">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
<Line X1="4" Y1="13" X2="28" Y2="13" Stroke="Black"/>
<Line X1="4" Y1="16" X2="28" Y2="16" Stroke="Black"/>
<Line X1="4" Y1="19" X2="28" Y2="19" Stroke="DarkGray" StrokeThickness="0.5"/>
<Line X1="4" Y1="22" X2="28" Y2="22" Stroke="DarkGray" StrokeThickness="0.5"/>
<Line X1="4" Y1="25" X2="28" Y2="25" Stroke="DarkGray" StrokeThickness="0.5"/>
<Line X1="12" Y1="13" X2="12" Y2="28" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="17" Y1="13" X2="17" Y2="28" Stroke="Black" StrokeThickness="0.5"/>
<Line X1="22" Y1="13" X2="22" Y2="28" Stroke="Black" StrokeThickness="0.5"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ValuePointDiagram">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
<Path Margin="4" Data="M 3 0 l 4 12 l 12 6 h 5" Stroke="Black"/>
<Rectangle Margin="15, 5, 0, 0" Width="10" Height="10" Fill="DarkGray"/>
<Ellipse Margin="23, 13, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="23, 4, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="14, 13, 0, 0" Width="3" Height="3" Fill="Black"/>
<Ellipse Margin="14, 4, 0, 0" Width="3" Height="3" Fill="Black"/>
</Canvas.Children>
</Canvas>
</DataTemplate> </DataTemplate>
</ResourceDictionary> </ResourceDictionary>

View File

@@ -1,10 +1,12 @@
using StructureHelper.Infrastructure; using StructureHelper.Infrastructure;
using StructureHelper.Infrastructure.Enums;
using StructureHelper.Windows.MainWindow.Analyses; using StructureHelper.Windows.MainWindow.Analyses;
using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Infrastructures.Settings; using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Models.Analyses; using StructureHelperCommon.Models.Analyses;
using StructureHelperLogic.Models.Analyses; using StructureHelperLogic.Models.Analyses;
using StructureHelperLogics.Models.Analyses;
using StructureHelperLogics.Models.CrossSections; using StructureHelperLogics.Models.CrossSections;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -36,7 +38,14 @@ namespace StructureHelper.Windows.MainWindow
{ {
return addAnalyisCommand ??= new RelayCommand(obj => return addAnalyisCommand ??= new RelayCommand(obj =>
{ {
AddCrossSectionNdmAnalysis(); if (obj is AnalysisTypes.CrossSection)
{
AddCrossSectionNdmAnalysis();
}
else if (obj is AnalysisTypes.BeamShear)
{
AddBeamShearAnalysis();
}
Refresh(); Refresh();
}); });
} }
@@ -181,7 +190,7 @@ namespace StructureHelper.Windows.MainWindow
} }
private void AddCrossSectionNdmAnalysis() private void AddCrossSectionNdmAnalysis()
{ {
var analysis = new CrossSectionNdmAnalysis(); CrossSectionNdmAnalysis analysis = new();
analysis.Name = "New NDM Analysis"; analysis.Name = "New NDM Analysis";
analysis.Tags = "#New group"; analysis.Tags = "#New group";
var visualAnalysis = new VisualAnalysis(analysis); var visualAnalysis = new VisualAnalysis(analysis);
@@ -189,6 +198,16 @@ namespace StructureHelper.Windows.MainWindow
ProgramSetting.SetCurrentProjectToNotActual(); ProgramSetting.SetCurrentProjectToNotActual();
} }
private void AddBeamShearAnalysis()
{
BeamShearAnalysis analysis = new(Guid.NewGuid());
analysis.Name = "New Beam Shear Analysis";
analysis.Tags = "#New group";
VisualAnalysis visualAnalysis = new(analysis);
ProgramSetting.CurrentProject.VisualAnalyses.Add(visualAnalysis);
ProgramSetting.SetCurrentProjectToNotActual();
}
private void ActionToRun() private void ActionToRun()
{ {
if (SelectedAnalysis is null) { return; } if (SelectedAnalysis is null) { return; }

View File

@@ -4,6 +4,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:StructureHelper.Windows.MainWindow" xmlns:local="clr-namespace:StructureHelper.Windows.MainWindow"
xmlns:enums="clr-namespace:StructureHelper.Infrastructure.Enums"
xmlns:uc="clr-namespace:StructureHelper.Windows.UserControls" xmlns:uc="clr-namespace:StructureHelper.Windows.UserControls"
mc:Ignorable="d" mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:AnalysesManagerViewModel}" d:DataContext="{d:DesignInstance local:AnalysesManagerViewModel}"
@@ -51,7 +52,7 @@
</Button> </Button>
</ToolBar> </ToolBar>
<ToolBar ToolTip="Cross-sections"> <ToolBar ToolTip="Cross-sections">
<Button Style="{DynamicResource ToolButton}" Command="{Binding AnalysesLogic.AddAnalysisCommand}"> <Button Style="{DynamicResource ToolButton}" Command="{Binding AnalysesLogic.AddAnalysisCommand}" CommandParameter="{x:Static enums:AnalysisTypes.CrossSection}">
<Button.ToolTip> <Button.ToolTip>
<uc:ButtonToolTipEh HeaderText="NDM Cross-Section Analysis" <uc:ButtonToolTipEh HeaderText="NDM Cross-Section Analysis"
IconContent="{StaticResource NdmCrossSection}" IconContent="{StaticResource NdmCrossSection}"
@@ -61,6 +62,16 @@
<ContentControl ContentTemplate="{DynamicResource NdmCrossSection}"/> <ContentControl ContentTemplate="{DynamicResource NdmCrossSection}"/>
</Viewbox> </Viewbox>
</Button> </Button>
<Button Style="{DynamicResource ToolButton}" Command="{Binding AnalysesLogic.AddAnalysisCommand}" CommandParameter="{x:Static enums:AnalysisTypes.BeamShear}">
<Button.ToolTip>
<uc:ButtonToolTipEh HeaderText="Beam shear Analysis"
IconContent="{StaticResource BeamShear}"
DescriptionText="Extended analysis of end of reinforced concrete beams for shear strength"/>
</Button.ToolTip>
<Viewbox>
<ContentControl ContentTemplate="{StaticResource BeamShear}"/>
</Viewbox>
</Button>
</ToolBar> </ToolBar>
</ToolBarTray> </ToolBarTray>
<Grid> <Grid>

View File

@@ -24,63 +24,60 @@ namespace StructureHelper.Windows.MainWindow.Materials
public partial class HeadMaterialView : Window public partial class HeadMaterialView : Window
{ {
IHeadMaterial headMaterial; IHeadMaterial headMaterial;
HeadMaterialViewModel vm; HeadMaterialViewModel viewModel;
Dictionary<string, Binding> bindings = new();
IHelperMaterial helperMaterial;
string templateName;
public HeadMaterialView(HeadMaterialViewModel viewModel)
{
this.viewModel = viewModel;
}
public HeadMaterialView(IHeadMaterial headMaterial) public HeadMaterialView(IHeadMaterial headMaterial)
{ {
InitializeComponent(); InitializeComponent();
this.headMaterial = headMaterial; this.headMaterial = headMaterial;
vm = new HeadMaterialViewModel(this.headMaterial) helperMaterial = this.headMaterial.HelperMaterial;
viewModel = new HeadMaterialViewModel(this.headMaterial)
{ {
ParentWindow = this ParentWindow = this
}; };
DataContext = vm; DataContext = viewModel;
AddDataTemplates(); AddDataTemplates();
} }
private void AddDataTemplates() private void AddDataTemplates()
{ {
StpMaterialProperties.Children.Clear(); StpMaterialProperties.Children.Clear();
var bindings = new Dictionary<string, Binding>(); GetByndingsByMaterial();
var helperMaterial = headMaterial.HelperMaterial; SetContentControls();
string templateName; }
private void GetByndingsByMaterial()
{
if (helperMaterial is IConcreteLibMaterial) if (helperMaterial is IConcreteLibMaterial)
{ {
templateName = "ConcreteMaterial"; SetConcreteLibraryMaterial();
var binding = new Binding();
binding.Source = vm.HelperMaterialViewModel;
bindings.Add(templateName, binding);
} }
else if (helperMaterial is IReinforcementLibMaterial) else if (helperMaterial is IReinforcementLibMaterial)
{ {
templateName = "ReinforcementMaterial"; SetReinForcementLibraryMaterial();
var binding = new Binding();
binding.Source = vm.HelperMaterialViewModel;
bindings.Add(templateName, binding);
} }
else if (helperMaterial is IElasticMaterial) else if (helperMaterial is IElasticMaterial)
{ {
templateName = "ElasticMaterial"; SetElasticMaterial();
var binding = new Binding();
binding.Source = vm.HelperMaterialViewModel;
bindings.Add(templateName, binding);
if (helperMaterial is IFRMaterial)
{
templateName = "CarbonProperties";
var carbonBinding = new Binding();
carbonBinding.Source = vm.HelperMaterialViewModel as FRViewModel;
bindings.Add(templateName, carbonBinding);
}
templateName = "DirectSafetyFactors";
var frBinding = new Binding();
frBinding.Source = (vm.HelperMaterialViewModel as ElasticViewModel).SafetyFactors;
bindings.Add(templateName, frBinding);
} }
else else
{ {
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + $". Expected: {typeof(IHelperMaterial)}, but was: {helperMaterial.GetType()}"); string errorString = ErrorStrings.ObjectTypeIsUnknown + $". Expected: {typeof(IHelperMaterial)}, but was: {helperMaterial.GetType()}";
throw new StructureHelperException(errorString);
} }
}
private void SetContentControls()
{
foreach (var item in bindings) foreach (var item in bindings)
{ {
ContentControl contentControl = new ContentControl(); ContentControl contentControl = new ContentControl();
@@ -89,5 +86,37 @@ namespace StructureHelper.Windows.MainWindow.Materials
StpMaterialProperties.Children.Add(contentControl); StpMaterialProperties.Children.Add(contentControl);
} }
} }
private void SetElasticMaterial()
{
templateName = "ElasticMaterial";
var binding = new Binding();
binding.Source = viewModel.HelperMaterialViewModel;
bindings.Add(templateName, binding);
if (helperMaterial is IFRMaterial)
{
templateName = "CarbonProperties";
var carbonBinding = new Binding();
carbonBinding.Source = viewModel.HelperMaterialViewModel as FRViewModel;
bindings.Add(templateName, carbonBinding);
}
templateName = "DirectSafetyFactors";
var frBinding = new Binding();
frBinding.Source = (viewModel.HelperMaterialViewModel as ElasticViewModel).SafetyFactors;
bindings.Add(templateName, frBinding);
}
private void SetReinForcementLibraryMaterial()
{
templateName = "ReinforcementMaterial";
var binding = new Binding();
binding.Source = viewModel.HelperMaterialViewModel;
bindings.Add(templateName, binding);
}
private void SetConcreteLibraryMaterial()
{
templateName = "ConcreteMaterial";
var binding = new Binding();
binding.Source = viewModel.HelperMaterialViewModel;
bindings.Add(templateName, binding);
}
} }
} }

View File

@@ -2,21 +2,15 @@
using StructureHelper.Models.Materials; using StructureHelper.Models.Materials;
using StructureHelper.Windows.AddMaterialWindow; using StructureHelper.Windows.AddMaterialWindow;
using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries; using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Services.ColorServices; using StructureHelperCommon.Services.ColorServices;
using StructureHelperLogics.Models.Materials; using StructureHelperLogics.Models.Materials;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
namespace StructureHelper.Windows.ViewModels.Materials namespace StructureHelper.Windows.ViewModels.Materials
{ {
internal class HeadMaterialViewModel : OkCancelViewModelBase public class HeadMaterialViewModel : OkCancelViewModelBase
{ {
IHeadMaterial headMaterial; IHeadMaterial headMaterial;
HelperMaterialViewModel helperMaterialViewModel; HelperMaterialViewModel helperMaterialViewModel;

View File

@@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace StructureHelper.Windows.ViewModels.Materials namespace StructureHelper.Windows.ViewModels.Materials
{ {
internal abstract class HelperMaterialViewModel : ViewModelBase public abstract class HelperMaterialViewModel : ViewModelBase
{ {
} }
} }

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Infrastructures.Interfaces
{
public interface IEffectiveDepth
{
double EffectiveDepth { get; set; }
}
}

View File

@@ -0,0 +1,14 @@
using StructureHelperCommon.Models.Forces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Infrastructures.Interfaces
{
public interface IHasBeamShearActions
{
List<IBeamShearAction> BeamShearActions { get; }
}
}

View File

@@ -1,9 +1,5 @@
using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Infrastructures.Interfaces;
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Forces namespace StructureHelperCommon.Models.Forces
{ {

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Forces
{
public interface IBeamShearAction : IAction
{
}
}

View File

@@ -0,0 +1,34 @@
using StructureHelperCommon.Models.Analyses;
using StructureHelperLogics.Models.BeamShears;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
namespace StructureHelperLogics.Models.Analyses
{
public class BeamShearAnalysis : IBeamShearAnalysis
{
public Guid Id { get; }
public string Name { get; set; } = string.Empty;
public string Tags { get; set; } = string.Empty;
public string Comment { get; set; } = string.Empty;
public Color Color { get; set; } = Color.FromRgb(128, 0, 0);
public IVersionProcessor VersionProcessor { get; set; } = new VersionProcessor();
public BeamShearAnalysis(Guid id)
{
Id = id;
BeamShear beamShear = new(Guid.NewGuid());
VersionProcessor.AddVersion(beamShear);
}
public object Clone()
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,59 @@
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Analyses;
using StructureHelperCommon.Services;
using StructureHelperLogics.Models.BeamShears;
using StructureHelperLogics.Models.CrossSections;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.Analyses
{
public class BeamShearAnalysisUpdateStrategy : IUpdateStrategy<IBeamShearAnalysis>
{
private IUpdateStrategy<IAnalysis> analysisUpdateStrategy;
private IUpdateStrategy<IBeamShear> beamShearUpdateStrategy;
private IUpdateStrategy<IDateVersion> dateUpdateStrategy;
public void Update(IBeamShearAnalysis targetObject, IBeamShearAnalysis sourceObject)
{
CheckObject.IsNull(sourceObject, ErrorStrings.SourceObject);
CheckObject.IsNull(targetObject, ErrorStrings.TargetObject);
if (ReferenceEquals(targetObject, sourceObject)) { return; };
InitialzeStrategies();
analysisUpdateStrategy.Update(targetObject, sourceObject);
targetObject.VersionProcessor.Versions.Clear();
foreach (var version in sourceObject.VersionProcessor.Versions)
{
if (version is IBeamShear beamShear)
{
updateVersion(targetObject, version, beamShear);
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(version.AnalysisVersion));
}
}
}
private void updateVersion(IBeamShearAnalysis targetObject, IDateVersion version, IBeamShear beamShear)
{
DateVersion newVersion = new();
dateUpdateStrategy.Update(newVersion, version);
BeamShear newBeamShear = new(Guid.NewGuid());
beamShearUpdateStrategy.Update(newBeamShear, beamShear);
newVersion.AnalysisVersion = newBeamShear;
targetObject.VersionProcessor.Versions.Add(newVersion);
}
private void InitialzeStrategies()
{
analysisUpdateStrategy ??= new AnalysisUpdateStrategy();
beamShearUpdateStrategy ??= new BeamShearUpdateStrategy();
dateUpdateStrategy ??= new DateVersionUpdateStrategy();
}
}
}

View File

@@ -30,7 +30,7 @@ namespace StructureHelperLogic.Models.Analyses
public CrossSectionNdmAnalysis() : this(Guid.NewGuid(), new VersionProcessor()) public CrossSectionNdmAnalysis() : this(Guid.NewGuid(), new VersionProcessor())
{ {
CrossSection crossSection = new CrossSection(); CrossSection crossSection = new();
VersionProcessor.AddVersion(crossSection); VersionProcessor.AddVersion(crossSection);
} }

View File

@@ -0,0 +1,13 @@
using StructureHelperCommon.Models.Analyses;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.Analyses
{
public interface IBeamShearAnalysis : IAnalysis
{
}
}

View File

@@ -0,0 +1,59 @@
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Loggers;
using StructureHelperCommon.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//Copyright (c) 2025 Redikultsev Evgeny, Ekaterinburg, Russia
//All rights reserved.
namespace StructureHelperLogics.Models.BeamShears
{
public class BeamSheaStrengthByStirrupDensity : IBeamShearStrenghLogic
{
private readonly IStirrupEffectiveness stirrupEffectiveness;
private readonly IStirrupByDensity stirrupByDensity;
private readonly IInclinedSection inclinedSection;
public BeamSheaStrengthByStirrupDensity(
IStirrupEffectiveness stirrupEffectiveness,
IStirrupByDensity stirrupByDensity,
IInclinedSection inclinedSection,
IShiftTraceLogger? traceLogger)
{
this.stirrupEffectiveness = stirrupEffectiveness;
this.stirrupByDensity = stirrupByDensity;
this.inclinedSection = inclinedSection;
TraceLogger = traceLogger;
}
public IShiftTraceLogger? TraceLogger { get; set; }
public double GetShearStrength()
{
Check();
TraceLogger?.AddMessage(LoggerStrings.LogicType(this), TraceLogStatuses.Service);
TraceLogger?.AddMessage("Calculation has been started", TraceLogStatuses.Debug);
double crackLength = inclinedSection.EndCoord - inclinedSection.StartCoord;
TraceLogger?.AddMessage($"Length of crack = {inclinedSection.EndCoord} - {inclinedSection.StartCoord} = {crackLength}(m)");
double maxCrackLength = stirrupEffectiveness.MaxCrackLengthFactor * inclinedSection.EffectiveDepth;
TraceLogger?.AddMessage($"Max length of crack = {stirrupEffectiveness.MaxCrackLengthFactor} * {inclinedSection.EffectiveDepth} = {maxCrackLength}(m)");
double finalCrackLength = Math.Min(crackLength, maxCrackLength);
TraceLogger?.AddMessage($"Length of crack = Min({crackLength}, {maxCrackLength}) = {finalCrackLength}(m)");
double strength = stirrupEffectiveness.StirrupShapeFactor * stirrupEffectiveness.StirrupPlacementFactor * finalCrackLength * stirrupByDensity.StirrupDensity;
TraceLogger?.AddMessage($"Bearing capacity of stirrups V = {stirrupEffectiveness.StirrupShapeFactor} * {stirrupEffectiveness.StirrupPlacementFactor} * {finalCrackLength} * {stirrupByDensity.StirrupDensity} = {strength}(N)");
TraceLogger?.AddMessage("Calculation has been finished successfully", TraceLogStatuses.Debug);
return strength;
}
private void Check()
{
CheckObject.IsNull(stirrupByDensity);
CheckObject.IsNull(inclinedSection);
}
}
}

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public class BeamShear : IBeamShear
{
public Guid Id { get; }
public IBeamShearRepository Repository { get; } = new BeamShearRepository(Guid.NewGuid());
public BeamShear(Guid id)
{
Id = id;
}
public object Clone()
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,30 @@
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Forces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public class BeamShearRepository : IBeamShearRepository
{
public Guid Id { get; }
public List<IBeamShearAction> BeamShearActions { get; }
public List<ICalculator> Calculators { get; }
public BeamShearRepository(Guid id)
{
Id = id;
}
public object Clone()
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,17 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public class BeamShearUpdateStrategy : IUpdateStrategy<IBeamShear>
{
public void Update(IBeamShear targetObject, IBeamShear sourceObject)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,14 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public interface IBeamShear : ISaveable, ICloneable
{
IBeamShearRepository Repository { get; }
}
}

View File

@@ -0,0 +1,16 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Forces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public interface IBeamShearRepository : ISaveable, IHasBeamShearActions, IHasCalculators, ICloneable
{
}
}

View File

@@ -0,0 +1,21 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
/// <summary>
/// Implement logic for calculation of bearing capacity of inclined section for shear
/// </summary>
public interface IBeamShearStrenghLogic : ILogic
{
/// <summary>
/// Returns Bearing capacity of inclined section for shear
/// </summary>
/// <returns>Bearing capacity of inclined section for shear, N</returns>
double GetShearStrength();
}
}

View File

@@ -0,0 +1,15 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public interface IInclinedSection : IEffectiveDepth
{
double StartCoord { get; set; }
double EndCoord { get; set; }
}
}

View File

@@ -0,0 +1,17 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
/// <summary>
/// Implement properties of stirrups
/// </summary>
public interface IStirrup : ISaveable, ICloneable
{
string Name { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
/// <summary>
/// Implement logic for calculation of bearing capacity of stirrups by value of their density
/// </summary>
public interface IStirrupByDensity : IStirrup
{
/// <summary>
/// Direct density of stirrups, N/m
/// </summary>
double StirrupDensity { get; set; }
}
}

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
/// <summary>
/// Implement logic for stirrup bearing capacity which does not depend on specific inclined section
/// </summary>
public interface IStirrupByDirectValue : IStirrup
{
/// <summary>
/// Direct value of bearing capacity which is applied for any inclined section, N
/// </summary>
double BearingCapacityValue { get; set; }
}
}

View File

@@ -0,0 +1,17 @@
using StructureHelperLogics.Models.Materials;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public interface IStirrupByRebar : IStirrup
{
IReinforcementLibMaterial ReinforcementMaterial { get; set; }
double LegCount { get; set; }
double Diameter { get; set; }
double Step { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public interface IStirrupEffectiveness
{
double MaxCrackLengthFactor { get; set; }
double StirrupShapeFactor { get; set; }
double StirrupPlacementFactor { get; set; }
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public interface IStirrupGroup : IStirrup
{
List<IStirrup> Stirrups { get; }
}
}

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public class InclinedSection : IInclinedSection
{
public double StartCoord { get; set; }
public double EndCoord { get; set; }
public double EffectiveDepth { get; set; }
}
}

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public class StirrupByDensity : IStirrupByDensity
{
public Guid Id { get; }
public string Name { get; set; } = string.Empty;
public double StirrupDensity { get; set; }
public StirrupByDensity(Guid id)
{
Id = id;
}
public object Clone()
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public class StirrupByDirectValue : IStirrupByDirectValue
{
public Guid Id { get; }
public string Name { get; set; }
public double BearingCapacityValue { get; set; }
public object Clone()
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
public class StirrupGroup : IStirrupGroup
{
public Guid Id { get; }
public string Name { get; set; }
public List<IStirrup> Stirrups { get; } = new();
public double GetShearBearingCapacity(IInclinedSection inclinedSection)
{
throw new NotImplementedException();
}
public object Clone()
{
throw new NotImplementedException();
}
}
}