Add beam shear window

This commit is contained in:
Evgeny Redikultsev
2025-03-02 21:30:39 +05:00
parent e4a23f5139
commit 382ff6ed36
63 changed files with 886 additions and 134 deletions

View File

@@ -3,6 +3,7 @@ using StructureHelper.Models.Materials;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Loggers;
using StructureHelperCommon.Models.Materials;
using StructureHelperLogics.Models.CrossSections;
using StructureHelperLogics.Models.Materials;
using System;

View File

@@ -2,6 +2,7 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Loggers;
using StructureHelperCommon.Models.Materials;
using StructureHelperLogics.Models.CrossSections;
using StructureHelperLogics.Models.Materials;
using System;

View File

@@ -1,12 +1,7 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Services;
using StructureHelperLogics.Models.Materials;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataAccess.DTOs
{

View File

@@ -3,6 +3,7 @@ using StructureHelper.Models.Materials;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Materials;
using StructureHelperLogics.Models.Materials;
using System;
using System.CodeDom;

View File

@@ -3,6 +3,7 @@ using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Loggers;
using StructureHelperCommon.Models.Materials;
using StructureHelperLogics.Models.CrossSections;
using StructureHelperLogics.Models.Materials;
using StructureHelperLogics.Models.Materials.Logics;

View File

@@ -1,4 +1,5 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Services;
using StructureHelperLogics.Models.Materials;

View File

@@ -1,14 +1,10 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Loggers;
using StructureHelperLogics.Models.CrossSections;
using StructureHelperLogics.Models.Materials;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StructureHelperCommon.Models.Materials;
//Copyright (c) 2025 Redikultsev Evgeny, Ekaterinburg, Russia
//All rights reserved.
namespace DataAccess.DTOs
{

View File

@@ -2,13 +2,7 @@
using Newtonsoft.Json;
using StructureHelper.Models.Materials;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.Models.Materials;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StructureHelperCommon.Models.Materials;
using System.Windows.Media;
namespace DataAccess.DTOs

View File

@@ -6,6 +6,7 @@
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Infrastructure/UI/Resources/CommonEnums.xaml"/>
<ResourceDictionary Source="Infrastructure/UI/Resources/ContextMenus.xaml"/>
<ResourceDictionary Source="Infrastructure/UI/Styles.xaml"/>
<ResourceDictionary Source="Infrastructure/UI/Resources/DataGridStyles.xaml"/>
<ResourceDictionary Source="Infrastructure/UI/Resources/ButtonStyles.xaml"/>

View File

@@ -11,6 +11,7 @@ namespace StructureHelper.Infrastructure.Enums
ForceCalculator,
LimitCurveCalculator,
CrackCalculator,
FireCalculator
FireCalculator,
BeamShearCalculator
}
}

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 StirrupTypes
{
Density,
UniformRebar
}
}

View File

@@ -269,6 +269,20 @@
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="DistributedLoad">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Line X1="4" Y1="10" X2="28" Y2="10" Stroke="Black" StrokeThickness="1"/>
<Line X1="4" Y1="10" X2="4" Y2="20" Stroke="Black" StrokeThickness="1"/>
<Line X1="28" Y1="10" X2="28" Y2="20" Stroke="Black" StrokeThickness="1"/>
<Line X1="2" Y1="16" X2="4" Y2="20" Stroke="Black" StrokeThickness="1"/>
<Line X1="6" Y1="16" X2="4" Y2="20" Stroke="Black" StrokeThickness="1"/>
<Line X1="26" Y1="16" X2="28" Y2="20" Stroke="Black" StrokeThickness="1"/>
<Line X1="30" Y1="16" X2="28" Y2="20" Stroke="Black" StrokeThickness="1"/>
<Line X1="2" Y1="20" X2="30" Y2="20" Stroke="Black" StrokeThickness="2"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="Document">
<Canvas>
<Canvas.Children>
@@ -601,6 +615,25 @@
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="ShearRectangleSection">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Rectangle Canvas.Left="5" Canvas.Top="3" Width="22" Height="26" 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="ShearSectionTemplate">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Rectangle Canvas.Left="5" Canvas.Top="3" Width="22" Height="26" Fill="LightGray" Stroke ="Black"/>
<Rectangle Canvas.Left="8" Canvas.Top="6" Width="16" Height="20" Fill="LightGray" Stroke ="Black" RadiusX="2" RadiusY="2"/>
<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="ShowRebarsResult">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
@@ -627,6 +660,30 @@
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="StirrupDensity">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Line X1="2" Y1="8" X2="30" Y2="8" Stroke="Black" StrokeThickness="1"/>
<Line X1="2" Y1="24" X2="30" Y2="24" Stroke="Black" StrokeThickness="1"/>
<Line X1="4" Y1="6" X2="4" Y2="26" Stroke="Black" StrokeThickness="0.6"/>
<TextBlock Margin="7,9" Text="Den" FontWeight="Bold" FontSize="10" Background="White"/>
<Line X1="28" Y1="6" X2="28" Y2="26" Stroke="Black" StrokeThickness="0.6"/>
</Canvas.Children>
</Canvas>
</DataTemplate>
<DataTemplate x:Key="StirrupRebars">
<Canvas Style="{DynamicResource ButtonResultCanvas}">
<Canvas.Children>
<Line X1="2" Y1="8" X2="30" Y2="8" Stroke="Black" StrokeThickness="1"/>
<Line X1="2" Y1="24" X2="30" Y2="24" Stroke="Black" StrokeThickness="1"/>
<Line X1="4" Y1="6" X2="4" Y2="26" Stroke="Black" StrokeThickness="0.6"/>
<Line X1="10" Y1="6" X2="10" Y2="26" Stroke="Black" StrokeThickness="0.6"/>
<Line X1="16" Y1="6" X2="16" Y2="26" Stroke="Black" StrokeThickness="0.6"/>
<Line X1="22" Y1="6" X2="22" Y2="26" Stroke="Black" StrokeThickness="0.6"/>
<Line X1="28" Y1="6" X2="28" Y2="26" Stroke="Black" StrokeThickness="0.6"/>
</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>

