Settting for prestress has been fixed
This commit is contained in:
@@ -7,17 +7,17 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelper.Infrastructure.UI.DataContexts
|
||||
{
|
||||
public class ReinforcementViewPrimitive : PointViewPrimitive, IHasSurroundingPrimitive
|
||||
public class ReinforcementViewPrimitive : PointViewPrimitive, IHasHostPrimitive
|
||||
{
|
||||
ReinforcementPrimitive primitive;
|
||||
|
||||
public INdmPrimitive SurroundingPrimitive
|
||||
public INdmPrimitive HostPrimitive
|
||||
{
|
||||
get => primitive.SurroundingPrimitive;
|
||||
get => primitive.HostPrimitive;
|
||||
set
|
||||
{
|
||||
primitive.SurroundingPrimitive = value;
|
||||
OnPropertyChanged(nameof(SurroundingPrimitive));
|
||||
primitive.HostPrimitive = value;
|
||||
OnPropertyChanged(nameof(HostPrimitive));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,71 @@
|
||||
using LoaderCalculator.Data.Materials;
|
||||
using LoaderCalculator.Data.Matrix;
|
||||
using LoaderCalculator.Logics;
|
||||
using StructureHelper.Infrastructure.UI.DataContexts;
|
||||
using StructureHelperCommon.Infrastructures.Enums;
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Strings;
|
||||
using StructureHelperLogics.Models.Materials;
|
||||
using StructureHelperLogics.Models.Primitives;
|
||||
using StructureHelperLogics.NdmCalculations.Analyses.RC;
|
||||
using StructureHelperLogics.NdmCalculations.Primitives;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelper.Services.ResultViewers
|
||||
{
|
||||
public static class ShowAnchorageResult
|
||||
{
|
||||
private static IStressLogic stressLogic => new StressLogic();
|
||||
public static void ShowAnchorageField (IStrainMatrix strainMatrix, LimitStates limitState, CalcTerms calcTerm, IEnumerable<PrimitiveBase> primitives)
|
||||
{
|
||||
foreach (var item in primitives)
|
||||
{
|
||||
if (item is ReinforcementViewPrimitive)
|
||||
{
|
||||
var primitive = item as ReinforcementViewPrimitive;
|
||||
var ndmPrimitive = primitive.GetNdmPrimitive() as ReinforcementPrimitive;
|
||||
var inputData = new AnchorageInputData();
|
||||
inputData.ConcreteStrength = GetConcreteStrength(limitState, calcTerm, ndmPrimitive);
|
||||
inputData.ReinforcementStrength = GetReinforcementStrength(limitState, calcTerm, ndmPrimitive);
|
||||
inputData.CrossSectionArea = ndmPrimitive.Area;
|
||||
var diameter = Math.Sqrt(ndmPrimitive.Area / Math.PI) * 2d;
|
||||
inputData.CrossSectionPerimeter = Math.PI * diameter;
|
||||
var material = ndmPrimitive.HeadMaterial.GetLoaderMaterial(limitState, calcTerm);
|
||||
var ndm = ndmPrimitive.GetNdms(material).Single();
|
||||
inputData.ReinforcementStress = stressLogic.GetStress(strainMatrix, ndm);
|
||||
inputData.LappedCountRate = 0.5d;
|
||||
}
|
||||
}
|
||||
}
|
||||
private static double GetConcreteStrength(LimitStates limitState, CalcTerms calcTerm, ReinforcementPrimitive primitive)
|
||||
{
|
||||
if (primitive.HostPrimitive is not null)
|
||||
{
|
||||
var host = primitive.HostPrimitive;
|
||||
var hostMaterial = host.HeadMaterial.HelperMaterial;
|
||||
if (hostMaterial is IConcreteLibMaterial)
|
||||
{
|
||||
var concreteMaterial = hostMaterial as IConcreteLibMaterial;
|
||||
var concreteStrength = concreteMaterial.GetStrength(limitState, calcTerm).Tensile;
|
||||
return concreteStrength;
|
||||
}
|
||||
}
|
||||
throw new StructureHelperException(ErrorStrings.DataIsInCorrect + ": host's material is incorrect or null");
|
||||
}
|
||||
|
||||
private static double GetReinforcementStrength(LimitStates limitState, CalcTerms calcTerm, ReinforcementPrimitive primitive)
|
||||
{
|
||||
if (primitive.HeadMaterial.HelperMaterial is IReinforcementLibMaterial)
|
||||
{
|
||||
var material = primitive.HeadMaterial.HelperMaterial as IReinforcementLibMaterial;
|
||||
var strength = material.GetStrength(limitState, calcTerm).Tensile;
|
||||
return strength;
|
||||
}
|
||||
throw new StructureHelperException(ErrorStrings.DataIsInCorrect + ": host's material is incorrect or null");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
<Window x:Class="StructureHelper.Windows.CalculationWindows.CalculationResultWindow.CalculationResultView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:StructureHelper.Windows.CalculationWindows.CalculationResultWindow"
|
||||
xmlns:vm="clr-namespace:StructureHelper.Windows.ViewModels.Calculations.CalculationResult"
|
||||
d:DataContext="{d:DesignInstance vm:CalculationResultViewModel}"
|
||||
mc:Ignorable="d"
|
||||
Title="Results of calculations" Height="400" Width="800" MinHeight="400" MinWidth="600">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="60"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<DataGrid x:Name="ResultGrid" IsReadOnly="True" AutoGenerateColumns="False" ItemsSource="{Binding CalculationResults}" SelectedItem="{Binding SelectedResult}" >
|
||||
<DataGrid.RowStyle>
|
||||
<Style TargetType="DataGridRow">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsValid}" Value="false">
|
||||
<Setter Property="Background" Value="Pink"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.Columns>
|
||||
<DataGridCheckBoxColumn Header="Valid" Binding="{Binding Path=IsValid}"/>
|
||||
<DataGridTextColumn Header="Moment Mx" Width="90" Binding="{Binding Path=LoaderResults.ForceStrainPair.ForceMatrix.Mx, Converter={StaticResource MomentConverter}}"/>
|
||||
<DataGridTextColumn Header="Moment My" Width="90" Binding="{Binding Path=LoaderResults.ForceStrainPair.ForceMatrix.My, Converter={StaticResource MomentConverter}}"/>
|
||||
<DataGridTextColumn Header="Force Nz" Width="90" Binding="{Binding Path=LoaderResults.ForceStrainPair.ForceMatrix.Nz, Converter={StaticResource ForceConverter}}"/>
|
||||
<DataGridTextColumn Header="Accuracy" Width="90" Binding="{Binding Path=LoaderResults.AccuracyRate}"/>
|
||||
<DataGridTextColumn Header="Max Iteration" Width="90" Binding="{Binding Path=LoaderResults.IterationCounter}"/>
|
||||
<DataGridTextColumn Header="Description" Width="300" Binding="{Binding Path=Desctription}"/>
|
||||
<DataGridTextColumn Header="Kx" Width="90" Binding="{Binding LoaderResults.ForceStrainPair.StrainMatrix.Kx}"/>
|
||||
<DataGridTextColumn Header="Ky" Width="90" Binding="{Binding LoaderResults.ForceStrainPair.StrainMatrix.Ky}"/>
|
||||
<DataGridTextColumn Header="EpsZ" Width="90" Binding="{Binding LoaderResults.ForceStrainPair.StrainMatrix.EpsZ}"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<StackPanel Grid.Column="1">
|
||||
<Button Margin="3" Content="Graphic" Command="{Binding ShowIsoFieldCommand}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -1,31 +0,0 @@
|
||||
using StructureHelper.Windows.ViewModels.Calculations.CalculationResult;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace StructureHelper.Windows.CalculationWindows.CalculationResultWindow
|
||||
{
|
||||
/// <summary>
|
||||
/// Логика взаимодействия для CalculationResultView.xaml
|
||||
/// </summary>
|
||||
public partial class CalculationResultView : Window
|
||||
{
|
||||
private CalculationResultViewModel viewModel;
|
||||
public CalculationResultView(CalculationResultViewModel resultViewModel)
|
||||
{
|
||||
InitializeComponent();
|
||||
viewModel = resultViewModel;
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -43,6 +43,7 @@
|
||||
<Button Margin="3" Content="Interpolate" ToolTip="Create analysis by substep" Command="{Binding InterpolateCommand}"/>
|
||||
<Button Margin="3" Content="Export" ToolTip="Export results to *.csv" Command="{Binding ExportToCSVCommand}"/>
|
||||
<Button Margin="3" Content="Set Prestrain" ToolTip="Set strains as auto prestrain" Command="{Binding SetPrestrainCommand}"/>
|
||||
<Button Margin="3" Content="Anchorage" ToolTip="Set strains as auto prestrain" Command="{Binding ShowAnchorageCommand}"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
@@ -67,8 +67,8 @@
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Row="0" Text="Inside of"/>
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding SurroundingPrimitives}" SelectedItem="{Binding SurroundingPrimitive}">
|
||||
<TextBlock Grid.Row="0" Text="Host"/>
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding HostPrimitives}" SelectedItem="{Binding HostPrimitive}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
|
||||
@@ -47,6 +47,7 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
|
||||
private RelayCommand exportToCSVCommand;
|
||||
private RelayCommand interpolateCommand;
|
||||
private RelayCommand setPrestrainCommand;
|
||||
private ICommand showAnchorageCommand;
|
||||
|
||||
public IForcesResults ForcesResults
|
||||
{
|
||||
@@ -193,6 +194,24 @@ namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand ShowAnchorageCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return showAnchorageCommand??
|
||||
(showAnchorageCommand = new RelayCommand(o =>
|
||||
{
|
||||
showAnchorage();
|
||||
}, o => SelectedResult != null
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
private void showAnchorage()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public ForcesResultsViewModel(IForceCalculator forceCalculator)
|
||||
{
|
||||
this.forceCalculator = forceCalculator;
|
||||
|
||||
@@ -136,10 +136,10 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections
|
||||
}
|
||||
foreach (var primitive in repository.Primitives)
|
||||
{
|
||||
if (primitive is IHasSurroundingPrimitive)
|
||||
if (primitive is IHasHostPrimitive)
|
||||
{
|
||||
var sPrimitive = primitive as IHasSurroundingPrimitive;
|
||||
if (sPrimitive.SurroundingPrimitive == ndmPrimitive) { sPrimitive.SurroundingPrimitive = null; }
|
||||
var sPrimitive = primitive as IHasHostPrimitive;
|
||||
if (sPrimitive.HostPrimitive == ndmPrimitive) { sPrimitive.HostPrimitive = null; }
|
||||
}
|
||||
}
|
||||
Items.Remove(SelectedItem);
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace StructureHelper.Windows.ViewModels.PrimitiveProperties
|
||||
public ICommand EditMaterialCommand { get; private set; }
|
||||
|
||||
public ObservableCollection<IHeadMaterial> HeadMaterials { get; private set; }
|
||||
public ObservableCollection<PrimitiveBase> SurroundingPrimitives { get; private set; }
|
||||
public ObservableCollection<PrimitiveBase> HostPrimitives { get; private set; }
|
||||
|
||||
public string Name
|
||||
{
|
||||
@@ -60,19 +60,19 @@ namespace StructureHelper.Windows.ViewModels.PrimitiveProperties
|
||||
}
|
||||
}
|
||||
}
|
||||
public PrimitiveBase? SurroundingPrimitive
|
||||
public PrimitiveBase? HostPrimitive
|
||||
{
|
||||
get
|
||||
{
|
||||
if (primitive is not IHasSurroundingPrimitive)
|
||||
if (primitive is not IHasHostPrimitive)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
var sPrimitive = ((IHasSurroundingPrimitive)primitive).SurroundingPrimitive;
|
||||
var sPrimitive = ((IHasHostPrimitive)primitive).HostPrimitive;
|
||||
if (sPrimitive is null) { return null; }
|
||||
foreach (var item in SurroundingPrimitives)
|
||||
foreach (var item in HostPrimitives)
|
||||
{
|
||||
if (item.GetNdmPrimitive() == sPrimitive)
|
||||
{
|
||||
@@ -86,11 +86,11 @@ namespace StructureHelper.Windows.ViewModels.PrimitiveProperties
|
||||
{
|
||||
if (value is not null)
|
||||
{
|
||||
if (primitive is IHasSurroundingPrimitive)
|
||||
if (primitive is IHasHostPrimitive)
|
||||
{
|
||||
var sPrimitive = value.GetNdmPrimitive();
|
||||
((IHasSurroundingPrimitive)primitive).SurroundingPrimitive = sPrimitive;
|
||||
OnPropertyChanged(nameof(SurroundingPrimitive));
|
||||
((IHasHostPrimitive)primitive).HostPrimitive = sPrimitive;
|
||||
OnPropertyChanged(nameof(HostPrimitive));
|
||||
}
|
||||
else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + $", Actual type: {value.GetType()}");
|
||||
}
|
||||
@@ -310,11 +310,11 @@ namespace StructureHelper.Windows.ViewModels.PrimitiveProperties
|
||||
}
|
||||
EditColorCommand = new RelayCommand(o => EditColor(), o => !SetMaterialColor);
|
||||
EditMaterialCommand = new RelayCommand(o => EditMaterial());
|
||||
SurroundingPrimitives = new ObservableCollection<PrimitiveBase>();
|
||||
HostPrimitives = new ObservableCollection<PrimitiveBase>();
|
||||
foreach (var item in sectionRepository.Primitives)
|
||||
{
|
||||
if (item is RectanglePrimitive || item is CirclePrimitive)
|
||||
{SurroundingPrimitives.Add(PrimitiveOperations.ConvertNdmPrimitiveToPrimitiveBase(item));}
|
||||
{HostPrimitives.Add(PrimitiveOperations.ConvertNdmPrimitiveToPrimitiveBase(item));}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user