All Test Was Repaired
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
<Window x:Class="StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews.ForceCalculatorView"
|
||||
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.CalculatorsViews.ForceCalculatorViews"
|
||||
xmlns:vm="clr-namespace:StructureHelper.Windows.ViewModels.Calculations.Calculators"
|
||||
d:DataContext="{d:DesignInstance vm:ForceCalculatorViewModel}"
|
||||
mc:Ignorable="d"
|
||||
Title="Analysis by forces" Height="300" Width="400" MinHeight="300" MinWidth="400" WindowStartupLocation="CenterScreen">
|
||||
<Window.Resources>
|
||||
<Style x:Key="cbStyle" TargetType="CheckBox">
|
||||
<Setter Property="Margin" Value="0,5,0,5"/>
|
||||
</Style>
|
||||
</Window.Resources>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="20"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TabControl>
|
||||
<TabItem Header="General">
|
||||
<StackPanel>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="300"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="Name"/>
|
||||
<TextBox Grid.Column="1" Text="{Binding Name}"/>
|
||||
</Grid>
|
||||
<GroupBox Header="Limit States">
|
||||
<StackPanel>
|
||||
<CheckBox Style="{StaticResource cbStyle}" Content="Ultimate Limit State"/>
|
||||
<CheckBox Style="{StaticResource cbStyle}" Content="Serviceability Limit State"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
<GroupBox Header="Duration">
|
||||
<StackPanel>
|
||||
<CheckBox Style="{StaticResource cbStyle}" Content="Short Term"/>
|
||||
<CheckBox Style="{StaticResource cbStyle}" Content="Long Term"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
<TabItem Header="Forces">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="60"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ListBox>
|
||||
|
||||
</ListBox>
|
||||
<StackPanel Grid.Column="1">
|
||||
<Button Content="Add all"/>
|
||||
<Button Content="Clear all"/>
|
||||
<Button Content=">>"/>
|
||||
<Button Content="<<"/>
|
||||
</StackPanel>
|
||||
<ListBox Grid.Column="2">
|
||||
|
||||
</ListBox>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Primitives">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition Width="60"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<ListBox ItemsSource="{Binding AllowedPrimitives}"
|
||||
SelectedItem="{Binding SelectedAllowedPrimitive}"
|
||||
ItemTemplate="{StaticResource ColoredItemTemplate}">
|
||||
</ListBox>
|
||||
<StackPanel Grid.Column="1">
|
||||
<Button Content="Add all" Command="{Binding AddAllPrimitivesCommand}"/>
|
||||
<Button Content="Clear all" Command="{Binding ClearAllPrimitivesCommand}"/>
|
||||
<Button Content=">>" Command="{Binding AddSelectedPrimitiveCommand}"/>
|
||||
<Button Content="<<" Command="{Binding RemoveSelectedPrimitiveCommand}"/>
|
||||
</StackPanel>
|
||||
<ListBox Grid.Column="2" ItemsSource="{Binding Primitives}" SelectedItem="{Binding SelectedPrimitive}" ItemTemplate="{StaticResource ColoredItemTemplate}">
|
||||
|
||||
</ListBox>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Iterations">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="30"/>
|
||||
<RowDefinition Height="30"/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="Required Accuracy" HorizontalAlignment="Left" VerticalAlignment="Center"/>
|
||||
<TextBox Style="{StaticResource ValidatedError}" Grid.Column="2" Margin="5,5,5,5" Text="{Binding Path=IterationAccuracy, ValidatesOnDataErrors=True}"/>
|
||||
<TextBlock Grid.Row="1" Text="Maximum Iteration Count" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.ColumnSpan="2"/>
|
||||
<TextBox Style="{StaticResource ValidatedError}" Grid.Column="2" Grid.Row="1" Margin="5,5,5,5" Text="{Binding Path=MaxIterationCount, ValidatesOnDataErrors=True}"/>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,32 @@
|
||||
using StructureHelper.Windows.ViewModels.Calculations.Calculators;
|
||||
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.CalculatorsViews.ForceCalculatorViews
|
||||
{
|
||||
/// <summary>
|
||||
/// Логика взаимодействия для ForceCalculatorView.xaml
|
||||
/// </summary>
|
||||
public partial class ForceCalculatorView : Window
|
||||
{
|
||||
ForceCalculatorViewModel forceCalculatorViewModel;
|
||||
|
||||
public ForceCalculatorView(ForceCalculatorViewModel _forceCalculatorViewModel)
|
||||
{
|
||||
forceCalculatorViewModel = _forceCalculatorViewModel;
|
||||
DataContext = forceCalculatorViewModel;
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,37 +4,43 @@
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:StructureHelper.Windows.Forces"
|
||||
xmlns:vm="clr-namespace:StructureHelper.Windows.ViewModels.Forces"
|
||||
d:DataContext="{d:DesignInstance vm:ForceCombinationViewModel}"
|
||||
mc:Ignorable="d"
|
||||
Title="Force Combination" Height="250" Width="450" MinHeight="300" MinWidth="400">
|
||||
<TabControl>
|
||||
<TabItem Header="Forces">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" MinHeight="25"/>
|
||||
<RowDefinition Height="Auto" MinHeight="25"/>
|
||||
<RowDefinition Height="Auto" MinHeight="25"/>
|
||||
<RowDefinition Height="Auto" MinHeight="25"/>
|
||||
<RowDefinition Height="Auto" MinHeight="25"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="120"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.RowSpan="2" Text="Ultimate limit state"/>
|
||||
<TextBlock Grid.Column="1" Text="Short term"/>
|
||||
<TextBlock Grid.Row="1" Grid.Column="1" Text="Long term"/>
|
||||
<TextBlock Grid.Row="2" Grid.RowSpan="2" Text="Ultimate limit state"/>
|
||||
<TextBlock Grid.Row="2" Grid.Column="1" Text="Short term"/>
|
||||
<TextBlock Grid.Row="3" Grid.Column="1" Text="Long term"/>
|
||||
<local:ForceTupleControl Grid.Column="2"/>
|
||||
<local:ForceTupleControl Grid.Row="1" Grid.Column="2"/>
|
||||
<local:ForceTupleControl Grid.Row="2" Grid.Column="2"/>
|
||||
<local:ForceTupleControl Grid.Row="3" Grid.Column="2"/>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Additional">
|
||||
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
<Window.Resources>
|
||||
<DataTemplate x:Key="ForceTemplate">
|
||||
|
||||
</DataTemplate>
|
||||
</Window.Resources>
|
||||
<StackPanel>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="Name"/>
|
||||
<TextBox Grid.Column="1" Text="{Binding Name}"/>
|
||||
<TextBlock Grid.Row="1" Text="Center X"/>
|
||||
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding CenterX}"/>
|
||||
<TextBlock Grid.Row="2" Text="Center Y"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding CenterY}"/>
|
||||
</Grid>
|
||||
<DataGrid x:Name="ForceGrid" AutoGenerateColumns="False"
|
||||
ItemsSource="{Binding ForceTuples}"
|
||||
SelectedItem="{Binding SelectedTuple}">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Limit State" Width="90" Binding="{Binding LimitState}"/>
|
||||
<DataGridTextColumn Header="Duration" Width="90" Binding="{Binding CalcTerm}"/>
|
||||
<DataGridTextColumn Header="Moment Mx" Width="90" Binding="{Binding ForceTuple.Mx, Converter={StaticResource MomentConverter}, ValidatesOnExceptions=True}"/>
|
||||
<DataGridTextColumn Header="Moment My" Width="90" Binding="{Binding ForceTuple.My, Converter={StaticResource MomentConverter}, ValidatesOnExceptions=True}"/>
|
||||
<DataGridTextColumn Header="Force Nz" Width="90" Binding="{Binding ForceTuple.Nz, Converter={StaticResource ForceConverter}, ValidatesOnExceptions=True}"/>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using StructureHelper.Windows.ViewModels.Forces;
|
||||
using StructureHelperCommon.Models.Forces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
@@ -19,8 +21,18 @@ namespace StructureHelper.Windows.Forces
|
||||
/// </summary>
|
||||
public partial class ForceCombinationView : Window
|
||||
{
|
||||
public ForceCombinationView()
|
||||
ForceCombinationViewModel viewModel;
|
||||
public ForceCombinationView(ForceCombinationViewModel _viewModel)
|
||||
{
|
||||
viewModel = _viewModel;
|
||||
DataContext = viewModel;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public ForceCombinationView(IForceCombinationList combinationList)
|
||||
{
|
||||
viewModel = new ForceCombinationViewModel(combinationList);
|
||||
DataContext = viewModel;
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@ using StructureHelper.UnitSystem.Systems;
|
||||
using StructureHelperCommon.Infrastructures.Enums;
|
||||
using StructureHelperCommon.Services.Units;
|
||||
using StructureHelperLogics.Models.Calculations.CalculationProperties;
|
||||
using StructureHelperLogics.Models.CrossSections;
|
||||
using StructureHelperLogics.Models.Materials;
|
||||
using StructureHelperLogics.Models.Materials.Factories;
|
||||
using StructureHelperLogics.NdmCalculations.Triangulations;
|
||||
using StructureHelperLogics.Services;
|
||||
using StructureHelperLogics.Services.NdmCalculations;
|
||||
@@ -25,9 +25,7 @@ namespace StructureHelper.Windows.MainWindow
|
||||
{
|
||||
public class MainModel
|
||||
{
|
||||
//const CodeTypes code = CodeTypes.EuroCode_2_1990;
|
||||
const CodeTypes code = CodeTypes.SP63_13330_2018;
|
||||
|
||||
public ICrossSection Section { get; private set; }
|
||||
private IPrimitiveRepository primitiveRepository;
|
||||
public IHeadMaterialRepository HeadMaterialRepository { get; }
|
||||
public List<IHeadMaterial> HeadMaterials { get; }
|
||||
@@ -44,10 +42,10 @@ namespace StructureHelper.Windows.MainWindow
|
||||
this.calculationService = calculationService;
|
||||
this.unitSystemService = unitSystemService;
|
||||
|
||||
Section = new CrossSection();
|
||||
CalculationProperty = new CalculationProperty();
|
||||
HeadMaterials = new List<IHeadMaterial>();
|
||||
HeadMaterialRepository = new HeadMaterialRepository(this);
|
||||
HeadMaterialRepository.LibMaterials = LibMaterialFactory.GetLibMaterials(code);
|
||||
}
|
||||
|
||||
//public IStrainMatrix Calculate(double mx, double my, double nz)
|
||||
@@ -60,8 +58,7 @@ namespace StructureHelper.Windows.MainWindow
|
||||
|
||||
public IEnumerable<INdm> GetNdms(ICalculationProperty calculationProperty)
|
||||
{
|
||||
var unitSystem = unitSystemService.GetCurrentSystem();
|
||||
var ndmPrimitives = primitiveRepository.Primitives.Select(x => x.GetNdmPrimitive()).ToArray();
|
||||
var ndmPrimitives = Section.SectionRepository.Primitives;
|
||||
|
||||
//Настройки триангуляции, пока опции могут быть только такие
|
||||
ITriangulationOptions options = new TriangulationOptions { LimiteState = calculationProperty.LimitState, CalcTerm = calculationProperty.CalcTerm };
|
||||
|
||||
@@ -62,32 +62,38 @@
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel>
|
||||
<Expander Header="Materials" ExpandDirection="Down" MinWidth="20">
|
||||
<Expander Header="Actions" MinWidth="20">
|
||||
<Expander.ContextMenu>
|
||||
<ContextMenu>
|
||||
<Button Content="Materials" Command="{Binding EditHeadMaterialsCommand}"/>
|
||||
<Button Content="Add Force Combination" Command="{Binding AddForceCombinationCommand}"/>
|
||||
</ContextMenu>
|
||||
</Expander.ContextMenu>
|
||||
<ListBox ItemsSource="{Binding HeadMaterials}">
|
||||
<ListBox ItemsSource="{Binding ForceCombinationLists}" SelectedItem="{Binding SelectedForceCombinationList}">
|
||||
<ListBox.ContextMenu>
|
||||
<ContextMenu>
|
||||
<Button Content="Edit" Command="{Binding EditForceCombinationCommand}"/>
|
||||
<Button Content="Delete" Command="{Binding DeleteForceCombinationCommand}"/>
|
||||
</ContextMenu>
|
||||
</ListBox.ContextMenu>
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="20"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Rectangle Grid.Column="0" Margin="3">
|
||||
<Rectangle.Fill>
|
||||
<SolidColorBrush Color="{Binding Color}"/>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
<TextBlock Grid.Column="1" Text="{Binding Name}"/>
|
||||
<TextBlock Text="{Binding Name}"/>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
</Expander>
|
||||
<Expander Header="Geometry" ExpandDirection="Down" MinWidth="20" >
|
||||
<Expander Header="Materials" MinWidth="20">
|
||||
<Expander.ContextMenu>
|
||||
<ContextMenu>
|
||||
<Button Content="Materials" Command="{Binding EditHeadMaterialsCommand}"/>
|
||||
</ContextMenu>
|
||||
</Expander.ContextMenu>
|
||||
<ListBox ItemsSource="{Binding HeadMaterials}" ItemTemplate="{StaticResource ColoredItemTemplate}">
|
||||
</ListBox>
|
||||
</Expander>
|
||||
<Expander Header="Geometry" MinWidth="20" >
|
||||
<Expander.ContextMenu>
|
||||
<ContextMenu>
|
||||
<MenuItem Header="Add">
|
||||
@@ -96,43 +102,33 @@
|
||||
</MenuItem>
|
||||
</ContextMenu>
|
||||
</Expander.ContextMenu>
|
||||
<ListBox ItemsSource="{Binding Primitives}" SelectedItem="{Binding SelectedPrimitive}">
|
||||
<ListBox ItemsSource="{Binding Primitives}" SelectedItem="{Binding SelectedPrimitive}" ItemTemplate="{StaticResource ColoredItemTemplate}">
|
||||
<ListBox.ContextMenu>
|
||||
<ContextMenu>
|
||||
<Button Content="Edit" Command="{Binding EditPrimitive}"/>
|
||||
<Button Content="Delete" Command="{Binding DeletePrimitive}"/>
|
||||
</ContextMenu>
|
||||
</ListBox.ContextMenu>
|
||||
</ListBox>
|
||||
</Expander>
|
||||
<Expander Header="Analyses" MinWidth="20">
|
||||
<Expander.ContextMenu>
|
||||
<ContextMenu>
|
||||
<Button Content="Add Calculator" Command="{Binding AddCalculatorCommand}"/>
|
||||
</ContextMenu>
|
||||
</Expander.ContextMenu>
|
||||
<ListBox ItemsSource="{Binding Calculators}" SelectedItem="{Binding SelectedCalculator}">
|
||||
<ListBox.ContextMenu>
|
||||
<ContextMenu>
|
||||
<Button Content="Edit" Command="{Binding EditCalculatorCommand}"/>
|
||||
<!--<Button Content="Delete" Command="{Binding DeleteForceCombinationCommand}"/>-->
|
||||
</ContextMenu>
|
||||
</ListBox.ContextMenu>
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="20"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Rectangle Grid.Column="0" Margin="3">
|
||||
<Rectangle.Fill>
|
||||
<SolidColorBrush Color="{Binding Color}"/>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
<TextBlock Grid.Column="1" Text="{Binding Name}"/>
|
||||
<TextBlock Text="{Binding Name}"/>
|
||||
</Grid>
|
||||
|
||||
<!--<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="25"/>
|
||||
<RowDefinition Height="20"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1"/>
|
||||
<ColumnDefinition MinWidth="50"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Viewbox Grid.RowSpan="2">
|
||||
|
||||
</Viewbox>
|
||||
<TextBlock Grid.Column="1" Text="{Binding Name}"/>
|
||||
<Button Grid.Column="1" Grid.Row="1" Content="..."/>
|
||||
</Grid>-->
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
|
||||
@@ -11,18 +11,27 @@ using StructureHelper.Services.Primitives;
|
||||
using StructureHelper.UnitSystem;
|
||||
using StructureHelper.Windows.CalculationWindows.CalculationPropertyWindow;
|
||||
using StructureHelper.Windows.CalculationWindows.CalculationResultWindow;
|
||||
using StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews;
|
||||
using StructureHelper.Windows.ColorPickerWindow;
|
||||
using StructureHelper.Windows.Forces;
|
||||
using StructureHelper.Windows.MainWindow.Materials;
|
||||
using StructureHelper.Windows.PrimitiveProperiesWindow;
|
||||
using StructureHelper.Windows.PrimitiveTemplates.RCs.RectangleBeam;
|
||||
using StructureHelper.Windows.ViewModels.Calculations.CalculationProperies;
|
||||
using StructureHelper.Windows.ViewModels.Calculations.CalculationResult;
|
||||
using StructureHelper.Windows.ViewModels.Calculations.Calculators;
|
||||
using StructureHelperCommon.Infrastructures.Enums;
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Settings;
|
||||
using StructureHelperCommon.Infrastructures.Strings;
|
||||
using StructureHelperCommon.Models.Forces;
|
||||
using StructureHelperLogics.Models.Calculations.CalculationProperties;
|
||||
using StructureHelperLogics.Models.CrossSections;
|
||||
using StructureHelperLogics.Models.Materials;
|
||||
using StructureHelperLogics.Models.Primitives;
|
||||
using StructureHelperLogics.Models.Templates.RCs;
|
||||
using StructureHelperLogics.NdmCalculations.Analyses;
|
||||
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
|
||||
using StructureHelperLogics.NdmCalculations.Primitives;
|
||||
using StructureHelperLogics.Services.NdmCalculations;
|
||||
using System;
|
||||
@@ -38,17 +47,46 @@ namespace StructureHelper.Windows.MainWindow
|
||||
public class MainViewModel : ViewModelBase
|
||||
{
|
||||
const double scale = 1d;
|
||||
|
||||
ICrossSection section;
|
||||
ICrossSectionRepository repository => section.SectionRepository;
|
||||
|
||||
private double ConstAxisLineThickness = 2d * scale;
|
||||
private double ConstGridLineThickness = 0.25d * scale;
|
||||
|
||||
private List<IHeadMaterial> headMaterials;
|
||||
private readonly double scaleRate = 1.1d;
|
||||
|
||||
private IPrimitiveRepository PrimitiveRepository { get; }
|
||||
|
||||
public PrimitiveBase SelectedPrimitive { get; set; }
|
||||
public IForceCombinationList SelectedForceCombinationList { get; set; }
|
||||
public INdmCalculator SelectedCalculator { get; set; }
|
||||
|
||||
private MainModel Model { get; }
|
||||
public ObservableCollection<PrimitiveBase> Primitives { get; set; }
|
||||
public ObservableCollection<PrimitiveBase> Primitives { get; private set; }
|
||||
|
||||
public ObservableCollection<IForceCombinationList> ForceCombinationLists
|
||||
{
|
||||
get
|
||||
{
|
||||
var collection = new ObservableCollection<IForceCombinationList>();
|
||||
foreach (var item in Model.Section.SectionRepository.ForceCombinationLists)
|
||||
{
|
||||
collection.Add(item);
|
||||
}
|
||||
return collection;
|
||||
}
|
||||
}
|
||||
public ObservableCollection<INdmCalculator> Calculators
|
||||
{
|
||||
get
|
||||
{
|
||||
var collection = new ObservableCollection<INdmCalculator>();
|
||||
foreach (var item in Model.Section.SectionRepository.Calculators)
|
||||
{
|
||||
collection.Add(item);
|
||||
}
|
||||
return collection;
|
||||
}
|
||||
}
|
||||
|
||||
private double panelX, panelY, scrollPanelX, scrollPanelY;
|
||||
private CalculationProperty calculationProperty;
|
||||
@@ -119,7 +157,7 @@ namespace StructureHelper.Windows.MainWindow
|
||||
get
|
||||
{
|
||||
var collection = new ObservableCollection<IHeadMaterial>();
|
||||
foreach (var obj in headMaterials)
|
||||
foreach (var obj in Model.Section.SectionRepository.HeadMaterials)
|
||||
{
|
||||
collection.Add(obj);
|
||||
}
|
||||
@@ -148,6 +186,117 @@ namespace StructureHelper.Windows.MainWindow
|
||||
set => OnPropertyChanged(value, ref yY2);
|
||||
}
|
||||
public ICommand AddPrimitive { get; }
|
||||
|
||||
private ICommand addForceCombinationCommand;
|
||||
public ICommand AddForceCombinationCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return addForceCombinationCommand ??
|
||||
(
|
||||
addForceCombinationCommand = new RelayCommand(o =>
|
||||
{
|
||||
AddForceCombination();
|
||||
OnPropertyChanged(nameof(ForceCombinationLists));
|
||||
}));
|
||||
}
|
||||
}
|
||||
private void AddForceCombination()
|
||||
{
|
||||
var item = new ForceCombinationList() { Name = "New Force Combination" };
|
||||
Model.Section.SectionRepository.ForceCombinationLists.Add(item);
|
||||
}
|
||||
private ICommand deleteForceCombinationCommand;
|
||||
public ICommand DeleteForceCombinationCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return deleteForceCombinationCommand ??
|
||||
(
|
||||
deleteForceCombinationCommand = new RelayCommand(o =>
|
||||
{
|
||||
DeleteForceCombination();
|
||||
OnPropertyChanged(nameof(ForceCombinationLists));
|
||||
}, o => SelectedForceCombinationList != null));
|
||||
}
|
||||
}
|
||||
private void DeleteForceCombination()
|
||||
{
|
||||
var dialogResult = MessageBox.Show("Delete action?", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
Model.Section.SectionRepository.ForceCombinationLists.Remove(SelectedForceCombinationList);
|
||||
}
|
||||
|
||||
}
|
||||
private ICommand editForceCombinationCommand;
|
||||
public ICommand EditForceCombinationCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return editForceCombinationCommand ??
|
||||
(
|
||||
editForceCombinationCommand = new RelayCommand(o =>
|
||||
{
|
||||
EditForceCombination();
|
||||
OnPropertyChanged(nameof(ForceCombinationLists));
|
||||
}, o => SelectedForceCombinationList != null));
|
||||
}
|
||||
}
|
||||
private void EditForceCombination()
|
||||
{
|
||||
var wnd = new ForceCombinationView(SelectedForceCombinationList);
|
||||
wnd.ShowDialog();
|
||||
}
|
||||
|
||||
private ICommand addCalculatorCommand;
|
||||
public ICommand AddCalculatorCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return addCalculatorCommand ??
|
||||
(
|
||||
addCalculatorCommand = new RelayCommand(o =>
|
||||
{
|
||||
AddCalculator();
|
||||
OnPropertyChanged(nameof(Calculators));
|
||||
}));
|
||||
}
|
||||
}
|
||||
private void AddCalculator()
|
||||
{
|
||||
var item = new ForceCalculator() { Name = "New force calculator"};
|
||||
Model.Section.SectionRepository.Calculators.Add(item);
|
||||
}
|
||||
|
||||
private ICommand editCalculatorCommand;
|
||||
public ICommand EditCalculatorCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return editCalculatorCommand ??
|
||||
(
|
||||
editCalculatorCommand = new RelayCommand(o =>
|
||||
{
|
||||
EditCalculator();
|
||||
OnPropertyChanged(nameof(Calculators));
|
||||
}, o => SelectedCalculator != null));
|
||||
}
|
||||
}
|
||||
private void EditCalculator()
|
||||
{
|
||||
if (SelectedCalculator is ForceCalculator)
|
||||
{
|
||||
var calculator = SelectedCalculator as ForceCalculator;
|
||||
var repository = Model.Section.SectionRepository;
|
||||
var primitives = Primitives.Select(x => x.GetNdmPrimitive()).ToArray();
|
||||
var vm = new ForceCalculatorViewModel( primitives, repository.ForceCombinationLists, calculator);
|
||||
|
||||
var wnd = new ForceCalculatorView(vm);
|
||||
wnd.ShowDialog();
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand Calculate { get; }
|
||||
public ICommand DeletePrimitive { get; }
|
||||
public ICommand EditCalculationPropertyCommand { get; }
|
||||
@@ -176,11 +325,10 @@ namespace StructureHelper.Windows.MainWindow
|
||||
private double axisLineThickness;
|
||||
private double gridLineThickness;
|
||||
|
||||
public MainViewModel(MainModel model, IPrimitiveRepository primitiveRepository, UnitSystemService unitSystemService)
|
||||
public MainViewModel(MainModel model)
|
||||
{
|
||||
PrimitiveRepository = primitiveRepository;
|
||||
Model = model;
|
||||
headMaterials = Model.HeadMaterialRepository.HeadMaterials;
|
||||
section = model.Section;
|
||||
CanvasWidth = 2d * scale;
|
||||
CanvasHeight = 1.5d * scale;
|
||||
XX2 = CanvasWidth;
|
||||
@@ -276,7 +424,7 @@ namespace StructureHelper.Windows.MainWindow
|
||||
ScaleValue /= scaleRate;
|
||||
});
|
||||
|
||||
Primitives = new ObservableCollection<PrimitiveBase>();
|
||||
Primitives = PrimitiveOperations.ConvertNdmPrimitivesToPrimitiveBase(repository.Primitives);
|
||||
|
||||
AddPrimitive = new RelayCommand(o =>
|
||||
{
|
||||
@@ -306,8 +454,9 @@ namespace StructureHelper.Windows.MainWindow
|
||||
|
||||
else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + nameof(primitiveType)); }
|
||||
viewPrimitive.RegisterDeltas(CanvasWidth / 2, CanvasHeight / 2);
|
||||
repository.Primitives.Add(ndmPrimitive);
|
||||
Primitives.Add(viewPrimitive);
|
||||
PrimitiveRepository.Add(viewPrimitive);
|
||||
OnPropertyChanged(nameof(Primitives));
|
||||
OnPropertyChanged(nameof(PrimitivesCount));
|
||||
});
|
||||
|
||||
@@ -326,7 +475,8 @@ namespace StructureHelper.Windows.MainWindow
|
||||
foreach (var primitive in GetBeamCasePrimitives())
|
||||
{
|
||||
Primitives.Add(primitive);
|
||||
PrimitiveRepository.Add(primitive);
|
||||
var ndmPrimitive = primitive.GetNdmPrimitive();
|
||||
repository.Primitives.Add(ndmPrimitive);
|
||||
}
|
||||
OnPropertyChanged(nameof(PrimitivesCount));
|
||||
AddCaseLoads(-50e3d, 50e3d, 0d);
|
||||
@@ -337,7 +487,8 @@ namespace StructureHelper.Windows.MainWindow
|
||||
foreach (var primitive in GetColumnCasePrimitives())
|
||||
{
|
||||
Primitives.Add(primitive);
|
||||
PrimitiveRepository.Add(primitive);
|
||||
var ndmPrimitive = primitive.GetNdmPrimitive();
|
||||
repository.Primitives.Add(ndmPrimitive);
|
||||
}
|
||||
OnPropertyChanged(nameof(PrimitivesCount));
|
||||
AddCaseLoads(50e3d, 50e3d, -100e3d);
|
||||
@@ -348,7 +499,8 @@ namespace StructureHelper.Windows.MainWindow
|
||||
foreach (var primitive in GetSlabCasePrimitives())
|
||||
{
|
||||
Primitives.Add(primitive);
|
||||
PrimitiveRepository.Add(primitive);
|
||||
var ndmPrimitive = primitive.GetNdmPrimitive();
|
||||
repository.Primitives.Add(ndmPrimitive);
|
||||
}
|
||||
OnPropertyChanged(nameof(PrimitivesCount));
|
||||
AddCaseLoads(-20e3d, 0d, 0d);
|
||||
@@ -357,9 +509,8 @@ namespace StructureHelper.Windows.MainWindow
|
||||
Calculate = new RelayCommand(o =>
|
||||
{
|
||||
CalculateResult();
|
||||
|
||||
},
|
||||
o => Model.PrimitiveRepository.Primitives.Count() > 0);
|
||||
o => repository.Primitives.Count() > 0);
|
||||
|
||||
EditCalculationPropertyCommand = new RelayCommand (o => EditCalculationProperty());
|
||||
|
||||
@@ -374,7 +525,7 @@ namespace StructureHelper.Windows.MainWindow
|
||||
primitive.CenterY -= center[1];
|
||||
}
|
||||
},
|
||||
o => Model.PrimitiveRepository.Primitives.Count() > 0
|
||||
o => repository.Primitives.Count() > 0
|
||||
);
|
||||
|
||||
SetPopupCanBeClosedTrue = new RelayCommand(o =>
|
||||
@@ -392,10 +543,9 @@ namespace StructureHelper.Windows.MainWindow
|
||||
|
||||
private void EditHeadMaterials()
|
||||
{
|
||||
var wnd = new HeadMaterialsView(Model.HeadMaterialRepository);
|
||||
var wnd = new HeadMaterialsView(repository);
|
||||
wnd.ShowDialog();
|
||||
headMaterials = Model.HeadMaterialRepository.HeadMaterials;
|
||||
OnPropertyChanged(nameof(headMaterials));
|
||||
OnPropertyChanged(nameof(HeadMaterials));
|
||||
foreach (var primitive in Primitives)
|
||||
{
|
||||
primitive.RefreshColor();
|
||||
@@ -409,7 +559,8 @@ namespace StructureHelper.Windows.MainWindow
|
||||
var dialogResult = MessageBox.Show("Delete primitive?", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
PrimitiveRepository.Delete(SelectedPrimitive);
|
||||
var ndmPrimitive = SelectedPrimitive.GetNdmPrimitive();
|
||||
repository.Primitives.Remove(ndmPrimitive);
|
||||
Primitives.Remove(SelectedPrimitive);
|
||||
}
|
||||
}
|
||||
@@ -421,9 +572,9 @@ namespace StructureHelper.Windows.MainWindow
|
||||
{
|
||||
if (!(SelectedPrimitive is null))
|
||||
{
|
||||
var wnd = new PrimitiveProperties(SelectedPrimitive, Model.HeadMaterialRepository);
|
||||
var wnd = new PrimitiveProperties(SelectedPrimitive, repository);
|
||||
wnd.ShowDialog();
|
||||
OnPropertyChanged(nameof(headMaterials));
|
||||
OnPropertyChanged(nameof(HeadMaterials));
|
||||
}
|
||||
else { MessageBox.Show("Selection is changed", "Please, select primitive", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); }
|
||||
}
|
||||
@@ -458,7 +609,7 @@ namespace StructureHelper.Windows.MainWindow
|
||||
|
||||
private bool CheckMaterials()
|
||||
{
|
||||
foreach (var item in PrimitiveRepository.Primitives)
|
||||
foreach (var item in Primitives)
|
||||
{
|
||||
if (item.HeadMaterial == null)
|
||||
{
|
||||
@@ -507,13 +658,13 @@ namespace StructureHelper.Windows.MainWindow
|
||||
wnd.ShowDialog();
|
||||
if (wnd.DialogResult == true)
|
||||
{
|
||||
IHeadMaterial concrete = new HeadMaterial() { Name = "Concrete" };
|
||||
concrete.HelperMaterial = Model.HeadMaterialRepository.LibMaterials.Where(x => (x.MaterialType == MaterialTypes.Concrete & x.Name.Contains("40"))).First();
|
||||
IHeadMaterial reinforcement = new HeadMaterial() { Name = "Reinforcement" };
|
||||
reinforcement.HelperMaterial = Model.HeadMaterialRepository.LibMaterials.Where(x => (x.MaterialType == MaterialTypes.Reinforcement & x.Name.Contains("400"))).First();
|
||||
headMaterials.Add(concrete);
|
||||
headMaterials.Add(reinforcement);
|
||||
OnPropertyChanged(nameof(headMaterials));
|
||||
var concrete = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Concrete40, ProgramSetting.CodeType);
|
||||
concrete.Name = "Concrete";
|
||||
var reinforcement = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Reinforecement400, ProgramSetting.CodeType);
|
||||
reinforcement.Name = "Reinforcement";
|
||||
Model.Section.SectionRepository.HeadMaterials.Add(concrete);
|
||||
Model.Section.SectionRepository.HeadMaterials.Add(reinforcement);
|
||||
OnPropertyChanged(nameof(HeadMaterials));
|
||||
var primitives = PrimitiveFactory.GetRectangleRCElement(template, concrete, reinforcement);
|
||||
foreach (var item in primitives)
|
||||
{
|
||||
|
||||
@@ -9,10 +9,22 @@
|
||||
mc:Ignorable="d"
|
||||
Title="Materials" Height="350" Width="680" MinHeight="350" MinWidth="680" WindowStartupLocation="CenterScreen">
|
||||
<Window.Resources>
|
||||
<DataTemplate x:Key="LibMaterial">
|
||||
<DataTemplate x:Key="ConcreteLibMaterial">
|
||||
<StackPanel>
|
||||
<TextBlock Text="Library material"/>
|
||||
<ComboBox Grid.Row="2" Height="25" VerticalAlignment="Top" ItemsSource="{Binding LibMaterials}" SelectedItem="{Binding SelectedLibMaterial}">
|
||||
<ComboBox Grid.Row="2" Height="25" VerticalAlignment="Top" ItemsSource="{Binding LibConcreteMaterials}" SelectedItem="{Binding SelectedLibMaterial}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding Name}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
<DataTemplate x:Key="ReinforcementLibMaterial">
|
||||
<StackPanel>
|
||||
<TextBlock Text="Library material"/>
|
||||
<ComboBox Grid.Row="2" Height="25" VerticalAlignment="Top" ItemsSource="{Binding LibReinforcementMaterials}" SelectedItem="{Binding SelectedLibMaterial}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding Name}"/>
|
||||
@@ -74,7 +86,8 @@
|
||||
</ListBox>
|
||||
</Grid>
|
||||
<StackPanel Grid.Column="1">
|
||||
<Button Content="New Lib Material" Command="{Binding AddNewMaterialCommand}"/>
|
||||
<Button Content="New Concrete" Command="{Binding AddNewConcreteMaterialCommand}"/>
|
||||
<Button Content="New Reinforcement" Command="{Binding AddNewReinforcementMaterialCommand}"/>
|
||||
<Button Content="New Elastic Material" Command="{Binding AddElasticMaterialCommand}"/>
|
||||
<Button Content="Edit color" Command="{Binding EditColorCommand}"/>
|
||||
<Button Content="Copy" Command="{Binding CopyHeadMaterialCommand}"/>
|
||||
|
||||
@@ -25,13 +25,8 @@ namespace StructureHelper.Windows.MainWindow.Materials
|
||||
{
|
||||
private HeadMaterialsViewModel viewModel;
|
||||
|
||||
public HeadMaterialsView(IHeadMaterialRepository headMaterialRepository)
|
||||
{
|
||||
viewModel = new HeadMaterialsViewModel(headMaterialRepository);
|
||||
this.DataContext = viewModel;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
//public HeadMaterialsView(List<IHeadMaterial> headMaterials) : this(new HeadMaterialsViewModel(headMaterials)) {}
|
||||
public HeadMaterialsView(IHasHeadMaterials hasHeadMaterials) : this(new HeadMaterialsViewModel(hasHeadMaterials)) { }
|
||||
public HeadMaterialsView(HeadMaterialsViewModel vm)
|
||||
{
|
||||
viewModel = vm;
|
||||
@@ -47,12 +42,17 @@ namespace StructureHelper.Windows.MainWindow.Materials
|
||||
var helperMaterial = selectedMaterial.HelperMaterial;
|
||||
string dataTemplateName = string.Empty;
|
||||
Binding binding = new Binding();
|
||||
if (helperMaterial is ILibMaterial)
|
||||
if (helperMaterial is IConcreteLibMaterial)
|
||||
{
|
||||
dataTemplateName = "LibMaterial";
|
||||
dataTemplateName = "ConcreteLibMaterial";
|
||||
binding.Source = viewModel;
|
||||
}
|
||||
if (helperMaterial is IElasticMaterial)
|
||||
else if (helperMaterial is IReinforcementLibMaterial)
|
||||
{
|
||||
dataTemplateName = "ReinforcementLibMaterial";
|
||||
binding.Source = viewModel;
|
||||
}
|
||||
else if (helperMaterial is IElasticMaterial)
|
||||
{
|
||||
dataTemplateName = "ElasticMaterial";
|
||||
binding.Source = viewModel.SelectedMaterial.HelperMaterial;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using StructureHelper.Infrastructure.Enums;
|
||||
using StructureHelper.Infrastructure.UI.DataContexts;
|
||||
using StructureHelper.Models.Materials;
|
||||
using StructureHelper.Windows.ViewModels.PrimitiveProperties;
|
||||
using StructureHelperLogics.Models.Materials;
|
||||
using System;
|
||||
@@ -28,10 +29,10 @@ namespace StructureHelper.Windows.PrimitiveProperiesWindow
|
||||
{
|
||||
PrimitiveBase primitive;
|
||||
private PrimitivePropertiesViewModel viewModel;
|
||||
public PrimitiveProperties(PrimitiveBase primitive, IHeadMaterialRepository materialRepository)
|
||||
public PrimitiveProperties(PrimitiveBase primitive, IHasHeadMaterials headMaterials)
|
||||
{
|
||||
this.primitive = primitive;
|
||||
viewModel = new PrimitivePropertiesViewModel(this.primitive, materialRepository);
|
||||
viewModel = new PrimitivePropertiesViewModel(this.primitive, headMaterials);
|
||||
this.DataContext = viewModel;
|
||||
InitializeComponent();
|
||||
if (primitive is RectangleViewPrimitive) { AddPrimitiveProperties(PrimitiveType.Rectangle); }
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
using StructureHelper.Infrastructure;
|
||||
using StructureHelper.Infrastructure.UI.DataContexts;
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Infrastructures.Strings;
|
||||
using StructureHelperCommon.Models.Forces;
|
||||
using StructureHelperLogics.Models.Primitives;
|
||||
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
|
||||
using StructureHelperLogics.NdmCalculations.Primitives;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace StructureHelper.Windows.ViewModels.Calculations.Calculators
|
||||
{
|
||||
public class ForceCalculatorViewModel : ViewModelBase
|
||||
{
|
||||
IEnumerable<INdmPrimitive> allowedPrimitives;
|
||||
IEnumerable<IForceCombinationList> allowedForceCombinations;
|
||||
ForceCalculator forcesCalculator;
|
||||
|
||||
public PrimitiveBase SelectedAllowedPrimitive { get; set; }
|
||||
public PrimitiveBase SelectedPrimitive { get; set; }
|
||||
|
||||
public ObservableCollection<PrimitiveBase> AllowedPrimitives
|
||||
{
|
||||
get
|
||||
{
|
||||
var sourceItems = forcesCalculator.NdmPrimitives;
|
||||
var rejectedItems = allowedPrimitives.Where(x => sourceItems.Contains(x));
|
||||
var filteredItems = allowedPrimitives.Except(rejectedItems);
|
||||
return ConvertNdmPrimitivesToPrimitiveBase(filteredItems);
|
||||
}
|
||||
}
|
||||
public ObservableCollection<PrimitiveBase> Primitives
|
||||
{
|
||||
get
|
||||
{
|
||||
var sourceItems = forcesCalculator.NdmPrimitives;
|
||||
return ConvertNdmPrimitivesToPrimitiveBase(sourceItems);
|
||||
}
|
||||
}
|
||||
|
||||
private ICommand addAllPrimitivesCommand;
|
||||
private ICommand clearAllPrimitivesCommand;
|
||||
private RelayCommand addSelectedPrimitiveCommand;
|
||||
private RelayCommand removeSelectedPrimitive;
|
||||
|
||||
public ICommand AddAllPrimitivesCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return addAllPrimitivesCommand ??
|
||||
(
|
||||
addAllPrimitivesCommand = new RelayCommand(o =>
|
||||
{
|
||||
AddAllPrimitives();
|
||||
OnPropertyChanged(nameof(AllowedPrimitives));
|
||||
OnPropertyChanged(nameof(Primitives));
|
||||
},o => allowedPrimitives.Count() > 0
|
||||
));
|
||||
}
|
||||
}
|
||||
private void AddAllPrimitives()
|
||||
{
|
||||
forcesCalculator.NdmPrimitives.Clear();
|
||||
forcesCalculator.NdmPrimitives.AddRange(allowedPrimitives);
|
||||
}
|
||||
|
||||
public ICommand ClearAllPrimitivesCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return clearAllPrimitivesCommand ??
|
||||
(
|
||||
clearAllPrimitivesCommand = new RelayCommand(o =>
|
||||
{
|
||||
forcesCalculator.NdmPrimitives.Clear();
|
||||
OnPropertyChanged(nameof(AllowedPrimitives));
|
||||
OnPropertyChanged(nameof(Primitives));
|
||||
}, o => forcesCalculator.NdmPrimitives.Count > 0 ));
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand AddSelectedPrimitiveCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return addSelectedPrimitiveCommand ??
|
||||
(
|
||||
addSelectedPrimitiveCommand = new RelayCommand(o =>
|
||||
{
|
||||
forcesCalculator.NdmPrimitives.Add(SelectedAllowedPrimitive.GetNdmPrimitive());
|
||||
OnPropertyChanged(nameof(AllowedPrimitives));
|
||||
OnPropertyChanged(nameof(Primitives));
|
||||
}, o => SelectedAllowedPrimitive != null));
|
||||
}
|
||||
}
|
||||
|
||||
public RelayCommand RemoveSelectedPrimitiveCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return removeSelectedPrimitive ??
|
||||
(
|
||||
removeSelectedPrimitive = new RelayCommand(o =>
|
||||
{
|
||||
forcesCalculator.NdmPrimitives.Remove(SelectedPrimitive.GetNdmPrimitive());
|
||||
OnPropertyChanged(nameof(AllowedPrimitives));
|
||||
OnPropertyChanged(nameof(Primitives));
|
||||
}, o => SelectedPrimitive != null));
|
||||
}
|
||||
}
|
||||
|
||||
public ForceCalculatorViewModel(IEnumerable<INdmPrimitive> _allowedPrimitives, IEnumerable<IForceCombinationList> _allowedForceCombinations, ForceCalculator _forcesCalculator)
|
||||
{
|
||||
allowedPrimitives = _allowedPrimitives;
|
||||
allowedForceCombinations = _allowedForceCombinations;
|
||||
forcesCalculator = _forcesCalculator;
|
||||
}
|
||||
|
||||
private ObservableCollection<PrimitiveBase> ConvertNdmPrimitivesToPrimitiveBase(IEnumerable<INdmPrimitive> primitives)
|
||||
{
|
||||
ObservableCollection<PrimitiveBase> viewItems = new ObservableCollection<PrimitiveBase>();
|
||||
foreach (var item in primitives)
|
||||
{
|
||||
if (item is IPointPrimitive)
|
||||
{
|
||||
var point = item as IPointPrimitive;
|
||||
viewItems.Add(new PointViewPrimitive(point));
|
||||
}
|
||||
else if (item is IRectanglePrimitive)
|
||||
{
|
||||
var rect = item as IRectanglePrimitive;
|
||||
viewItems.Add(new RectangleViewPrimitive(rect));
|
||||
}
|
||||
else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown);
|
||||
}
|
||||
return viewItems;
|
||||
}
|
||||
}
|
||||
}
|
||||
31
Windows/ViewModels/Forces/ForceCombinationViewModel.cs
Normal file
31
Windows/ViewModels/Forces/ForceCombinationViewModel.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using StructureHelper.Infrastructure;
|
||||
using StructureHelperCommon.Models.Forces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelper.Windows.ViewModels.Forces
|
||||
{
|
||||
public class ForceCombinationViewModel : ViewModelBase
|
||||
{
|
||||
IForceCombinationList combinationList;
|
||||
|
||||
public IDesignForceTuple SelectedTuple { get; set; }
|
||||
public string Name
|
||||
{
|
||||
get => combinationList.Name;
|
||||
set
|
||||
{
|
||||
combinationList.Name = value;
|
||||
}
|
||||
}
|
||||
public IEnumerable<IDesignForceTuple> ForceTuples { get => combinationList.DesignForces; }
|
||||
|
||||
public ForceCombinationViewModel(IForceCombinationList combinationList)
|
||||
{
|
||||
this.combinationList = combinationList;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,8 +3,11 @@ using StructureHelper.Models.Materials;
|
||||
using StructureHelper.Services.Primitives;
|
||||
using StructureHelper.Windows.MainWindow;
|
||||
using StructureHelperCommon.Infrastructures.Enums;
|
||||
using StructureHelperCommon.Infrastructures.Settings;
|
||||
using StructureHelperCommon.Models.Materials.Libraries;
|
||||
using StructureHelperCommon.Services.ColorServices;
|
||||
using StructureHelperLogics.Models.Materials;
|
||||
using StructureHelperLogics.NdmCalculations.Primitives;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
@@ -20,13 +23,14 @@ namespace StructureHelper.Windows.ViewModels.Materials
|
||||
{
|
||||
public class HeadMaterialsViewModel : ViewModelBase
|
||||
{
|
||||
IHeadMaterialRepository materialRepository;
|
||||
IEnumerable<IHeadMaterial> headMaterials;
|
||||
IEnumerable<ILibMaterial> libMaterials;
|
||||
IHasHeadMaterials parent;
|
||||
List<IHeadMaterial> headMaterials;
|
||||
IHeadMaterial selectedMaterial;
|
||||
ILibMaterial selectedLibMaterial;
|
||||
ILibMaterialEntity selectedLibMaterial;
|
||||
|
||||
public ICommand AddNewConcreteMaterialCommand { get;}
|
||||
public ICommand AddNewReinforcementMaterialCommand { get; }
|
||||
|
||||
public ICommand AddNewMaterialCommand { get; set; }
|
||||
public ICommand AddElasticMaterialCommand
|
||||
{
|
||||
get
|
||||
@@ -40,10 +44,10 @@ namespace StructureHelper.Windows.ViewModels.Materials
|
||||
|
||||
private void AddElasticMaterial()
|
||||
{
|
||||
IHeadMaterial material = new HeadMaterial() { Name = "New elastic material" };
|
||||
material.HelperMaterial = new ElasticMaterial() { Modulus = 2e11d, CompressiveStrength = 4e8d, TensileStrength = 4e8d };
|
||||
var material = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Elastic200, ProgramSetting.CodeType);
|
||||
material.Name = "New Elastic Material";
|
||||
HeadMaterials.Add(material);
|
||||
materialRepository.HeadMaterials.Add(material);
|
||||
headMaterials.Add(material);
|
||||
SelectedMaterial = material;
|
||||
}
|
||||
|
||||
@@ -63,7 +67,8 @@ namespace StructureHelper.Windows.ViewModels.Materials
|
||||
OnPropertyChanged(value, ref selectedMaterial);
|
||||
if (!(selectedMaterial is null))
|
||||
{
|
||||
selectedLibMaterial = selectedMaterial.HelperMaterial as ILibMaterial;
|
||||
var libMaterial = selectedMaterial.HelperMaterial as ILibMaterial;
|
||||
selectedLibMaterial = libMaterial.MaterialEntity;
|
||||
OnPropertyChanged(nameof(selectedLibMaterial));
|
||||
}
|
||||
}
|
||||
@@ -79,7 +84,7 @@ namespace StructureHelper.Windows.ViewModels.Materials
|
||||
}
|
||||
}
|
||||
|
||||
public ILibMaterial SelectedLibMaterial
|
||||
public ILibMaterialEntity SelectedLibMaterial
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -88,33 +93,41 @@ namespace StructureHelper.Windows.ViewModels.Materials
|
||||
}
|
||||
set
|
||||
{
|
||||
selectedMaterial.HelperMaterial = value;
|
||||
var libMaterial = selectedMaterial.HelperMaterial as ILibMaterial;
|
||||
libMaterial.MaterialEntity = value;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<ILibMaterial> LibMaterials
|
||||
public IEnumerable<ILibMaterialEntity> LibConcreteMaterials
|
||||
{
|
||||
get
|
||||
{
|
||||
//if (SelectedMaterial is null)
|
||||
//{
|
||||
// return null;
|
||||
//}
|
||||
return libMaterials;//.Where(x => x.MaterialType == (SelectedMaterial.HelperMaterial as ILibMaterial).MaterialType);
|
||||
return LibMaterialPepository.GetConcreteRepository(ProgramSetting.CodeType);
|
||||
}
|
||||
}
|
||||
|
||||
public HeadMaterialsViewModel(IHeadMaterialRepository headMaterialRepository)
|
||||
public IEnumerable<ILibMaterialEntity> LibReinforcementMaterials
|
||||
{
|
||||
materialRepository = headMaterialRepository;
|
||||
headMaterials = materialRepository.HeadMaterials;
|
||||
get
|
||||
{
|
||||
return LibMaterialPepository.GetReinforcementRepository(ProgramSetting.CodeType);
|
||||
}
|
||||
}
|
||||
|
||||
public HeadMaterialsViewModel(IHasHeadMaterials parent) : this(parent.HeadMaterials)
|
||||
{
|
||||
}
|
||||
|
||||
public HeadMaterialsViewModel(List<IHeadMaterial> _headMaterials)
|
||||
{
|
||||
headMaterials = _headMaterials;
|
||||
HeadMaterials = new ObservableCollection<IHeadMaterial>();
|
||||
foreach (var material in headMaterials)
|
||||
{
|
||||
HeadMaterials.Add(material);
|
||||
}
|
||||
libMaterials = materialRepository.LibMaterials;
|
||||
AddNewMaterialCommand = new RelayCommand(o => AddNewMaterial(MaterialTypes.Reinforcement));
|
||||
AddNewConcreteMaterialCommand = new RelayCommand(o => AddConcreteMaterial());
|
||||
AddNewReinforcementMaterialCommand = new RelayCommand(o => AddReinforcementMaterial());
|
||||
CopyHeadMaterialCommand = new RelayCommand(o => CopyMaterial(), o => !(SelectedMaterial is null));
|
||||
EditColorCommand = new RelayCommand(o => EditColor(), o=> ! (SelectedMaterial is null));
|
||||
DeleteMaterialCommand = new RelayCommand(o => DeleteMaterial(), o => !(SelectedMaterial is null));
|
||||
@@ -124,24 +137,30 @@ namespace StructureHelper.Windows.ViewModels.Materials
|
||||
{
|
||||
var material = SelectedMaterial.Clone() as IHeadMaterial;
|
||||
HeadMaterials.Add(material);
|
||||
materialRepository.HeadMaterials.Add(material);
|
||||
headMaterials.Add(material);
|
||||
SelectedMaterial = material;
|
||||
}
|
||||
|
||||
private void DeleteMaterial()
|
||||
{
|
||||
var mainModel = materialRepository.Parent as MainModel;
|
||||
var primitivesWithMaterial = mainModel.PrimitiveRepository.Primitives.Where(x => x.HeadMaterial == SelectedMaterial);
|
||||
int primitivesCount = primitivesWithMaterial.Count();
|
||||
if (primitivesCount > 0)
|
||||
if (parent != null)
|
||||
{
|
||||
MessageBox.Show("Some primitives reference to this material", "Material can not be deleted", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
if (parent is IHasPrimitives)
|
||||
{
|
||||
var primitives = (parent as IHasPrimitives).Primitives;
|
||||
var primitivesWithMaterial = primitives.Where(x => x.HeadMaterial == SelectedMaterial);
|
||||
int primitivesCount = primitivesWithMaterial.Count();
|
||||
if (primitivesCount > 0)
|
||||
{
|
||||
MessageBox.Show("Some primitives reference to this material", "Material can not be deleted", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
var dialogResult = MessageBox.Show("Delete material?", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
materialRepository.HeadMaterials.Remove(SelectedMaterial);
|
||||
headMaterials.Remove(SelectedMaterial);
|
||||
HeadMaterials.Remove(SelectedMaterial);
|
||||
}
|
||||
}
|
||||
@@ -155,13 +174,21 @@ namespace StructureHelper.Windows.ViewModels.Materials
|
||||
OnPropertyChanged(nameof(selectedMaterial));
|
||||
}
|
||||
|
||||
private void AddNewMaterial(MaterialTypes materialType)
|
||||
private void AddConcreteMaterial()
|
||||
{
|
||||
IHeadMaterial material = new HeadMaterial() { Name = "New material" };
|
||||
material.HelperMaterial = LibMaterials.Where(x => (x.MaterialType == MaterialTypes.Concrete & x.Name.Contains("40"))).First();
|
||||
var material = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Concrete40, ProgramSetting.CodeType);
|
||||
material.Name = "New Concrete";
|
||||
HeadMaterials.Add(material);
|
||||
//headMaterials.Append(material);
|
||||
materialRepository.HeadMaterials.Add(material);
|
||||
headMaterials.Add(material);
|
||||
SelectedMaterial = material;
|
||||
}
|
||||
|
||||
private void AddReinforcementMaterial()
|
||||
{
|
||||
var material = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Reinforecement400, ProgramSetting.CodeType);
|
||||
material.Name = "New Reinforcement";
|
||||
HeadMaterials.Add(material);
|
||||
headMaterials.Add(material);
|
||||
SelectedMaterial = material;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,8 +24,7 @@ namespace StructureHelper.Windows.ViewModels.PrimitiveProperties
|
||||
public class PrimitivePropertiesViewModel : ViewModelBase, IDataErrorInfo
|
||||
{
|
||||
private PrimitiveBase primitive;
|
||||
private IHeadMaterialRepository headMaterialRepository;
|
||||
private List<IHeadMaterial> headMaterials;
|
||||
private IHasHeadMaterials hasHeadMaterials;
|
||||
|
||||
public ICommand EditColorCommand { get; private set; }
|
||||
public ICommand EditMaterialCommand { get; private set; }
|
||||
@@ -228,13 +227,12 @@ namespace StructureHelper.Windows.ViewModels.PrimitiveProperties
|
||||
|
||||
public string Error => throw new NotImplementedException();
|
||||
|
||||
public PrimitivePropertiesViewModel(PrimitiveBase primitive, IHeadMaterialRepository materialRepository)
|
||||
public PrimitivePropertiesViewModel(PrimitiveBase primitive, IHasHeadMaterials hasHeadMaterials)
|
||||
{
|
||||
this.primitive = primitive;
|
||||
headMaterialRepository = materialRepository;
|
||||
headMaterials = materialRepository.HeadMaterials;
|
||||
this.hasHeadMaterials = hasHeadMaterials;
|
||||
HeadMaterials = new ObservableCollection<IHeadMaterial>();
|
||||
foreach (var material in headMaterials)
|
||||
foreach (var material in hasHeadMaterials.HeadMaterials)
|
||||
{
|
||||
HeadMaterials.Add(material);
|
||||
}
|
||||
@@ -245,7 +243,7 @@ namespace StructureHelper.Windows.ViewModels.PrimitiveProperties
|
||||
|
||||
private void EditMaterial()
|
||||
{
|
||||
var wnd = new HeadMaterialsView(headMaterialRepository);
|
||||
var wnd = new HeadMaterialsView(hasHeadMaterials);
|
||||
wnd.ShowDialog();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user