View File

@@ -0,0 +1,45 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ContextMenu x:Key="EditCopyDelete">
<MenuItem Header="Edit" Command="{Binding Edit}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Edit.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Copy" Command="{Binding Copy}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Copy.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Delete" Command="{Binding Delete}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Delete.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
<ContextMenu x:Key="AnalisesCRUD">
<MenuItem Header="Run" Command="{Binding Run}">
<MenuItem.Icon>
<Viewbox Width="16" Height="16">
<ContentControl ContentTemplate="{DynamicResource CalculatorRun}"/>
</Viewbox>
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="Edit" Command="{Binding Edit}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Edit.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Copy" Command="{Binding Copy}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Copy.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Delete" Command="{Binding Delete}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Delete.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</ResourceDictionary>

View File

@@ -12,6 +12,9 @@
<Compile Update="Windows\Arrays\ArrayView.xaml.cs">
<SubType>Code</SubType>
</Compile>
<Compile Update="Windows\BeamShears\BeamShearView.xaml.cs">
<SubType>Code</SubType>
</Compile>
<Compile Update="Windows\CalculationWindows\CalculatorsViews\Cracks\CrackCalculatorInputDataView.xaml.cs">
<SubType>Code</SubType>
</Compile>
@@ -107,6 +110,9 @@
</Compile>
</ItemGroup>
<ItemGroup>
<Page Update="Infrastructure\UI\Resources\ContextMenus.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="Infrastructure\UI\Resources\Cracks.xaml">
<SubType>Designer</SubType>
</Page>
@@ -134,6 +140,9 @@
<Page Update="Windows\Arrays\ArrayView.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="Windows\BeamShears\BeamShearView.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="Windows\CalculationWindows\CalculatorsViews\Cracks\CrackCalculatorInputDataView.xaml">
<SubType>Designer</SubType>
</Page>

View File

@@ -0,0 +1,22 @@
using StructureHelper.Windows.ViewModels;
using StructureHelperCommon.Models.Forces;
using StructureHelperLogics.Models.BeamShears;
using System.Collections.Generic;
namespace StructureHelper.Windows.BeamShears
{
public class BeamShearActionsViewModel : SelectItemVM<IBeamShearAction>
{
private readonly IBeamShearRepository shearRepository;
public BeamShearActionsViewModel(IBeamShearRepository shearRepository) : base(shearRepository.BeamShearActions)
{
this.shearRepository = shearRepository;
}
public override void DeleteMethod(object parameter)
{
shearRepository.DeleteAction(SelectedItem);
base.DeleteMethod(parameter);
}
}
}

View File

@@ -0,0 +1,19 @@
using StructureHelper.Windows.ViewModels;
using StructureHelperLogics.Models.BeamShears;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelper.Windows.BeamShears
{
public class BeamShearCalculatorViewModel : OkCancelViewModelBase
{
private IBeamShearCalculator calculator;
public BeamShearCalculatorViewModel(IBeamShearCalculator calculator)
{
this.calculator = calculator;
}
}
}

View File

@@ -0,0 +1,99 @@
using StructureHelper.Infrastructure;
using StructureHelper.Infrastructure.Enums;
using StructureHelper.Windows.ViewModels;
using StructureHelper.Windows.ViewModels.Errors;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Calculators;
using StructureHelperLogics.Models.BeamShears;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Input;
namespace StructureHelper.Windows.BeamShears
{
public class BeamShearCalculatorsViewModel : SelectItemVM<ICalculator>
{
private object parameter;
private readonly IBeamShearRepository shearRepository;
private RelayCommand runCommand;
public ICommand Run
{
get
{
return runCommand ??
(
runCommand = new RelayCommand(param =>
{
RunMethod(param);
}
));
}
}
public override void AddMethod(object parameter)
{
this.parameter = parameter;
SafetyProcessor.RunSafeProcess(AddCalculator, "Error of creating calculator");
}
public override void EditMethod(object parameter)
{
SafetyProcessor.RunSafeProcess(EditCalculator, $"Error of calculator {SelectedItem.Name}");
base.EditMethod(parameter);
}
public BeamShearCalculatorsViewModel(IBeamShearRepository shearRepository) : base(shearRepository.Calculators)
{
this.shearRepository = shearRepository;
}
private void AddCalculator()
{
if (parameter is CalculatorTypes.BeamShearCalculator)
{
NewItem = new BeamShearCalculator(Guid.NewGuid())
{
Name = "New shear calculator",
TraceLogger = new ShiftTraceLogger()
};
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(parameter));
}
base.AddMethod(parameter);
}
private void EditCalculator()
{
if (SelectedItem is IBeamShearCalculator beamShearCalculator)
{
//to do
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(SelectedItem));
}
}
private void RunMethod(object param)
{
SafetyProcessor.RunSafeProcess(RunCalculator, $"Error of calculator {SelectedItem.Name}");
}
private void RunCalculator()
{
if (SelectedItem is IBeamShearCalculator beamShearCalculator)
{
beamShearCalculator.Run();
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(SelectedItem));
}
}
}
}

View File

@@ -0,0 +1,25 @@
using StructureHelper.Windows.ViewModels;
using StructureHelperLogics.Models.BeamShears;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace StructureHelper.Windows.BeamShears
{
public class BeamShearSectionsViewModel : SelectItemVM<IBeamShearSection>
{
IBeamShearRepository shearRepository;
public BeamShearSectionsViewModel(IBeamShearRepository shearRepository) : base(shearRepository.ShearSections)
{
this.shearRepository = shearRepository;
}
public override void DeleteMethod(object parameter)
{
shearRepository.DeleteSection(SelectedItem);
base.DeleteMethod(parameter);
}
}
}

View File

@@ -0,0 +1,169 @@
<Window x:Class="StructureHelper.Windows.BeamShears.BeamShearView"
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:uc="clr-namespace:StructureHelper.Windows.UserControls"
xmlns:local="clr-namespace:StructureHelper.Windows.BeamShears"
xmlns:enums="clr-namespace:StructureHelper.Infrastructure.Enums"
d:DataContext="{d:DesignInstance local:BeamShearViewModel}"
mc:Ignorable="d"
Title="Beam Shear Analysis" Height="450" Width="800" MinHeight="250" MinWidth="400" MaxHeight="1000" MaxWidth="1500" WindowStartupLocation="CenterScreen">
<DockPanel>
<ToolBarTray DockPanel.Dock="Top">
<ToolBar ToolTip="Actions">
<Button Style="{StaticResource ToolButton}"
Command="{Binding FileOpen}">
<Button.ToolTip>
<uc:ButtonToolTipEh HeaderText="Shear action"
IconContent="{StaticResource DistributedLoad}"
DescriptionText="Add beam shear action"/>
</Button.ToolTip>
<Viewbox>
<ContentControl ContentTemplate="{DynamicResource DistributedLoad}"/>
</Viewbox>
</Button>
</ToolBar>
<ToolBar ToolTip="Sections">
<Button Style="{StaticResource ToolButton}"
Command="{Binding FileOpen}">
<Button.ToolTip>
<uc:ButtonToolTipEh HeaderText="Rectangle section"
IconContent="{StaticResource ShearRectangleSection}"
DescriptionText="Add rectangle shear section (height, width, strength)"/>
</Button.ToolTip>
<Viewbox>
<ContentControl ContentTemplate="{DynamicResource ShearRectangleSection}"/>
</Viewbox>
</Button>
</ToolBar>
<ToolBar ToolTip="Stirrups" DataContext="{Binding Stirrups}">
<Button Style="{StaticResource ToolButton}"
Command="{Binding Add}"
CommandParameter="{x:Static enums:StirrupTypes.Density}">
<Button.ToolTip>
<uc:ButtonToolTipEh HeaderText="Add stirrups by density"
IconContent="{StaticResource StirrupDensity}"
DescriptionText="Add uniformly distributed stirrups by value of density"/>
</Button.ToolTip>
<Viewbox>
<ContentControl ContentTemplate="{DynamicResource StirrupDensity}"/>
</Viewbox>
</Button>
<Button Style="{StaticResource ToolButton}"
Command="{Binding Add}"
CommandParameter="{x:Static enums:StirrupTypes.UniformRebar}">
<Button.ToolTip>
<uc:ButtonToolTipEh HeaderText="Open file"
IconContent="{StaticResource StirrupRebars}"
DescriptionText="Add uniformly distributed stirrups by rebars (step, diameter, strength)"/>
</Button.ToolTip>
<Viewbox>
<ContentControl ContentTemplate="{DynamicResource StirrupRebars}"/>
</Viewbox>
</Button>
</ToolBar>
<ToolBar ToolTip="Calculators">
<Button Style="{StaticResource ToolButton}"
Command="{Binding FileOpen}">
<Button.ToolTip>
<uc:ButtonToolTipEh HeaderText="Open file"
IconContent="{StaticResource FileOpen}"
DescriptionText="Open exsisting project from file"/>
</Button.ToolTip>
<Viewbox>
<ContentControl ContentTemplate="{DynamicResource FileOpen}"/>
</Viewbox>
</Button>
</ToolBar>
<ToolBar ToolTip="Templates">
<Button Style="{StaticResource ToolButton}"
Command="{Binding AddTemplate}">
<Button.ToolTip>
<uc:ButtonToolTipEh HeaderText="Open file"
IconContent="{StaticResource ShearSectionTemplate}"
DescriptionText="Create rectangle section by template"/>
</Button.ToolTip>
<Viewbox>
<ContentControl ContentTemplate="{DynamicResource ShearSectionTemplate}"/>
</Viewbox>
</Button>
</ToolBar>
</ToolBarTray>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="25"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="0"/>
</Grid.ColumnDefinitions>
<ScrollViewer>
<StackPanel>
<Expander Header="Actions" DataContext="{Binding Actions}">
</Expander>
<Expander Header="Cross-Sections" DataContext="{Binding Sections}">
</Expander>
<Expander Header="Stirrups" DataContext="{Binding Stirrups}">
<Expander.ContextMenu>
<ContextMenu>
<MenuItem Header="Add">
<MenuItem Header="Uniformly distributed density" Command="{Binding Add}" CommandParameter="{x:Static enums:StirrupTypes.Density}">
<MenuItem.Icon>
<Viewbox Height="24" Width="24">
<ContentControl ContentTemplate="{DynamicResource StirrupDensity}"/>
</Viewbox>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Uniformly distributed rebars" Command="{Binding Add}" CommandParameter="{x:Static enums:StirrupTypes.UniformRebar}">
<MenuItem.Icon>
<Viewbox Height="24" Width="24">
<ContentControl ContentTemplate="{DynamicResource StirrupRebars}"/>
</Viewbox>
</MenuItem.Icon>
</MenuItem>
</MenuItem>
</ContextMenu>
</Expander.ContextMenu>
<ListBox ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" ContextMenu="{StaticResource EditCopyDelete}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Name}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Expander>
<Expander Header="Calculators" DataContext="{Binding Calculators}">
<Expander.ContextMenu>
<ContextMenu>
<MenuItem Header="Add">
<MenuItem Header="Beam Shear Calculator" Command="{Binding Add}" CommandParameter="{x:Static enums:CalculatorTypes.BeamShearCalculator}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Calculator32.png" />
</MenuItem.Icon>
</MenuItem>
</MenuItem>
</ContextMenu>
</Expander.ContextMenu>
<ListBox ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" ContextMenu="{StaticResource AnalisesCRUD}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Name}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Expander>
</StackPanel>
</ScrollViewer>
</Grid>
</Grid>
</DockPanel>
</Window>

View File

@@ -0,0 +1,31 @@
using StructureHelperLogics.Models.Analyses;
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.BeamShears
{
/// <summary>
/// Interaction logic for BeamShearView.xaml
/// </summary>
public partial class BeamShearView : Window
{
private BeamShearViewModel viewModel;
public BeamShearView(BeamShearViewModel viewModel)
{
InitializeComponent();
this.viewModel = viewModel;
this.DataContext = this.viewModel;
}
}
}

View File

@@ -0,0 +1,70 @@
using StructureHelper.Infrastructure;
using StructureHelperLogics.Models.Analyses;
using StructureHelperLogics.Models.BeamShears;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace StructureHelper.Windows.BeamShears
{
public class BeamShearViewModel : ViewModelBase
{
private IBeamShear beamShear;
private IBeamShearRepository repository;
private RelayCommand addTemplateCommand;
public BeamShearActionsViewModel Actions {get; private set;}
public BeamShearSectionsViewModel Sections { get; private set; }
public BeamStirrupsViewModel Stirrups { get; private set; }
public BeamShearCalculatorsViewModel Calculators { get; private set; }
public ICommand AddTemplate
{
get
{
return addTemplateCommand ??
(
addTemplateCommand = new RelayCommand(param =>
{
AddTemplateMethod(param);
}
));
}
}
private void AddTemplateMethod(object param)
{
var templateRepository = BeamShearTemplatesFactory.GetTemplateRepository(ShearSectionTemplateTypes.Rectangle);
var updateStrategy = new BeamShearRepositoryAddUpdateStrategy();
updateStrategy.Update(repository, templateRepository);
Refresh();
}
private void Refresh()
{
Actions.Refresh();
Sections.Refresh();
Stirrups.Refresh();
Calculators.Refresh();
}
public BeamShearViewModel(IBeamShear beamShear)
{
this.beamShear = beamShear;
repository = beamShear.Repository;
InitializeSubModels();
}
private void InitializeSubModels()
{
Actions = new (repository);
Sections = new (repository);
Stirrups = new (repository);
Calculators = new (repository);
}
}
}

View File

@@ -0,0 +1,25 @@
using StructureHelper.Windows.ViewModels;
using StructureHelperLogics.Models.BeamShears;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelper.Windows.BeamShears
{
public class BeamStirrupsViewModel : SelectItemVM<IStirrup>
{
private readonly IBeamShearRepository shearRepository;
public BeamStirrupsViewModel(IBeamShearRepository shearRepository) : base(shearRepository.Stirrups)
{
this.shearRepository = shearRepository;
}
public override void DeleteMethod(object parameter)
{
shearRepository.DeleteStirrup(SelectedItem);
base.DeleteMethod(parameter);
}
}
}

View File

@@ -1,5 +1,6 @@
using StructureHelper.Infrastructure;
using StructureHelper.Infrastructure.Enums;
using StructureHelper.Windows.BeamShears;
using StructureHelper.Windows.MainWindow.Analyses;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
@@ -7,6 +8,7 @@ using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Models.Analyses;
using StructureHelperLogic.Models.Analyses;
using StructureHelperLogics.Models.Analyses;
using StructureHelperLogics.Models.BeamShears;
using StructureHelperLogics.Models.CrossSections;
using System;
using System.Collections.Generic;
@@ -220,12 +222,23 @@ namespace StructureHelper.Windows.MainWindow
{
ProcessCrossSection(crossSection);
}
else if (version.AnalysisVersion is IBeamShear beamShear)
{
ProcessBeamShear(beamShear);
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(version));
}
}
private void ProcessBeamShear(IBeamShear beamShear)
{
BeamShearViewModel viewModel = new BeamShearViewModel(beamShear);
var window = new BeamShearView(viewModel);
window.ShowDialog();
}
private void ProcessCrossSection(ICrossSection crossSection)
{
var window = new CrossSectionView(crossSection);

View File

@@ -15,7 +15,7 @@
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:CrossSectionViewModel}"
Title="StructureHelper" Height="700" Width="1000" MinHeight="400" MinWidth="600" WindowStartupLocation="CenterScreen">
Title="Cross-Section NDM Analysis" Height="700" Width="1000" MinHeight="400" MinWidth="600" WindowStartupLocation="CenterScreen">
<Window.Resources>
<DataTemplate DataType="{x:Type dataContexts:RectangleViewPrimitive}">
<dataTemplates:RectangleTemplate/>
@@ -27,48 +27,6 @@
<dataTemplates:EllipseTemplate/>
</DataTemplate>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
<ContextMenu x:Key="EditCopyDelete">
<MenuItem Header="Edit" Command="{Binding Edit}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Edit.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Copy" Command="{Binding Copy}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Copy.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Delete" Command="{Binding Delete}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Delete.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
<ContextMenu x:Key="AnalisesCRUD">
<MenuItem Header="Run" Command="{Binding Run}">
<MenuItem.Icon>
<Viewbox Width="16" Height="16">
<ContentControl ContentTemplate="{DynamicResource CalculatorRun}"/>
</Viewbox>
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="Edit" Command="{Binding Edit}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Edit.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Copy" Command="{Binding Copy}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Copy.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Delete" Command="{Binding Delete}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Delete.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</Window.Resources>
<DockPanel>
<ToolBarTray DockPanel.Dock="Top">
@@ -287,7 +245,7 @@
</Expander.Header>
<Expander.ContextMenu>
<ContextMenu>
<MenuItem Header="Add" Command="{Binding Add}" CommandParameter="{x:Static enums:CalculatorTypes.ForceCalculator}">
<MenuItem Header="Add">
<MenuItem Header="Add Force Calculator" Command="{Binding Add}" CommandParameter="{x:Static enums:CalculatorTypes.ForceCalculator}">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Windows/MainWindow/Calculator32.png" />

View File

@@ -1,6 +1,7 @@
using StructureHelper.Models.Materials;
using StructureHelper.Windows.ViewModels.Materials;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models.Materials;
using StructureHelperLogics.Models.Materials;
using System;
using System.Collections.Generic;

View File

@@ -3,6 +3,7 @@ using StructureHelper.Infrastructure;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperLogics.Models.Materials;
using System;

View File

@@ -2,6 +2,7 @@
using StructureHelper.Models.Materials;
using StructureHelper.Windows.AddMaterialWindow;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Services.ColorServices;
using StructureHelperLogics.Models.Materials;

View File

@@ -6,6 +6,7 @@ using StructureHelper.Windows.MainWindow;
using StructureHelper.Windows.MainWindow.Materials;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Services.ColorServices;
using StructureHelperLogics.Models.Materials;

View File

@@ -1,6 +1,7 @@
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Models.Codes;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperLogics.Models.Materials;
using System;

View File

@@ -13,5 +13,6 @@ namespace StructureHelperCommon.Infrastructures.Interfaces
public interface IHasBeamShearActions
{
List<IBeamShearAction> BeamShearActions { get; }
void DeleteAction(IBeamShearAction action);
}
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Materials
{
public interface IDirectMaterialStrength
{
}
}

View File

@@ -1,7 +1,7 @@
using StructureHelperCommon.Models.Materials.Libraries;
using System.Collections.Generic;
namespace StructureHelperLogics.Models.Materials
namespace StructureHelperCommon.Models.Materials
{
public interface IHasSafetyFactors
{

View File

@@ -1,7 +1,7 @@
using LoaderCalculator.Data.Materials;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.Models.Materials;
using StructureHelperCommon.Models.Materials;
using System;
using System.Windows.Media;

View File

@@ -1,13 +1,9 @@
using LoaderCalculator.Data.Materials;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperLogics.Models.Materials;
using System;
using System.Collections.Generic;
using System.Text;
namespace StructureHelperLogics.Models.Materials
namespace StructureHelperCommon.Models.Materials
{
public interface IHelperMaterial : ISaveable, ICloneable, IHasSafetyFactors
{

View File

@@ -1,18 +1,20 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperLogics.Models.Materials;
using System;
using System.Collections.Generic;
using System.Text;
namespace StructureHelperLogics.Models.Materials
//Copyright (c) 2025 Redikultsev Evgeny, Ekaterinburg, Russia
//All rights reserved.
namespace StructureHelperCommon.Models.Materials
{
public interface ILibMaterial : IHelperMaterial
/// <summary>
/// Implements logic for library material
/// </summary>
public interface ILibMaterial : IHelperMaterial, IMaterialStrength
{
ILibMaterialEntity MaterialEntity { get; set; }
IMaterialLogic MaterialLogic { get; set; }
List<IMaterialLogic> MaterialLogics { get; }
(double Compressive, double Tensile) GetStrength(LimitStates limitState, CalcTerms calcTerm);
}
}

View File

@@ -0,0 +1,9 @@
using StructureHelperCommon.Infrastructures.Enums;
namespace StructureHelperCommon.Models.Materials
{
public interface IMaterialStrength
{
(double Compressive, double Tensile) GetStrength(LimitStates limitState, CalcTerms calcTerm);
}
}

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 StructureHelperCommon.Models.Materials
{
public interface IMaterialStrengthByLibMaterial : ISaveable, ICloneable, IMaterialStrength
{
ILibMaterial LibMaterial { get; }
}
}

View File

@@ -0,0 +1,33 @@
using StructureHelperCommon.Infrastructures.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Materials
{
public class MaterialStrengthByLibMaterial : IMaterialStrengthByLibMaterial
{
public Guid Id { get; }
public ILibMaterial LibMaterial { get; }
public MaterialStrengthByLibMaterial(Guid id, ILibMaterial libMaterial)
{
Id = id;
LibMaterial = libMaterial;
}
public (double Compressive, double Tensile) GetStrength(LimitStates limitState, CalcTerms calcTerm)
{
return LibMaterial.GetStrength(limitState, calcTerm);
}
public object Clone()
{
throw new NotImplementedException();
}
}
}

View File

@@ -20,4 +20,8 @@
</Reference>
</ItemGroup>
<ItemGroup>
<Folder Include="Models\BeamShears\" />
</ItemGroup>
</Project>

View File

@@ -9,10 +9,10 @@ using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
internal class BeamShearCalculator : IBeamShearCalculator
public class BeamShearCalculator : IBeamShearCalculator
{
private ICheckInputDataLogic<IBeamShearCalculatorInputData> checkInputDataLogic;
IGetResultByInputDataLogic<IBeamShearCalculatorInputData, IBeamShearCalculatorResult> calculationLogic;
private IGetResultByInputDataLogic<IBeamShearCalculatorInputData, IBeamShearCalculatorResult> calculationLogic;
private IBeamShearCalculatorResult result;
public Guid Id { get; }
@@ -23,6 +23,10 @@ namespace StructureHelperLogics.Models.BeamShears
public IShiftTraceLogger? TraceLogger { get; set; }
public BeamShearCalculator(Guid id)
{
Id = id;
}
public object Clone()
{

View File

@@ -26,5 +26,19 @@ namespace StructureHelperLogics.Models.BeamShears
Id = id;
}
public void DeleteAction(IBeamShearAction action)
{
//nothing to do
}
public void DeleteSection(IBeamShearSection section)
{
//nothing to do
}
public void DeleteStirrup(IStirrup stirrup)
{
//nothing to do
}
}
}

View File

@@ -1,4 +1,5 @@
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Forces;
using System;
using System.Collections.Generic;
@@ -13,7 +14,7 @@ namespace StructureHelperLogics.Models.BeamShears
public Guid Id { get; }
public List<IBeamShearAction> BeamShearActions {get;}
public List<IBeamShearAction> BeamShearActions { get; } = new();
public List<ICalculator> Calculators { get; } = new();
@@ -44,5 +45,48 @@ namespace StructureHelperLogics.Models.BeamShears
{
throw new NotImplementedException();
}
public void DeleteSection(IBeamShearSection section)
{
foreach (var calculator in Calculators)
{
if (calculator is IBeamShearCalculator beamShearCalculator)
{
if (beamShearCalculator.InputData.ShearSections.Contains(section))
{
beamShearCalculator.InputData.DeleteSection(section);
beamShearCalculator.InputData.ShearSections.Remove(section);
}
}
}
}
public void DeleteAction(IBeamShearAction action)
{
foreach (var calculator in Calculators)
{
if (calculator is IBeamShearCalculator beamShearCalculator)
{
if (beamShearCalculator.InputData.BeamShearActions.Contains(action))
{
beamShearCalculator.InputData.DeleteAction(action);
beamShearCalculator.InputData.BeamShearActions.Remove(action);
}
}
}
}
public void DeleteStirrup(IStirrup stirrup)
{
foreach (var calculator in Calculators)
{
if (calculator is IBeamShearCalculator beamShearCalculator)
{
if (beamShearCalculator.InputData.Stirrups.Contains(stirrup))
{
beamShearCalculator.InputData.DeleteStirrup(stirrup);
beamShearCalculator.InputData.Stirrups.Remove(stirrup);
}
}
}
}
}
}

View File

@@ -1,10 +1,6 @@
using StructureHelperCommon.Models.Shapes;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Shapes;
using StructureHelperLogics.Models.Materials;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
@@ -12,16 +8,17 @@ namespace StructureHelperLogics.Models.BeamShears
{
public Guid Id { get; }
public string? Name { get; set; }
public IConcreteLibMaterial Material { get; set; }
public IShape Shape { get; }
/// <inheritdoc/>
public IMaterialStrength MaterialStrength { get; } = new MaterialStrengthByLibMaterial(Guid.NewGuid(), new ConcreteLibMaterial(Guid.NewGuid()));
/// <inheritdoc/>
public IShape Shape { get; } = new RectangleShape(Guid.NewGuid()) { Height = 0.6, Width = 0.4};
public double CenterCover { get; set; }
public BeamShearSection(Guid id, IShape shape)
public BeamShearSection(Guid id)
{
Id = id;
Shape = shape;
}
public object Clone()

View File

@@ -0,0 +1,43 @@
using StructureHelperCommon.Infrastructures.Exceptions;
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 enum ShearSectionTemplateTypes
{
Rectangle,
}
public static class BeamShearTemplatesFactory
{
public static IBeamShearRepository GetTemplateRepository(ShearSectionTemplateTypes templateType)
{
if (templateType is ShearSectionTemplateTypes.Rectangle)
{
return GetRectangleSection();
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(templateType));
}
}
private static IBeamShearRepository GetRectangleSection()
{
BeamShearRepository shearRepository = new(Guid.Empty);
BeamShearSection section = new(Guid.Empty) { Name = "New shear section"};
shearRepository.ShearSections.Add(section);
StirrupByUniformRebar stirrupByUniformRebar = new(Guid.Empty) { Name = "New uniform stirrup"};
shearRepository.Stirrups.Add(stirrupByUniformRebar);
BeamShearCalculator beamShearCalculator = new(Guid.Empty) { Name = "New shear calculator"};
beamShearCalculator.InputData.ShearSections.Add(section);
beamShearCalculator.InputData.Stirrups.Add(stirrupByUniformRebar);
shearRepository.Calculators.Add(beamShearCalculator);
return shearRepository;
}
}
}

View File

@@ -1,4 +1,5 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Shapes;
using StructureHelperLogics.Models.Materials;
using System;
@@ -18,7 +19,7 @@ namespace StructureHelperLogics.Models.BeamShears
/// <summary>
/// Concrete of cross-section
/// </summary>
IConcreteLibMaterial Material { get; set; }
IMaterialStrength MaterialStrength { get;}
/// <summary>
/// Shape of cross-section
/// </summary>

View File

@@ -9,5 +9,6 @@ namespace StructureHelperLogics.Models.BeamShears
public interface IHasBeamShearSections
{
List<IBeamShearSection> ShearSections { get; }
void DeleteSection(IBeamShearSection section);
}
}

View File

@@ -9,5 +9,6 @@ namespace StructureHelperLogics.Models.BeamShears
public interface IHasStirrups
{
List<IStirrup> Stirrups { get; }
void DeleteStirrup(IStirrup stirrup);
}
}

View File

@@ -0,0 +1,20 @@
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Services;
namespace StructureHelperLogics.Models.BeamShears
{
public class BeamShearRepositoryAddUpdateStrategy : IUpdateStrategy<IBeamShearRepository>
{
public void Update(IBeamShearRepository targetObject, IBeamShearRepository sourceObject)
{
CheckObject.IsNull(sourceObject, ErrorStrings.SourceObject);
CheckObject.IsNull(targetObject, ErrorStrings.TargetObject);
if (ReferenceEquals(targetObject, sourceObject)) { return; };
targetObject.BeamShearActions.AddRange(sourceObject.BeamShearActions);
targetObject.ShearSections.AddRange(sourceObject.ShearSections);
targetObject.Stirrups.AddRange(sourceObject.Stirrups);
targetObject.Calculators.AddRange(sourceObject.Calculators);
}
}
}

View File

@@ -12,6 +12,7 @@ namespace StructureHelperLogics.Models.BeamShears
{
/// <inheritdoc/>
public Guid Id { get; }
public string? Name { get; set; }
/// <inheritdoc/>
public IReinforcementLibMaterial Material { get; set; }
@@ -24,6 +25,10 @@ namespace StructureHelperLogics.Models.BeamShears
/// <inheritdoc/>
public double CompressedGap { get; set; } = 0;
public StirrupByUniformRebar(Guid id)
{
Id = id;
}
public object Clone()
{

View File

@@ -1,16 +1,10 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using LoaderCalculator.Data.Materials;
using LoaderCalculator.Data.Materials;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Services.ColorServices;
using StructureHelperLogics.Models.Materials;
using System.ComponentModel;
using System.Windows.Media;
namespace StructureHelper.Models.Materials
{

View File

@@ -6,8 +6,16 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
//Copyright (c) 2025 Redikultsev Evgeny, Ekaterinburg, Russia
//All rights reserved.
namespace StructureHelperLogics.Models.Materials
{
/// <summary>
/// Implements logic for library concrete material
/// </summary>
public interface IConcreteLibMaterial : ILibMaterial, ICrackedMaterial
{
/// <summary>

View File

@@ -1,4 +1,5 @@
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using System;
using System.Collections.Generic;
using System.Linq;

View File

@@ -1,4 +1,5 @@
using System;
using StructureHelperCommon.Models.Materials;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

View File

@@ -1,10 +1,6 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.Materials
{

View File

@@ -1,5 +1,6 @@
using StructureHelper.Models.Materials;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Services;
namespace StructureHelperLogics.Models.Materials

View File

@@ -1,4 +1,5 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Services;
using System;

View File

@@ -1,5 +1,6 @@
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Services;
using StructureHelperLogics.Models.Materials.Logics;

View File

@@ -1,11 +1,9 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Models.Materials;
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.Materials
{

View File

@@ -1,10 +1,9 @@
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials;
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.Materials
{

View File

@@ -1,17 +1,12 @@
using LoaderCalculator.Data.Materials;
using StructureHelper.Models.Materials;
using StructureHelper.Models.Materials;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperCommon.Models.Tables;
using StructureHelperLogics.NdmCalculations.Primitives;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Documents;
using System.Windows.Shapes;
//Copyright (c) 2025 Redikultsev Evgeny, Ekaterinburg, Russia
//All rights reserved.
namespace StructureHelperLogics.Models.Materials
{

View File

@@ -1,6 +1,7 @@
using NUnit.Framework;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Models.Materials;
using StructureHelperLogics.Models.Materials;
namespace StructureHelperTests.UnitTests.MaterialTests

View File

@@ -2,6 +2,7 @@
using NUnit.Framework;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials;
using StructureHelperLogics.Models.Materials;
using System;

View File

@@ -4,6 +4,7 @@ using StructureHelper.Models.Materials;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Materials.Libraries;
using StructureHelperLogics.Models.Materials;
using System;