diff --git a/.gitignore b/.gitignore
index d596b37..95c0a05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
*\bin
*\packages
*\.vs
+**\publish
diff --git a/App.config b/App.config
deleted file mode 100644
index 69b16fd..0000000
--- a/App.config
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/FieldVisualizer/FieldVisualizer.csproj b/FieldVisualizer/FieldVisualizer.csproj
index 018e535..529ae38 100644
--- a/FieldVisualizer/FieldVisualizer.csproj
+++ b/FieldVisualizer/FieldVisualizer.csproj
@@ -1,16 +1,11 @@
- net472
+ net6.0-windows10.0.18362.0
+ enable
true
- Library
+ disable
+ 10.0.18362.0
-
-
-
-
-
-
-
diff --git a/FieldVisualizer/FieldVisualizer.csproj.user b/FieldVisualizer/FieldVisualizer.csproj.user
index ef6a2d2..88a5509 100644
--- a/FieldVisualizer/FieldVisualizer.csproj.user
+++ b/FieldVisualizer/FieldVisualizer.csproj.user
@@ -1,29 +1,4 @@
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
-
- Designer
-
-
- Designer
-
-
- Designer
-
-
- Designer
-
-
\ No newline at end of file
diff --git a/FiledVisualzerDemo/FieldVisualzerDemo.csproj b/FiledVisualzerDemo/FieldVisualzerDemo.csproj
index e7df97a..cd9acb3 100644
--- a/FiledVisualzerDemo/FieldVisualzerDemo.csproj
+++ b/FiledVisualzerDemo/FieldVisualzerDemo.csproj
@@ -81,11 +81,5 @@
-
-
- {87064b50-3b7c-4a91-af4a-941c6f95d997}
- FieldVisualizer
-
-
\ No newline at end of file
diff --git a/StructureHelper.csproj b/StructureHelper.csproj
deleted file mode 100644
index 14efb18..0000000
--- a/StructureHelper.csproj
+++ /dev/null
@@ -1,473 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {BAD27E27-4444-4300-ADF8-E21042C0781D}
- WinExe
- StructureHelper
- StructureHelper
- v4.7.2
- 512
- {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 4
- true
- true
-
- false
- publish\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 1
- 1.0.0.%2a
- false
- true
- true
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
- On
- true
-
-
- 485E3BCF396A57578712F0EAAD11D48E4FE19BD6
-
-
- StructureHelper_TemporaryKey.pfx
-
-
- true
-
-
- true
-
-
-
- packages\Autofac.6.4.0\lib\netstandard2.0\Autofac.dll
-
-
- False
- Libraries\LoaderCalculator.dll
-
-
- packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll
- True
-
-
- packages\System.Windows.Interactivity.WPF.2.0.20525\lib\net40\Microsoft.Expression.Interactions.dll
-
-
- packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll
- True
-
-
-
- packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
-
-
-
- packages\System.Diagnostics.DiagnosticSource.6.0.0\lib\net461\System.Diagnostics.DiagnosticSource.dll
- True
-
-
-
- packages\System.Memory.4.5.5\lib\net461\System.Memory.dll
- True
-
-
-
- packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
-
-
- packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
- True
-
-
- packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll
- True
-
-
-
- packages\System.Windows.Interactivity.WPF.2.0.20525\lib\net40\System.Windows.Interactivity.dll
-
-
-
-
-
-
-
-
- 4.0
-
-
-
-
-
-
-
- MSBuild:Compile
- Designer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PrimitivePopup.xaml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- AddMaterialView.xaml
-
-
-
- App.xaml
- Code
-
-
- SetPrestrainView.xaml
-
-
- InterpolateTuplesView.xaml
-
-
- PartialFactorsView.xaml
-
-
- SafetyFactorsView.xaml
-
-
- CalculationPropertyView.xaml
-
-
- CalculationResultView.xaml
-
-
- ForceCalculatorView.xaml
-
-
- ForcesResultsView.xaml
-
-
- SourceToTargetControl.xaml
-
-
- ColorPickerView.xaml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- EllipseTemplate.xaml
-
-
- ForceCombinationView.xaml
-
-
- ForceTupleControl.xaml
-
-
-
-
-
-
- RectangleTemplate.xaml
-
-
- HeadMaterialsView.xaml
-
-
- VisualPropertyView.xaml
-
-
- PrimitivePropertiesView.xaml
-
-
- SelectPrimitivesView.xaml
-
-
- RectangleBeamView.xaml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
-
-
-
-
-
- {87064B50-3B7C-4A91-AF4A-941C6F95D997}
- FieldVisualizer
-
-
- {5dfec3fd-9677-47bb-9e88-eb71828b5913}
- StructureHelperCommon
-
-
- {330bef5b-15be-4d2c-a750-b1ae50fb2be3}
- StructureHelperLogics
-
-
-
-
- False
- Microsoft .NET Framework 4.7.2 %28x86 и x64%29
- true
-
-
- False
- .NET Framework 3.5 SP1
- false
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/StructureHelper.csproj.user b/StructureHelper.csproj.user
deleted file mode 100644
index 1bbb2f7..0000000
--- a/StructureHelper.csproj.user
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- publish\
-
-
-
-
-
- ru-RU
- false
-
-
- false
-
-
\ No newline at end of file
diff --git a/StructureHelper.sln b/StructureHelper.sln
index dd8c1da..5d89334 100644
--- a/StructureHelper.sln
+++ b/StructureHelper.sln
@@ -3,54 +3,48 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.2.32630.192
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureHelper", "StructureHelper.csproj", "{BAD27E27-4444-4300-ADF8-E21042C0781D}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureHelperTests", "StructureHelperTests\StructureHelperTests.csproj", "{7AC480BB-8A34-4913-B7AA-C6A5D7F35509}"
- ProjectSection(ProjectDependencies) = postProject
- {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3} = {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}
- EndProjectSection
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StructureHelperLogics", "StructureHelperLogics\StructureHelperLogics.csproj", "{330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}"
- ProjectSection(ProjectDependencies) = postProject
- {5DFEC3FD-9677-47BB-9E88-EB71828B5913} = {5DFEC3FD-9677-47BB-9E88-EB71828B5913}
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureHelperCommon", "StructureHelperCommon\StructureHelperCommon.csproj", "{5DFEC3FD-9677-47BB-9E88-EB71828B5913}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FieldVisualizer", "FieldVisualizer\FieldVisualizer.csproj", "{87064B50-3B7C-4A91-AF4A-941C6F95D997}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FieldVisualzerDemo", "FiledVisualzerDemo\FieldVisualzerDemo.csproj", "{C92A5F2E-567B-48C9-A524-5740DB03509D}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StructureHelper", "StructureHelper\StructureHelper.csproj", "{271311DE-67EE-4EE8-93EA-EA8BFD366EC6}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StructureHelperCommon", "StructureHelperCommon\StructureHelperCommon.csproj", "{F1548BD2-7FE8-46C2-9BC4-9BA813A5C59A}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StructureHelperLogics", "StructureHelperLogics\StructureHelperLogics.csproj", "{C9192AE7-EE6D-409C-A05C-3549D78CBB34}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FieldVisualizer", "FieldVisualizer\FieldVisualizer.csproj", "{6CAC5B83-81F3-47C2-92A1-0F94A58491C2}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {BAD27E27-4444-4300-ADF8-E21042C0781D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BAD27E27-4444-4300-ADF8-E21042C0781D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BAD27E27-4444-4300-ADF8-E21042C0781D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BAD27E27-4444-4300-ADF8-E21042C0781D}.Release|Any CPU.Build.0 = Release|Any CPU
{7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Release|Any CPU.Build.0 = Release|Any CPU
- {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}.Release|Any CPU.Build.0 = Release|Any CPU
- {5DFEC3FD-9677-47BB-9E88-EB71828B5913}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5DFEC3FD-9677-47BB-9E88-EB71828B5913}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {5DFEC3FD-9677-47BB-9E88-EB71828B5913}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {5DFEC3FD-9677-47BB-9E88-EB71828B5913}.Release|Any CPU.Build.0 = Release|Any CPU
- {87064B50-3B7C-4A91-AF4A-941C6F95D997}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {87064B50-3B7C-4A91-AF4A-941C6F95D997}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {87064B50-3B7C-4A91-AF4A-941C6F95D997}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {87064B50-3B7C-4A91-AF4A-941C6F95D997}.Release|Any CPU.Build.0 = Release|Any CPU
{C92A5F2E-567B-48C9-A524-5740DB03509D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C92A5F2E-567B-48C9-A524-5740DB03509D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C92A5F2E-567B-48C9-A524-5740DB03509D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C92A5F2E-567B-48C9-A524-5740DB03509D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {271311DE-67EE-4EE8-93EA-EA8BFD366EC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {271311DE-67EE-4EE8-93EA-EA8BFD366EC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {271311DE-67EE-4EE8-93EA-EA8BFD366EC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {271311DE-67EE-4EE8-93EA-EA8BFD366EC6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F1548BD2-7FE8-46C2-9BC4-9BA813A5C59A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F1548BD2-7FE8-46C2-9BC4-9BA813A5C59A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F1548BD2-7FE8-46C2-9BC4-9BA813A5C59A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F1548BD2-7FE8-46C2-9BC4-9BA813A5C59A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C9192AE7-EE6D-409C-A05C-3549D78CBB34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C9192AE7-EE6D-409C-A05C-3549D78CBB34}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C9192AE7-EE6D-409C-A05C-3549D78CBB34}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C9192AE7-EE6D-409C-A05C-3549D78CBB34}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6CAC5B83-81F3-47C2-92A1-0F94A58491C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6CAC5B83-81F3-47C2-92A1-0F94A58491C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6CAC5B83-81F3-47C2-92A1-0F94A58491C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6CAC5B83-81F3-47C2-92A1-0F94A58491C2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/StructureHelper/.gitignore b/StructureHelper/.gitignore
new file mode 100644
index 0000000..d596b37
--- /dev/null
+++ b/StructureHelper/.gitignore
@@ -0,0 +1,4 @@
+*\obj
+*\bin
+*\packages
+*\.vs
diff --git a/App.xaml b/StructureHelper/App.xaml
similarity index 100%
rename from App.xaml
rename to StructureHelper/App.xaml
diff --git a/App.xaml.cs b/StructureHelper/App.xaml.cs
similarity index 86%
rename from App.xaml.cs
rename to StructureHelper/App.xaml.cs
index 0e74be2..0f7f3b1 100644
--- a/App.xaml.cs
+++ b/StructureHelper/App.xaml.cs
@@ -1,16 +1,14 @@
-using System.Windows;
-using Autofac;
-using StructureHelper.Services;
-using StructureHelper.Services.Primitives;
+using StructureHelper.Services.Primitives;
using StructureHelper.UnitSystem;
using StructureHelper.Windows.MainWindow;
-using StructureHelperLogics.Services;
using StructureHelperLogics.Services.NdmCalculations;
+using System.Windows;
+using Autofac;
namespace StructureHelper
{
///
- /// Логика взаимодействия для App.xaml
+ /// Interaction logic for App.xaml
///
public partial class App : Application
{
diff --git a/Documentation/2021-06-14 10-46-38.JPG b/StructureHelper/Documentation/2021-06-14 10-46-38.JPG
similarity index 100%
rename from Documentation/2021-06-14 10-46-38.JPG
rename to StructureHelper/Documentation/2021-06-14 10-46-38.JPG
diff --git a/Infrastructure/Enums/PrimitiveType.cs b/StructureHelper/Infrastructure/Enums/PrimitiveType.cs
similarity index 100%
rename from Infrastructure/Enums/PrimitiveType.cs
rename to StructureHelper/Infrastructure/Enums/PrimitiveType.cs
diff --git a/Infrastructure/EventArgs.cs b/StructureHelper/Infrastructure/EventArgs.cs
similarity index 100%
rename from Infrastructure/EventArgs.cs
rename to StructureHelper/Infrastructure/EventArgs.cs
diff --git a/Infrastructure/EventTriggerBase.cs b/StructureHelper/Infrastructure/EventTriggerBase.cs
similarity index 100%
rename from Infrastructure/EventTriggerBase.cs
rename to StructureHelper/Infrastructure/EventTriggerBase.cs
diff --git a/Infrastructure/Extensions/ObservableCollectionExtensions.cs b/StructureHelper/Infrastructure/Extensions/ObservableCollectionExtensions.cs
similarity index 100%
rename from Infrastructure/Extensions/ObservableCollectionExtensions.cs
rename to StructureHelper/Infrastructure/Extensions/ObservableCollectionExtensions.cs
diff --git a/Infrastructure/MouseBehaviour.cs b/StructureHelper/Infrastructure/MouseBehaviour.cs
similarity index 100%
rename from Infrastructure/MouseBehaviour.cs
rename to StructureHelper/Infrastructure/MouseBehaviour.cs
diff --git a/Infrastructure/NamedList.cs b/StructureHelper/Infrastructure/NamedList.cs
similarity index 100%
rename from Infrastructure/NamedList.cs
rename to StructureHelper/Infrastructure/NamedList.cs
diff --git a/Infrastructure/RelayCommand.cs b/StructureHelper/Infrastructure/RelayCommand.cs
similarity index 100%
rename from Infrastructure/RelayCommand.cs
rename to StructureHelper/Infrastructure/RelayCommand.cs
diff --git a/Infrastructure/UI/Converters/Common/InvertBoolConverter.cs b/StructureHelper/Infrastructure/UI/Converters/Common/InvertBoolConverter.cs
similarity index 100%
rename from Infrastructure/UI/Converters/Common/InvertBoolConverter.cs
rename to StructureHelper/Infrastructure/UI/Converters/Common/InvertBoolConverter.cs
diff --git a/Infrastructure/UI/Converters/CommonOperation.cs b/StructureHelper/Infrastructure/UI/Converters/CommonOperation.cs
similarity index 100%
rename from Infrastructure/UI/Converters/CommonOperation.cs
rename to StructureHelper/Infrastructure/UI/Converters/CommonOperation.cs
diff --git a/Infrastructure/UI/Converters/IStringDoublePair.cs b/StructureHelper/Infrastructure/UI/Converters/IStringDoublePair.cs
similarity index 100%
rename from Infrastructure/UI/Converters/IStringDoublePair.cs
rename to StructureHelper/Infrastructure/UI/Converters/IStringDoublePair.cs
diff --git a/Infrastructure/UI/Converters/StringDoublePair.cs b/StructureHelper/Infrastructure/UI/Converters/StringDoublePair.cs
similarity index 100%
rename from Infrastructure/UI/Converters/StringDoublePair.cs
rename to StructureHelper/Infrastructure/UI/Converters/StringDoublePair.cs
diff --git a/Infrastructure/UI/Converters/Units/Area.cs b/StructureHelper/Infrastructure/UI/Converters/Units/Area.cs
similarity index 100%
rename from Infrastructure/UI/Converters/Units/Area.cs
rename to StructureHelper/Infrastructure/UI/Converters/Units/Area.cs
diff --git a/Infrastructure/UI/Converters/Units/Curvature.cs b/StructureHelper/Infrastructure/UI/Converters/Units/Curvature.cs
similarity index 100%
rename from Infrastructure/UI/Converters/Units/Curvature.cs
rename to StructureHelper/Infrastructure/UI/Converters/Units/Curvature.cs
diff --git a/Infrastructure/UI/Converters/Units/Force.cs b/StructureHelper/Infrastructure/UI/Converters/Units/Force.cs
similarity index 100%
rename from Infrastructure/UI/Converters/Units/Force.cs
rename to StructureHelper/Infrastructure/UI/Converters/Units/Force.cs
diff --git a/Infrastructure/UI/Converters/Units/Length.cs b/StructureHelper/Infrastructure/UI/Converters/Units/Length.cs
similarity index 100%
rename from Infrastructure/UI/Converters/Units/Length.cs
rename to StructureHelper/Infrastructure/UI/Converters/Units/Length.cs
diff --git a/Infrastructure/UI/Converters/Units/Moment.cs b/StructureHelper/Infrastructure/UI/Converters/Units/Moment.cs
similarity index 100%
rename from Infrastructure/UI/Converters/Units/Moment.cs
rename to StructureHelper/Infrastructure/UI/Converters/Units/Moment.cs
diff --git a/Infrastructure/UI/Converters/Units/PlainDouble.cs b/StructureHelper/Infrastructure/UI/Converters/Units/PlainDouble.cs
similarity index 100%
rename from Infrastructure/UI/Converters/Units/PlainDouble.cs
rename to StructureHelper/Infrastructure/UI/Converters/Units/PlainDouble.cs
diff --git a/Infrastructure/UI/Converters/Units/Stress.cs b/StructureHelper/Infrastructure/UI/Converters/Units/Stress.cs
similarity index 100%
rename from Infrastructure/UI/Converters/Units/Stress.cs
rename to StructureHelper/Infrastructure/UI/Converters/Units/Stress.cs
diff --git a/Infrastructure/UI/Converters/Units/UnitBase.cs b/StructureHelper/Infrastructure/UI/Converters/Units/UnitBase.cs
similarity index 100%
rename from Infrastructure/UI/Converters/Units/UnitBase.cs
rename to StructureHelper/Infrastructure/UI/Converters/Units/UnitBase.cs
diff --git a/Infrastructure/UI/Converters/Units/UnitConstatnts.cs b/StructureHelper/Infrastructure/UI/Converters/Units/UnitConstatnts.cs
similarity index 100%
rename from Infrastructure/UI/Converters/Units/UnitConstatnts.cs
rename to StructureHelper/Infrastructure/UI/Converters/Units/UnitConstatnts.cs
diff --git a/Infrastructure/UI/DataContexts/IHasCenter.cs b/StructureHelper/Infrastructure/UI/DataContexts/IHasCenter.cs
similarity index 100%
rename from Infrastructure/UI/DataContexts/IHasCenter.cs
rename to StructureHelper/Infrastructure/UI/DataContexts/IHasCenter.cs
diff --git a/Infrastructure/UI/DataContexts/IHasDivision.cs b/StructureHelper/Infrastructure/UI/DataContexts/IHasDivision.cs
similarity index 100%
rename from Infrastructure/UI/DataContexts/IHasDivision.cs
rename to StructureHelper/Infrastructure/UI/DataContexts/IHasDivision.cs
diff --git a/Infrastructure/UI/DataContexts/LineViewPrimitive.cs b/StructureHelper/Infrastructure/UI/DataContexts/LineViewPrimitive.cs
similarity index 100%
rename from Infrastructure/UI/DataContexts/LineViewPrimitive.cs
rename to StructureHelper/Infrastructure/UI/DataContexts/LineViewPrimitive.cs
diff --git a/Infrastructure/UI/DataContexts/PointViewPrimitive.cs b/StructureHelper/Infrastructure/UI/DataContexts/PointViewPrimitive.cs
similarity index 100%
rename from Infrastructure/UI/DataContexts/PointViewPrimitive.cs
rename to StructureHelper/Infrastructure/UI/DataContexts/PointViewPrimitive.cs
diff --git a/Infrastructure/UI/DataContexts/PrimitiveBase.cs b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs
similarity index 100%
rename from Infrastructure/UI/DataContexts/PrimitiveBase.cs
rename to StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs
diff --git a/Infrastructure/UI/DataContexts/PrimitiveOperations.cs b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs
similarity index 100%
rename from Infrastructure/UI/DataContexts/PrimitiveOperations.cs
rename to StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs
diff --git a/Infrastructure/UI/DataContexts/RectangleViewPrimitive.cs b/StructureHelper/Infrastructure/UI/DataContexts/RectangleViewPrimitive.cs
similarity index 100%
rename from Infrastructure/UI/DataContexts/RectangleViewPrimitive.cs
rename to StructureHelper/Infrastructure/UI/DataContexts/RectangleViewPrimitive.cs
diff --git a/Infrastructure/UI/DataTemplates/EllipseTemplate.xaml b/StructureHelper/Infrastructure/UI/DataTemplates/EllipseTemplate.xaml
similarity index 100%
rename from Infrastructure/UI/DataTemplates/EllipseTemplate.xaml
rename to StructureHelper/Infrastructure/UI/DataTemplates/EllipseTemplate.xaml
diff --git a/Infrastructure/UI/DataTemplates/EllipseTemplate.xaml.cs b/StructureHelper/Infrastructure/UI/DataTemplates/EllipseTemplate.xaml.cs
similarity index 100%
rename from Infrastructure/UI/DataTemplates/EllipseTemplate.xaml.cs
rename to StructureHelper/Infrastructure/UI/DataTemplates/EllipseTemplate.xaml.cs
diff --git a/Infrastructure/UI/DataTemplates/RectangleTemplate.xaml b/StructureHelper/Infrastructure/UI/DataTemplates/RectangleTemplate.xaml
similarity index 100%
rename from Infrastructure/UI/DataTemplates/RectangleTemplate.xaml
rename to StructureHelper/Infrastructure/UI/DataTemplates/RectangleTemplate.xaml
diff --git a/Infrastructure/UI/DataTemplates/RectangleTemplate.xaml.cs b/StructureHelper/Infrastructure/UI/DataTemplates/RectangleTemplate.xaml.cs
similarity index 100%
rename from Infrastructure/UI/DataTemplates/RectangleTemplate.xaml.cs
rename to StructureHelper/Infrastructure/UI/DataTemplates/RectangleTemplate.xaml.cs
diff --git a/Infrastructure/UI/PrimitiveTemplates/IRectangleBeamProperties.cs b/StructureHelper/Infrastructure/UI/PrimitiveTemplates/IRectangleBeamProperties.cs
similarity index 100%
rename from Infrastructure/UI/PrimitiveTemplates/IRectangleBeamProperties.cs
rename to StructureHelper/Infrastructure/UI/PrimitiveTemplates/IRectangleBeamProperties.cs
diff --git a/Infrastructure/UI/PrimitiveTemplates/TemplateFactory.cs b/StructureHelper/Infrastructure/UI/PrimitiveTemplates/TemplateFactory.cs
similarity index 100%
rename from Infrastructure/UI/PrimitiveTemplates/TemplateFactory.cs
rename to StructureHelper/Infrastructure/UI/PrimitiveTemplates/TemplateFactory.cs
diff --git a/Infrastructure/UI/Resources/ButtonStyles.xaml b/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml
similarity index 100%
rename from Infrastructure/UI/Resources/ButtonStyles.xaml
rename to StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml
diff --git a/Infrastructure/UI/Resources/CommonEnums.xaml b/StructureHelper/Infrastructure/UI/Resources/CommonEnums.xaml
similarity index 100%
rename from Infrastructure/UI/Resources/CommonEnums.xaml
rename to StructureHelper/Infrastructure/UI/Resources/CommonEnums.xaml
diff --git a/Infrastructure/UI/Resources/Converters.xaml b/StructureHelper/Infrastructure/UI/Resources/Converters.xaml
similarity index 100%
rename from Infrastructure/UI/Resources/Converters.xaml
rename to StructureHelper/Infrastructure/UI/Resources/Converters.xaml
diff --git a/Infrastructure/UI/Resources/DataGridStyles.xaml b/StructureHelper/Infrastructure/UI/Resources/DataGridStyles.xaml
similarity index 100%
rename from Infrastructure/UI/Resources/DataGridStyles.xaml
rename to StructureHelper/Infrastructure/UI/Resources/DataGridStyles.xaml
diff --git a/Infrastructure/UI/Resources/DataGridTemplates.xaml b/StructureHelper/Infrastructure/UI/Resources/DataGridTemplates.xaml
similarity index 100%
rename from Infrastructure/UI/Resources/DataGridTemplates.xaml
rename to StructureHelper/Infrastructure/UI/Resources/DataGridTemplates.xaml
diff --git a/Infrastructure/UI/Resources/ItemEditPanels.xaml b/StructureHelper/Infrastructure/UI/Resources/ItemEditPanels.xaml
similarity index 100%
rename from Infrastructure/UI/Resources/ItemEditPanels.xaml
rename to StructureHelper/Infrastructure/UI/Resources/ItemEditPanels.xaml
diff --git a/Infrastructure/UI/Resources/PrimitiveTemplates.xaml b/StructureHelper/Infrastructure/UI/Resources/PrimitiveTemplates.xaml
similarity index 100%
rename from Infrastructure/UI/Resources/PrimitiveTemplates.xaml
rename to StructureHelper/Infrastructure/UI/Resources/PrimitiveTemplates.xaml
diff --git a/Infrastructure/UI/Resources/PrimitiveToolTips.xaml b/StructureHelper/Infrastructure/UI/Resources/PrimitiveToolTips.xaml
similarity index 100%
rename from Infrastructure/UI/Resources/PrimitiveToolTips.xaml
rename to StructureHelper/Infrastructure/UI/Resources/PrimitiveToolTips.xaml
diff --git a/Infrastructure/UI/Resources/ShapeEditTemplates.xaml b/StructureHelper/Infrastructure/UI/Resources/ShapeEditTemplates.xaml
similarity index 100%
rename from Infrastructure/UI/Resources/ShapeEditTemplates.xaml
rename to StructureHelper/Infrastructure/UI/Resources/ShapeEditTemplates.xaml
diff --git a/Infrastructure/UI/Styles.xaml b/StructureHelper/Infrastructure/UI/Styles.xaml
similarity index 100%
rename from Infrastructure/UI/Styles.xaml
rename to StructureHelper/Infrastructure/UI/Styles.xaml
diff --git a/Infrastructure/UI/Triggers/MouseEventTriggers/DoubleClickEventTrigger.cs b/StructureHelper/Infrastructure/UI/Triggers/MouseEventTriggers/DoubleClickEventTrigger.cs
similarity index 100%
rename from Infrastructure/UI/Triggers/MouseEventTriggers/DoubleClickEventTrigger.cs
rename to StructureHelper/Infrastructure/UI/Triggers/MouseEventTriggers/DoubleClickEventTrigger.cs
diff --git a/Infrastructure/UI/Triggers/MouseEventTriggers/MouseWheelDownEventTrigger.cs b/StructureHelper/Infrastructure/UI/Triggers/MouseEventTriggers/MouseWheelDownEventTrigger.cs
similarity index 100%
rename from Infrastructure/UI/Triggers/MouseEventTriggers/MouseWheelDownEventTrigger.cs
rename to StructureHelper/Infrastructure/UI/Triggers/MouseEventTriggers/MouseWheelDownEventTrigger.cs
diff --git a/Infrastructure/UI/Triggers/MouseEventTriggers/MouseWheelUpEventTrigger.cs b/StructureHelper/Infrastructure/UI/Triggers/MouseEventTriggers/MouseWheelUpEventTrigger.cs
similarity index 100%
rename from Infrastructure/UI/Triggers/MouseEventTriggers/MouseWheelUpEventTrigger.cs
rename to StructureHelper/Infrastructure/UI/Triggers/MouseEventTriggers/MouseWheelUpEventTrigger.cs
diff --git a/Infrastructure/UI/UserControls/PrimitivePopup.xaml b/StructureHelper/Infrastructure/UI/UserControls/PrimitivePopup.xaml
similarity index 98%
rename from Infrastructure/UI/UserControls/PrimitivePopup.xaml
rename to StructureHelper/Infrastructure/UI/UserControls/PrimitivePopup.xaml
index c320ff4..4f3a37b 100644
--- a/Infrastructure/UI/UserControls/PrimitivePopup.xaml
+++ b/StructureHelper/Infrastructure/UI/UserControls/PrimitivePopup.xaml
@@ -4,8 +4,8 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:StructureHelper.Infrastructure.UI.UserControls"
- xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:dataContexts="clr-namespace:StructureHelper.Infrastructure.UI.DataContexts"
+ xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d" IsOpen="{Binding ParamsPanelVisibilty}">
diff --git a/Infrastructure/UI/UserControls/PrimitivePopup.xaml.cs b/StructureHelper/Infrastructure/UI/UserControls/PrimitivePopup.xaml.cs
similarity index 100%
rename from Infrastructure/UI/UserControls/PrimitivePopup.xaml.cs
rename to StructureHelper/Infrastructure/UI/UserControls/PrimitivePopup.xaml.cs
diff --git a/Infrastructure/ViewModelBase.cs b/StructureHelper/Infrastructure/ViewModelBase.cs
similarity index 100%
rename from Infrastructure/ViewModelBase.cs
rename to StructureHelper/Infrastructure/ViewModelBase.cs
diff --git a/Libraries/LoaderCalculator.dll b/StructureHelper/Libraries/LoaderCalculator.dll
similarity index 100%
rename from Libraries/LoaderCalculator.dll
rename to StructureHelper/Libraries/LoaderCalculator.dll
diff --git a/MaterialCatalogWindow/MaterialCatalogModel.cs b/StructureHelper/MaterialCatalogWindow/MaterialCatalogModel.cs
similarity index 100%
rename from MaterialCatalogWindow/MaterialCatalogModel.cs
rename to StructureHelper/MaterialCatalogWindow/MaterialCatalogModel.cs
diff --git a/MaterialCatalogWindow/MaterialCatalogView.xaml b/StructureHelper/MaterialCatalogWindow/MaterialCatalogView.xaml
similarity index 100%
rename from MaterialCatalogWindow/MaterialCatalogView.xaml
rename to StructureHelper/MaterialCatalogWindow/MaterialCatalogView.xaml
diff --git a/MaterialCatalogWindow/MaterialCatalogView.xaml.cs b/StructureHelper/MaterialCatalogWindow/MaterialCatalogView.xaml.cs
similarity index 100%
rename from MaterialCatalogWindow/MaterialCatalogView.xaml.cs
rename to StructureHelper/MaterialCatalogWindow/MaterialCatalogView.xaml.cs
diff --git a/MaterialCatalogWindow/MaterialCatalogViewModel.cs b/StructureHelper/MaterialCatalogWindow/MaterialCatalogViewModel.cs
similarity index 100%
rename from MaterialCatalogWindow/MaterialCatalogViewModel.cs
rename to StructureHelper/MaterialCatalogWindow/MaterialCatalogViewModel.cs
diff --git a/Models/Forces/ForceCombinationViewObject.cs b/StructureHelper/Models/Forces/ForceCombinationViewObject.cs
similarity index 100%
rename from Models/Forces/ForceCombinationViewObject.cs
rename to StructureHelper/Models/Forces/ForceCombinationViewObject.cs
diff --git a/Models/Forces/ForceTupleViewObject.cs b/StructureHelper/Models/Forces/ForceTupleViewObject.cs
similarity index 100%
rename from Models/Forces/ForceTupleViewObject.cs
rename to StructureHelper/Models/Forces/ForceTupleViewObject.cs
diff --git a/Models/Materials/ConcreteDefinition.cs b/StructureHelper/Models/Materials/ConcreteDefinition.cs
similarity index 100%
rename from Models/Materials/ConcreteDefinition.cs
rename to StructureHelper/Models/Materials/ConcreteDefinition.cs
diff --git a/Models/Materials/MaterialDefinitionBase.cs b/StructureHelper/Models/Materials/MaterialDefinitionBase.cs
similarity index 100%
rename from Models/Materials/MaterialDefinitionBase.cs
rename to StructureHelper/Models/Materials/MaterialDefinitionBase.cs
diff --git a/Models/Materials/RebarDefinition.cs b/StructureHelper/Models/Materials/RebarDefinition.cs
similarity index 100%
rename from Models/Materials/RebarDefinition.cs
rename to StructureHelper/Models/Materials/RebarDefinition.cs
diff --git a/Models/Primitives/Factories/PrimitiveFactory.cs b/StructureHelper/Models/Primitives/Factories/PrimitiveFactory.cs
similarity index 100%
rename from Models/Primitives/Factories/PrimitiveFactory.cs
rename to StructureHelper/Models/Primitives/Factories/PrimitiveFactory.cs
diff --git a/Properties/Annotations.cs b/StructureHelper/Properties/Annotations.cs
similarity index 100%
rename from Properties/Annotations.cs
rename to StructureHelper/Properties/Annotations.cs
diff --git a/Properties/AssemblyInfo.cs b/StructureHelper/Properties/AssemblyInfo.cs
similarity index 100%
rename from Properties/AssemblyInfo.cs
rename to StructureHelper/Properties/AssemblyInfo.cs
diff --git a/Services/Primitives/IPrimitiveRepository.cs b/StructureHelper/Services/Primitives/IPrimitiveRepository.cs
similarity index 100%
rename from Services/Primitives/IPrimitiveRepository.cs
rename to StructureHelper/Services/Primitives/IPrimitiveRepository.cs
diff --git a/Services/Primitives/PrimitiveRepository.cs b/StructureHelper/Services/Primitives/PrimitiveRepository.cs
similarity index 100%
rename from Services/Primitives/PrimitiveRepository.cs
rename to StructureHelper/Services/Primitives/PrimitiveRepository.cs
diff --git a/Services/Reports/CalculationReports/IIsoFieldReport.cs b/StructureHelper/Services/Reports/CalculationReports/IIsoFieldReport.cs
similarity index 100%
rename from Services/Reports/CalculationReports/IIsoFieldReport.cs
rename to StructureHelper/Services/Reports/CalculationReports/IIsoFieldReport.cs
diff --git a/Services/Reports/CalculationReports/IsoFieldReport.cs b/StructureHelper/Services/Reports/CalculationReports/IsoFieldReport.cs
similarity index 100%
rename from Services/Reports/CalculationReports/IsoFieldReport.cs
rename to StructureHelper/Services/Reports/CalculationReports/IsoFieldReport.cs
diff --git a/Services/Reports/IReport.cs b/StructureHelper/Services/Reports/IReport.cs
similarity index 100%
rename from Services/Reports/IReport.cs
rename to StructureHelper/Services/Reports/IReport.cs
diff --git a/Services/ResultViewers/IResultFunc.cs b/StructureHelper/Services/ResultViewers/IResultFunc.cs
similarity index 100%
rename from Services/ResultViewers/IResultFunc.cs
rename to StructureHelper/Services/ResultViewers/IResultFunc.cs
diff --git a/Services/ResultViewers/ResultFunc.cs b/StructureHelper/Services/ResultViewers/ResultFunc.cs
similarity index 100%
rename from Services/ResultViewers/ResultFunc.cs
rename to StructureHelper/Services/ResultViewers/ResultFunc.cs
diff --git a/Services/ResultViewers/ResultFuncFactory.cs b/StructureHelper/Services/ResultViewers/ResultFuncFactory.cs
similarity index 100%
rename from Services/ResultViewers/ResultFuncFactory.cs
rename to StructureHelper/Services/ResultViewers/ResultFuncFactory.cs
diff --git a/Services/ResultViewers/ShowIsoFieldResult.cs b/StructureHelper/Services/ResultViewers/ShowIsoFieldResult.cs
similarity index 100%
rename from Services/ResultViewers/ShowIsoFieldResult.cs
rename to StructureHelper/Services/ResultViewers/ShowIsoFieldResult.cs
diff --git a/StructureHelper/StructureHelper.csproj b/StructureHelper/StructureHelper.csproj
new file mode 100644
index 0000000..6a99bbb
--- /dev/null
+++ b/StructureHelper/StructureHelper.csproj
@@ -0,0 +1,44 @@
+
+
+
+ WinExe
+ net6.0-windows10.0.18362.0
+ enable
+ true
+ disable
+ 10.0.18362.0
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Libraries\LoaderCalculator.dll
+
+
+
+
diff --git a/StructureHelper/StructureHelper.csproj.user b/StructureHelper/StructureHelper.csproj.user
new file mode 100644
index 0000000..e8da786
--- /dev/null
+++ b/StructureHelper/StructureHelper.csproj.user
@@ -0,0 +1,10 @@
+
+
+
+
+
+ Designer
+
+
+
+
\ No newline at end of file
diff --git a/StructureHelper/StructureHelper.sln b/StructureHelper/StructureHelper.sln
new file mode 100644
index 0000000..dd8c1da
--- /dev/null
+++ b/StructureHelper/StructureHelper.sln
@@ -0,0 +1,61 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.2.32630.192
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureHelper", "StructureHelper.csproj", "{BAD27E27-4444-4300-ADF8-E21042C0781D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureHelperTests", "StructureHelperTests\StructureHelperTests.csproj", "{7AC480BB-8A34-4913-B7AA-C6A5D7F35509}"
+ ProjectSection(ProjectDependencies) = postProject
+ {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3} = {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}
+ EndProjectSection
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StructureHelperLogics", "StructureHelperLogics\StructureHelperLogics.csproj", "{330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5DFEC3FD-9677-47BB-9E88-EB71828B5913} = {5DFEC3FD-9677-47BB-9E88-EB71828B5913}
+ EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureHelperCommon", "StructureHelperCommon\StructureHelperCommon.csproj", "{5DFEC3FD-9677-47BB-9E88-EB71828B5913}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FieldVisualizer", "FieldVisualizer\FieldVisualizer.csproj", "{87064B50-3B7C-4A91-AF4A-941C6F95D997}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FieldVisualzerDemo", "FiledVisualzerDemo\FieldVisualzerDemo.csproj", "{C92A5F2E-567B-48C9-A524-5740DB03509D}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {BAD27E27-4444-4300-ADF8-E21042C0781D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BAD27E27-4444-4300-ADF8-E21042C0781D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BAD27E27-4444-4300-ADF8-E21042C0781D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BAD27E27-4444-4300-ADF8-E21042C0781D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7AC480BB-8A34-4913-B7AA-C6A5D7F35509}.Release|Any CPU.Build.0 = Release|Any CPU
+ {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {330BEF5B-15BE-4D2C-A750-B1AE50FB2BE3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5DFEC3FD-9677-47BB-9E88-EB71828B5913}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5DFEC3FD-9677-47BB-9E88-EB71828B5913}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5DFEC3FD-9677-47BB-9E88-EB71828B5913}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5DFEC3FD-9677-47BB-9E88-EB71828B5913}.Release|Any CPU.Build.0 = Release|Any CPU
+ {87064B50-3B7C-4A91-AF4A-941C6F95D997}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {87064B50-3B7C-4A91-AF4A-941C6F95D997}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {87064B50-3B7C-4A91-AF4A-941C6F95D997}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {87064B50-3B7C-4A91-AF4A-941C6F95D997}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C92A5F2E-567B-48C9-A524-5740DB03509D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C92A5F2E-567B-48C9-A524-5740DB03509D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C92A5F2E-567B-48C9-A524-5740DB03509D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C92A5F2E-567B-48C9-A524-5740DB03509D}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {A4F97ACA-7F64-4D3E-AB47-8EE61B5BAB9A}
+ EndGlobalSection
+EndGlobal
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Enums/CalcTerms.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/CalcTerms.cs
new file mode 100644
index 0000000..f44ee3f
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/CalcTerms.cs
@@ -0,0 +1,8 @@
+namespace StructureHelperCommon.Infrastructures.Enums
+{
+ public enum CalcTerms
+ {
+ ShortTerm,
+ LongTerm,
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Enums/CodeTypes.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/CodeTypes.cs
new file mode 100644
index 0000000..66213b9
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/CodeTypes.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace StructureHelperCommon.Infrastructures.Enums
+{
+ public enum CodeTypes
+ {
+ SP63_13330_2018,
+ EuroCode_2_1990
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Enums/Directions.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/Directions.cs
new file mode 100644
index 0000000..f210380
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/Directions.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Infrastructures.Enums
+{
+ public enum Directions
+ {
+ X,
+ Y,
+ Z
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Enums/LimitStates.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/LimitStates.cs
new file mode 100644
index 0000000..0ef8a37
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/LimitStates.cs
@@ -0,0 +1,9 @@
+namespace StructureHelperCommon.Infrastructures.Enums
+{
+ public enum LimitStates
+ {
+ ULS = 1,
+ SLS = 2,
+ Special = 3,
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Enums/MaterialTypes.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/MaterialTypes.cs
new file mode 100644
index 0000000..ff4c2ce
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/MaterialTypes.cs
@@ -0,0 +1,11 @@
+namespace StructureHelperCommon.Infrastructures.Enums
+
+{
+ public enum MaterialTypes
+ {
+ Concrete,
+ Reinforcement,
+ //Steel,
+ //CarbonFiber,
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Enums/StressStates.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/StressStates.cs
new file mode 100644
index 0000000..e02d0a6
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/StressStates.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Infrastructures.Enums
+{
+ public enum StressStates
+ {
+ Tension,
+ Compression
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Enums/UnitTypes.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/UnitTypes.cs
new file mode 100644
index 0000000..21f9421
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Enums/UnitTypes.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Infrastructures.Enums
+{
+ public enum UnitTypes
+ {
+ Length,
+ Area,
+ Stress,
+ Force,
+ Moment,
+ Curvature
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Exceptions/StructureHelperException.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Exceptions/StructureHelperException.cs
new file mode 100644
index 0000000..9c96b5e
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Exceptions/StructureHelperException.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Infrastructures.Exceptions
+{
+ public class StructureHelperException : Exception
+ {
+ public StructureHelperException(string errorString) : base(errorString)
+ {
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Interfaces/IHasForceCombinations.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Interfaces/IHasForceCombinations.cs
new file mode 100644
index 0000000..6bf61fb
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Interfaces/IHasForceCombinations.cs
@@ -0,0 +1,14 @@
+using StructureHelperCommon.Models.Forces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Infrastructures.Interfaces
+{
+ public interface IHasForceCombinations
+ {
+ List ForceCombinationLists { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Interfaces/IHasParent.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Interfaces/IHasParent.cs
new file mode 100644
index 0000000..99f6895
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Interfaces/IHasParent.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Infrastructures.Interfaces
+{
+ public interface IHasParent
+ {
+ object Parent { get; }
+ void RegisterParent();
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Interfaces/ISaveable.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Interfaces/ISaveable.cs
new file mode 100644
index 0000000..a1020e2
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Interfaces/ISaveable.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Infrastructures.Interfaces
+{
+ public interface ISaveable
+ {
+ int Id { get; set; }
+ void Save();
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Settings/ProgramSetting.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Settings/ProgramSetting.cs
new file mode 100644
index 0000000..21e48a1
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Settings/ProgramSetting.cs
@@ -0,0 +1,14 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Infrastructures.Settings
+{
+ public static class ProgramSetting
+ {
+ public static CodeTypes CodeType => CodeTypes.SP63_13330_2018;
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs b/StructureHelper/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs
new file mode 100644
index 0000000..227527f
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Infrastructures.Strings
+{
+ public static class ErrorStrings
+ {
+ public static string UnknownError => "#0000: Unknown error";
+ public static string ObjectTypeIsUnknown => "#0001: Object type is unknown";
+ public static string MaterialTypeIsUnknown => "#0002: Material type is unknown";
+ public static string DataIsInCorrect => "#0003: Data is not correct";
+ public static string ShapeIsNotCorrect => "#0004: Shape is not valid";
+ public static string LimitStatesIsNotValid => "#0005: Type of limite state is not valid";
+ public static string LoadTermIsNotValid => "#0006: Load term is not valid";
+ public static string IncorrectValue => "#0007: value is not valid";
+ public static string FileCantBeDeleted => "#0008: File can't be deleted";
+ public static string FileCantBeSaved => "#0009: File can't be saved";
+ public static string VisualPropertyIsNotRight => "#0010: VisualPropertyIsNotRight";
+ public static string FactorMustBeGraterThanZero => "#0011: Partial factor must not be less than zero";
+ public static string LongitudinalForceMustBeLessThanZero => "#0012: Longitudinal force must be less than zero";
+ public static string LongitudinalForceMustBeLessThanCriticalForce => "#0013: Absolute value of longitudinal force must be greater than critical force";
+ public static string SizeMustBeGreaterThanZero => "#0014: Size must be greater than zero";
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Calculators/Accuracy.cs b/StructureHelper/StructureHelperCommon/Models/Calculators/Accuracy.cs
new file mode 100644
index 0000000..67ca68e
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Calculators/Accuracy.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Calculators
+{
+ public class Accuracy : IAccuracy
+ {
+ public double IterationAccuracy { get; set; }
+ public int MaxIterationCount { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Calculators/IAccuracy.cs b/StructureHelper/StructureHelperCommon/Models/Calculators/IAccuracy.cs
new file mode 100644
index 0000000..4ca1bd4
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Calculators/IAccuracy.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Calculators
+{
+ public interface IAccuracy
+ {
+ double IterationAccuracy { get; set; }
+ int MaxIterationCount { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Calculators/IHelperCalculator.cs b/StructureHelper/StructureHelperCommon/Models/Calculators/IHelperCalculator.cs
new file mode 100644
index 0000000..cddd4d2
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Calculators/IHelperCalculator.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Calculators
+{
+ public interface IHelperCalculator
+ where TInputData : class
+ where TCalculationResult : class
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/DesignForceTuple.cs b/StructureHelper/StructureHelperCommon/Models/Forces/DesignForceTuple.cs
new file mode 100644
index 0000000..f30b6e7
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/DesignForceTuple.cs
@@ -0,0 +1,34 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ public class DesignForceTuple : IDesignForceTuple
+ {
+ public LimitStates LimitState { get; set; }
+ public CalcTerms CalcTerm { get; set; }
+ public IForceTuple ForceTuple { get; set; }
+
+ public DesignForceTuple(LimitStates limitState, CalcTerms calcTerm) : this()
+ {
+ LimitState = limitState;
+ CalcTerm = calcTerm;
+ }
+
+ public DesignForceTuple()
+ {
+ ForceTuple = new ForceTuple();
+ }
+
+ public object Clone()
+ {
+ var newTuple = new DesignForceTuple(this.LimitState, this.CalcTerm);
+ newTuple.ForceTuple = this.ForceTuple.Clone() as IForceTuple;
+ return newTuple;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/Factories/DesignForceFactory.cs b/StructureHelper/StructureHelperCommon/Models/Forces/Factories/DesignForceFactory.cs
new file mode 100644
index 0000000..d113c67
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/Factories/DesignForceFactory.cs
@@ -0,0 +1,38 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ public enum ForceType
+ {
+ Force_zero,
+ Force_Mx50My50Nz100,
+ }
+
+ public static class DesignForceFactory
+ {
+ public static IDesignForceTuple GetDesignForce(ForceType forceType, LimitStates limitState, CalcTerms calcTerm)
+ {
+ if (forceType == ForceType.Force_zero)
+ {
+ return new DesignForceTuple(limitState, calcTerm);
+ }
+ else if (forceType == ForceType.Force_Mx50My50Nz100)
+ {
+ var tuple = new DesignForceTuple(limitState, calcTerm);
+ var forceTuple = tuple.ForceTuple;
+ forceTuple.Mx = -50e3d;
+ forceTuple.My = -50e3d;
+ forceTuple.Nz = -100e3d;
+ return tuple;
+ }
+ else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown);
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/Factories/ForceCombinationListFactory.cs b/StructureHelper/StructureHelperCommon/Models/Forces/Factories/ForceCombinationListFactory.cs
new file mode 100644
index 0000000..b98a933
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/Factories/ForceCombinationListFactory.cs
@@ -0,0 +1,34 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ public enum DesignForceType
+ {
+ Suit_1,
+ Suit_2
+ }
+
+ public static class ForceCombinationListFactory
+ {
+ public static List GetDesignForces(DesignForceType forceType)
+ {
+ if (forceType == DesignForceType.Suit_1)
+ {
+ var designForces = new List();
+ designForces.Add(DesignForceFactory.GetDesignForce(ForceType.Force_Mx50My50Nz100, LimitStates.ULS, CalcTerms.ShortTerm));
+ designForces.Add(DesignForceFactory.GetDesignForce(ForceType.Force_Mx50My50Nz100, LimitStates.ULS, CalcTerms.LongTerm));
+ designForces.Add(DesignForceFactory.GetDesignForce(ForceType.Force_Mx50My50Nz100, LimitStates.SLS, CalcTerms.ShortTerm));
+ designForces.Add(DesignForceFactory.GetDesignForce(ForceType.Force_Mx50My50Nz100, LimitStates.SLS, CalcTerms.LongTerm));
+ return designForces;
+ }
+ else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown);
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/ForceCombinationList.cs b/StructureHelper/StructureHelperCommon/Models/Forces/ForceCombinationList.cs
new file mode 100644
index 0000000..c6cd760
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/ForceCombinationList.cs
@@ -0,0 +1,47 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Shapes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ public class ForceCombinationList : IForceCombinationList
+ {
+
+ public string Name { get; set; }
+ public bool SetInGravityCenter { get; set; }
+ public Point2D ForcePoint { get; private set; }
+ public List DesignForces { get; private set; }
+
+
+ public ForceCombinationList()
+ {
+ SetInGravityCenter = true;
+ ForcePoint = new Point2D() { X = 0, Y = 0 };
+ DesignForces = new List();
+ DesignForces.Add(new DesignForceTuple(LimitStates.ULS, CalcTerms.ShortTerm));
+ DesignForces.Add(new DesignForceTuple(LimitStates.ULS, CalcTerms.LongTerm));
+ DesignForces.Add(new DesignForceTuple(LimitStates.SLS, CalcTerms.ShortTerm));
+ DesignForces.Add(new DesignForceTuple(LimitStates.SLS, CalcTerms.LongTerm));
+ }
+
+ public object Clone()
+ {
+ var newItem = new ForceCombinationList();
+ newItem.Name = Name + " copy";
+ newItem.SetInGravityCenter = SetInGravityCenter;
+ newItem.ForcePoint.X = ForcePoint.X;
+ newItem.ForcePoint.Y = ForcePoint.Y;
+ newItem.DesignForces.Clear();
+ foreach (var item in DesignForces)
+ {
+ var newForce = item.Clone() as IDesignForceTuple;
+ newItem.DesignForces.Add(newForce);
+ }
+ return newItem;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/ForceTuple.cs b/StructureHelper/StructureHelperCommon/Models/Forces/ForceTuple.cs
new file mode 100644
index 0000000..78662b8
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/ForceTuple.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ ///
+ public class ForceTuple : IForceTuple
+ {
+ ///
+ public double Mx { get; set; }
+ ///
+ public double My { get; set; }
+ ///
+ public double Nz { get; set; }
+ ///
+ public double Qx { get; set; }
+ ///
+ public double Qy { get; set; }
+ ///
+ public double Mz { get; set; }
+
+ ///
+ public object Clone()
+ {
+ IForceTuple forceTuple = new ForceTuple() { Mx = Mx, My = My, Nz = Nz, Qx = Qx, Qy = Qy, Mz = Mz};
+ return forceTuple;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/IDesignForceTuple.cs b/StructureHelper/StructureHelperCommon/Models/Forces/IDesignForceTuple.cs
new file mode 100644
index 0000000..e50b2c6
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/IDesignForceTuple.cs
@@ -0,0 +1,16 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ public interface IDesignForceTuple : ICloneable
+ {
+ LimitStates LimitState { get; set; }
+ CalcTerms CalcTerm { get; set; }
+ IForceTuple ForceTuple { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/IForceCombinationList.cs b/StructureHelper/StructureHelperCommon/Models/Forces/IForceCombinationList.cs
new file mode 100644
index 0000000..8a89573
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/IForceCombinationList.cs
@@ -0,0 +1,17 @@
+using StructureHelperCommon.Models.Shapes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ public interface IForceCombinationList : ICloneable
+ {
+ string Name { get; set; }
+ bool SetInGravityCenter { get; set; }
+ Point2D ForcePoint {get ;}
+ List DesignForces { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/IForceRepository.cs b/StructureHelper/StructureHelperCommon/Models/Forces/IForceRepository.cs
new file mode 100644
index 0000000..b8c656f
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/IForceRepository.cs
@@ -0,0 +1,13 @@
+using StructureHelperCommon.Infrastructures.Interfaces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ internal interface IForceRepository
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/IForceTuple.cs b/StructureHelper/StructureHelperCommon/Models/Forces/IForceTuple.cs
new file mode 100644
index 0000000..96c487f
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/IForceTuple.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ ///
+ /// Interface for generic force for beams
+ ///
+ public interface IForceTuple : ICloneable
+ {
+ ///
+ /// Bending moment round about x-axis
+ ///
+ double Mx { get; set; }
+ ///
+ /// Bending moment round about y-axis
+ ///
+ double My { get; set; }
+ ///
+ /// Longitudinal force along x-axis
+ ///
+ double Nz { get; set; }
+ ///
+ /// Shear force along x-axis
+ ///
+ double Qx { get; set; }
+ ///
+ /// Shear force along z-axis
+ ///
+ double Qy { get; set; }
+ ///
+ /// Twisting moment round about z-axis
+ ///
+ double Mz { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/Strains/IStrainTuple.cs b/StructureHelper/StructureHelperCommon/Models/Forces/Strains/IStrainTuple.cs
new file mode 100644
index 0000000..8fc0bdf
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/Strains/IStrainTuple.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ ///
+ /// Interface for generic curvature for beams
+ ///
+ public interface IStrainTuple : ICloneable
+ {
+ ///
+ /// Curvature about x-axis
+ ///
+ double Kx { get; set; }
+ ///
+ /// Curvature about y-axis
+ ///
+ double Ky { get; set; }
+ ///
+ /// Strain along z-axis
+ ///
+ double EpsZ { get; set; }
+ ///
+ /// Screw along x-axis
+ ///
+ double Gx { get; set; }
+ ///
+ /// Screw along y-axis
+ ///
+ double Gy { get; set; }
+ ///
+ /// Twisting about z-axis
+ ///
+ double Gz { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Forces/Strains/StrainTuple.cs b/StructureHelper/StructureHelperCommon/Models/Forces/Strains/StrainTuple.cs
new file mode 100644
index 0000000..e18c6d7
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Forces/Strains/StrainTuple.cs
@@ -0,0 +1,34 @@
+using StructureHelperCommon.Services.Forces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Forces
+{
+ ///
+ public class StrainTuple : IStrainTuple
+ {
+ ///
+ public double Kx { get; set; }
+ ///
+ public double Ky { get; set; }
+ ///
+ public double EpsZ { get; set; }
+ ///
+ public double Gx { get; set; }
+ ///
+ public double Gy { get; set; }
+ ///
+ public double Gz { get; set; }
+
+ ///
+ public object Clone()
+ {
+ var target = new StrainTuple();
+ StrainTupleService.CopyProperties(this, target);
+ return target;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/ConcreteMaterialEntity.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/ConcreteMaterialEntity.cs
new file mode 100644
index 0000000..1532fd6
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/ConcreteMaterialEntity.cs
@@ -0,0 +1,16 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public class ConcreteMaterialEntity : IConcreteMaterialEntity
+ {
+ public CodeTypes CodeType { get; set; }
+ public string Name { get; set; }
+ public double MainStrength { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/Factories/ConcreteFactorsFactory.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/Factories/ConcreteFactorsFactory.cs
new file mode 100644
index 0000000..b4c2f35
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/Factories/ConcreteFactorsFactory.cs
@@ -0,0 +1,112 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public enum FactorType
+ {
+ LongTermFactor,
+ BleedingFactor,
+ PlainConcreteFactor
+ }
+
+ public static class ConcreteFactorsFactory
+ {
+ public static IMaterialSafetyFactor GetFactor(FactorType factorType)
+ {
+ if (factorType == FactorType.LongTermFactor) { return LongTerm(); }
+ else if (factorType == FactorType.BleedingFactor) { return Bleeding(); }
+ else if (factorType == FactorType.PlainConcreteFactor) { return PlainConcrete(); }
+ else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown);
+ }
+
+ private static IMaterialSafetyFactor LongTerm()
+ {
+ IMaterialSafetyFactor safetyFactor = new MaterialSafetyFactor()
+ {
+ Name = "Gamma_b1",
+ Description = "Coefficient for considering long term calculations",
+ };
+ IMaterialPartialFactor partialFactor;
+ partialFactor = new MaterialPartialFactor
+ {
+ StressState = StressStates.Tension,
+ CalcTerm = CalcTerms.LongTerm,
+ LimitState = LimitStates.ULS,
+ FactorValue = 0.9d
+ };
+ safetyFactor.PartialFactors.Add(partialFactor);
+ partialFactor = new MaterialPartialFactor
+ {
+ StressState = StressStates.Compression,
+ CalcTerm = CalcTerms.LongTerm,
+ LimitState = LimitStates.ULS,
+ FactorValue = 0.9d
+ };
+ safetyFactor.PartialFactors.Add(partialFactor);
+ return safetyFactor;
+ }
+
+ private static IMaterialSafetyFactor Bleeding()
+ {
+ IMaterialSafetyFactor safetyFactor = new MaterialSafetyFactor()
+ {
+ Name = "Gamma_b3",
+ Description = "Coefficient for considering bleeding in vertical placement conditionals",
+ };
+ IMaterialPartialFactor partialFactor;
+ partialFactor = new MaterialPartialFactor
+ {
+ StressState = StressStates.Compression,
+ CalcTerm = CalcTerms.ShortTerm,
+ LimitState = LimitStates.ULS,
+ FactorValue = 0.85d
+ };
+ safetyFactor.PartialFactors.Add(partialFactor);
+ partialFactor = new MaterialPartialFactor
+ {
+ StressState = StressStates.Compression,
+ CalcTerm = CalcTerms.LongTerm,
+ LimitState = LimitStates.ULS,
+ FactorValue = 0.85d
+ };
+ safetyFactor.PartialFactors.Add(partialFactor);
+ return safetyFactor;
+ }
+
+ private static IMaterialSafetyFactor PlainConcrete()
+ {
+ IMaterialSafetyFactor safetyFactor = new MaterialSafetyFactor()
+ {
+ Name = "Gamma_b2",
+ Description = "Coefficient for plain concrete structures",
+ };
+ IMaterialPartialFactor partialFactor;
+ partialFactor = new MaterialPartialFactor
+ {
+ StressState = StressStates.Compression,
+ CalcTerm = CalcTerms.ShortTerm,
+ LimitState = LimitStates.ULS,
+ FactorValue = 0.9d
+ };
+ safetyFactor.PartialFactors.Add(partialFactor);
+ partialFactor = new MaterialPartialFactor
+ {
+ StressState = StressStates.Compression,
+ CalcTerm = CalcTerms.LongTerm,
+ LimitState = LimitStates.ULS,
+ FactorValue = 0.9d
+ };
+ safetyFactor.PartialFactors.Add(partialFactor);
+ return safetyFactor;
+ }
+
+
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/Factories/LibMaterialFactory.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/Factories/LibMaterialFactory.cs
new file mode 100644
index 0000000..cbe4aa3
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/Factories/LibMaterialFactory.cs
@@ -0,0 +1,74 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public static class LibMaterialFactory
+ {
+ public static List GetLibMaterials()
+ {
+ List libMaterials = new List();
+ libMaterials.AddRange(GetConcreteEurocode());
+ libMaterials.AddRange(GetConcreteSP63());
+ libMaterials.AddRange(GetReinforcementEurocode());
+ libMaterials.AddRange(GetReinforcementSP63());
+ return libMaterials;
+ }
+
+ private static IEnumerable GetConcreteEurocode()
+ {
+ var code = CodeTypes.EuroCode_2_1990;
+ List libMaterials = new List();
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "C12", MainStrength = 12e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "C20", MainStrength = 20e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "C30", MainStrength = 30e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "C40", MainStrength = 40e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "C50", MainStrength = 50e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "C60", MainStrength = 60e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "C70", MainStrength = 70e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "C80", MainStrength = 80e6 });
+ return libMaterials;
+ }
+ private static IEnumerable GetReinforcementEurocode()
+ {
+ var code = CodeTypes.EuroCode_2_1990;
+ List libMaterials = new List();
+ libMaterials.Add(new ReinforcementMaterialEntity() { CodeType = code, Name = "S240", MainStrength = 240e6 });
+ libMaterials.Add(new ReinforcementMaterialEntity() { CodeType = code, Name = "S400", MainStrength = 400e6 });
+ libMaterials.Add(new ReinforcementMaterialEntity() { CodeType = code, Name = "S500", MainStrength = 500e6 });
+ return libMaterials;
+ }
+ private static IEnumerable GetConcreteSP63()
+ {
+ var code = CodeTypes.SP63_13330_2018;
+ List libMaterials = new List();
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B5", MainStrength = 5e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B7,5", MainStrength = 7.5e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B10", MainStrength = 10e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B15", MainStrength = 15e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B20", MainStrength = 20e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B25", MainStrength = 25e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B30", MainStrength = 30e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B35", MainStrength = 35e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B40", MainStrength = 40e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B50", MainStrength = 50e6 });
+ libMaterials.Add(new ConcreteMaterialEntity() { CodeType = code, Name = "B60", MainStrength = 60e6 });
+ return libMaterials;
+ }
+ private static IEnumerable GetReinforcementSP63()
+ {
+ var code = CodeTypes.SP63_13330_2018;
+ List libMaterials = new List();
+ libMaterials.Add(new ReinforcementMaterialEntity() { CodeType = code, Name = "A240", MainStrength = 240e6 });
+ libMaterials.Add(new ReinforcementMaterialEntity() { CodeType = code, Name = "A400", MainStrength = 400e6 });
+ libMaterials.Add(new ReinforcementMaterialEntity() { CodeType = code, Name = "A500", MainStrength = 500e6 });
+ return libMaterials;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IConcreteMaterialEntity.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IConcreteMaterialEntity.cs
new file mode 100644
index 0000000..cd21857
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IConcreteMaterialEntity.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public interface IConcreteMaterialEntity : ILibMaterialEntity
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/ILibMaterialEntity.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/ILibMaterialEntity.cs
new file mode 100644
index 0000000..fcb35fa
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/ILibMaterialEntity.cs
@@ -0,0 +1,16 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public interface ILibMaterialEntity
+ {
+ CodeTypes CodeType { get; }
+ string Name { get; }
+ double MainStrength { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IMaterialPartialFactor.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IMaterialPartialFactor.cs
new file mode 100644
index 0000000..51aeffa
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IMaterialPartialFactor.cs
@@ -0,0 +1,16 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public interface IMaterialPartialFactor : IPartialFactor
+ {
+ StressStates StressState { get; set; }
+ CalcTerms CalcTerm { get; set; }
+ LimitStates LimitState { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IMaterialSafetyFactor.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IMaterialSafetyFactor.cs
new file mode 100644
index 0000000..4542fa2
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IMaterialSafetyFactor.cs
@@ -0,0 +1,18 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public interface IMaterialSafetyFactor : ICloneable
+ {
+ string Name { get; set; }
+ bool Take { get; set; }
+ string Description { get; set; }
+ List PartialFactors { get; }
+ double GetFactor(StressStates stressState, CalcTerms calcTerm, LimitStates limitStates);
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IPartialFactor.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IPartialFactor.cs
new file mode 100644
index 0000000..6aaf89c
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IPartialFactor.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public interface IPartialFactor : ICloneable
+ {
+ double FactorValue {get;set;}
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IReinforcementMaterialEntity.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IReinforcementMaterialEntity.cs
new file mode 100644
index 0000000..184aba0
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/IReinforcementMaterialEntity.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public interface IReinforcementMaterialEntity : ILibMaterialEntity
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/LibMaterialPepository.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/LibMaterialPepository.cs
new file mode 100644
index 0000000..4ba1a3c
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/LibMaterialPepository.cs
@@ -0,0 +1,30 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public static class LibMaterialPepository
+ {
+ private static List libMaterials;
+ public static List GetRepository()
+ {
+ if (libMaterials is null) { libMaterials = LibMaterialFactory.GetLibMaterials(); }
+
+ return libMaterials;
+ }
+
+ public static IEnumerable GetConcreteRepository(CodeTypes code)
+ {
+ return GetRepository().Where(x => x.CodeType == code & x is IConcreteMaterialEntity); ;
+ }
+
+ public static IEnumerable GetReinforcementRepository(CodeTypes code)
+ {
+ return GetRepository().Where(x => x.CodeType == code & x is IReinforcementMaterialEntity);
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/MaterialPartialFactor.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/MaterialPartialFactor.cs
new file mode 100644
index 0000000..8e90e1f
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/MaterialPartialFactor.cs
@@ -0,0 +1,52 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public class MaterialPartialFactor : IMaterialPartialFactor
+ {
+ private double factorValue;
+
+ public StressStates StressState { get; set; }
+ public CalcTerms CalcTerm { get; set; }
+ public LimitStates LimitState { get; set; }
+ public double FactorValue
+ {
+ get => factorValue;
+ set
+ {
+ if (value < 0 )
+ {
+ throw new StructureHelperException(ErrorStrings.FactorMustBeGraterThanZero);
+ }
+ factorValue = value;
+ }
+ }
+
+ public MaterialPartialFactor()
+ {
+ StressState = StressStates.Compression;
+ LimitState = LimitStates.ULS;
+ CalcTerm = CalcTerms.LongTerm;
+ FactorValue = 1d;
+ }
+
+ public object Clone()
+ {
+ var newItem = new MaterialPartialFactor()
+ {
+ StressState = StressState,
+ CalcTerm = CalcTerm,
+ LimitState = LimitState,
+ FactorValue = FactorValue,
+ };
+ return newItem;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/MaterialSafetyFactor.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/MaterialSafetyFactor.cs
new file mode 100644
index 0000000..c49d904
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/MaterialSafetyFactor.cs
@@ -0,0 +1,46 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public class MaterialSafetyFactor : IMaterialSafetyFactor
+ {
+ public string Name {get; set; }
+ public bool Take { get; set; }
+ public string Description { get; set; }
+ public List PartialFactors { get; }
+
+ public MaterialSafetyFactor()
+ {
+ Take = true;
+ Name = "New factor";
+ Description = "Material safety factor for ...";
+ PartialFactors = new List();
+ }
+
+ public double GetFactor(StressStates stressState, CalcTerms calcTerm, LimitStates limitStates)
+ {
+ double result = 1d;
+ var coefficients = PartialFactors.Where(x => (x.StressState == stressState & x.CalcTerm == calcTerm & x.LimitState == limitStates));
+ foreach (var item in coefficients) { result *= item.FactorValue;}
+ return result;
+ }
+
+ public object Clone()
+ {
+ var newItem = new MaterialSafetyFactor();
+ newItem.Take = Take;
+ newItem.Name = Name;
+ newItem.Description = Description;
+ foreach (var item in PartialFactors)
+ {
+ newItem.PartialFactors.Add(item.Clone() as IMaterialPartialFactor);
+ }
+ return newItem;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/ReinforcementMaterialEntity.cs b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/ReinforcementMaterialEntity.cs
new file mode 100644
index 0000000..3774e4f
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Materials/Libraries/ReinforcementMaterialEntity.cs
@@ -0,0 +1,16 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Materials.Libraries
+{
+ public class ReinforcementMaterialEntity : IReinforcementMaterialEntity
+ {
+ public CodeTypes CodeType { get; set; }
+ public string Name { get; set; }
+ public double MainStrength { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Sections/CompressedMember.cs b/StructureHelper/StructureHelperCommon/Models/Sections/CompressedMember.cs
new file mode 100644
index 0000000..7c2722f
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Sections/CompressedMember.cs
@@ -0,0 +1,37 @@
+using StructureHelperCommon.Services.Sections;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Sections
+{
+ public class CompressedMember : ICompressedMember
+ {
+ public bool Buckling { get; set; }
+ public double GeometryLength { get; set; }
+ public double LengthFactorX { get; set; }
+ public double DiagramFactorX { get; set; }
+ public double LengthFactorY { get; set; }
+ public double DiagramFactorY { get; set; }
+
+
+ public CompressedMember()
+ {
+ Buckling = true;
+ GeometryLength = 3d;
+ LengthFactorX = 1d;
+ DiagramFactorX = 1d;
+ LengthFactorY = 1d;
+ DiagramFactorY = 1d;
+ }
+
+ public object Clone()
+ {
+ var target = new CompressedMember();
+ CompressedMemberServices.CopyProperties(this, target);
+ return target;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Sections/ICompressedMember.cs b/StructureHelper/StructureHelperCommon/Models/Sections/ICompressedMember.cs
new file mode 100644
index 0000000..e3b3cb1
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Sections/ICompressedMember.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Sections
+{
+ public interface ICompressedMember : ICloneable
+ {
+ bool Buckling { get; set; }
+ double GeometryLength { get; set; }
+ double LengthFactorX { get; set; }
+ double DiagramFactorX { get; set; }
+ double LengthFactorY { get; set; }
+ double DiagramFactorY { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/ICenterShape.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/ICenterShape.cs
new file mode 100644
index 0000000..5c8e01c
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/ICenterShape.cs
@@ -0,0 +1,8 @@
+namespace StructureHelperCommon.Models.Shapes
+{
+ public interface ICenterShape
+ {
+ IPoint2D Center {get;}
+ IShape Shape { get;}
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/ICircle.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/ICircle.cs
new file mode 100644
index 0000000..93b181f
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/ICircle.cs
@@ -0,0 +1,7 @@
+namespace StructureHelperCommon.Models.Shapes
+{
+ public interface ICircle : IShape
+ {
+ double Diameter { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/ILineShape.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/ILineShape.cs
new file mode 100644
index 0000000..ea29670
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/ILineShape.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Shapes
+{
+ public interface ILineShape : IShape
+ {
+ IPoint2D StartPoint { get; set; }
+ IPoint2D EndPoint { get; set; }
+ double Thickness { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/IPoint2D.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/IPoint2D.cs
new file mode 100644
index 0000000..1ff92b1
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/IPoint2D.cs
@@ -0,0 +1,20 @@
+namespace StructureHelperCommon.Models.Shapes
+{
+ ///
+ /// Interface for point of center of some shape
+ /// Интерфейс для точки центра некоторой формы
+ ///
+ public interface IPoint2D
+ {
+ ///
+ /// Coordinate of center of rectangle by local axis X, m
+ /// Координата центра вдоль локальной оси X, м
+ ///
+ double X { get; set; }
+ ///
+ /// Coordinate of center of rectangle by local axis Y, m
+ /// Координата центра вдоль локальной оси Y, м
+ ///
+ double Y { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/IPointShape.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/IPointShape.cs
new file mode 100644
index 0000000..9692b68
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/IPointShape.cs
@@ -0,0 +1,7 @@
+namespace StructureHelperCommon.Models.Shapes
+{
+ public interface IPointShape : IShape
+ {
+ double Area { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/IRectangleShape.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/IRectangleShape.cs
new file mode 100644
index 0000000..d98dd10
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/IRectangleShape.cs
@@ -0,0 +1,18 @@
+namespace StructureHelperCommon.Models.Shapes
+{
+ public interface IRectangleShape : IShape
+ {
+ ///
+ /// Width of rectangle, m
+ ///
+ double Width { get; set; }
+ ///
+ /// Height of rectangle, m
+ ///
+ double Height { get; set; }
+ ///
+ /// Angle of rotating rectangle, rad
+ ///
+ double Angle { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/IShape.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/IShape.cs
new file mode 100644
index 0000000..d916974
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/IShape.cs
@@ -0,0 +1,6 @@
+namespace StructureHelperCommon.Models.Shapes
+{
+ public interface IShape
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/LineShape.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/LineShape.cs
new file mode 100644
index 0000000..a47471d
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/LineShape.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Models.Shapes
+{
+ ///
+ public class LineShape : ILineShape
+ {
+ ///
+ public IPoint2D StartPoint { get; set; }
+ ///
+ public IPoint2D EndPoint { get; set; }
+ ///
+ public double Thickness { get; set; }
+
+ public LineShape()
+ {
+ StartPoint = new Point2D();
+ EndPoint = new Point2D();
+ Thickness = 0;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/Point2D.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/Point2D.cs
new file mode 100644
index 0000000..0de37e1
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/Point2D.cs
@@ -0,0 +1,11 @@
+namespace StructureHelperCommon.Models.Shapes
+{
+ ///
+ public class Point2D : IPoint2D
+ {
+ ///
+ public double X { get; set; }
+ ///
+ public double Y { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/PointShape.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/PointShape.cs
new file mode 100644
index 0000000..15e0d6b
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/PointShape.cs
@@ -0,0 +1,7 @@
+namespace StructureHelperCommon.Models.Shapes
+{
+ public class PointShape : IPointShape
+ {
+ public double Area { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Models/Shapes/RectangleShape.cs b/StructureHelper/StructureHelperCommon/Models/Shapes/RectangleShape.cs
new file mode 100644
index 0000000..12f0a64
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Models/Shapes/RectangleShape.cs
@@ -0,0 +1,13 @@
+namespace StructureHelperCommon.Models.Shapes
+{
+ ///
+ public class RectangleShape : IRectangleShape
+ {
+ ///
+ public double Width { get; set; }
+ ///
+ public double Height { get; set; }
+ ///
+ public double Angle { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Properties/AssemblyInfo.cs b/StructureHelper/StructureHelperCommon/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..27e2e0c
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Общие сведения об этой сборке предоставляются следующим набором
+// набора атрибутов. Измените значения этих атрибутов для изменения сведений,
+// связанные со сборкой.
+[assembly: AssemblyTitle("StructureHelperCommon")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("StructureHelperCommon")]
+[assembly: AssemblyCopyright("Copyright © 2022")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми
+// для компонентов COM. Если необходимо обратиться к типу в этой сборке через
+// COM, задайте атрибуту ComVisible значение TRUE для этого типа.
+[assembly: ComVisible(false)]
+
+// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM
+[assembly: Guid("5dfec3fd-9677-47bb-9e88-eb71828b5913")]
+
+// Сведения о версии сборки состоят из указанных ниже четырех значений:
+//
+// Основной номер версии
+// Дополнительный номер версии
+// Номер сборки
+// Редакция
+//
+// Можно задать все значения или принять номера сборки и редакции по умолчанию
+// используя "*", как показано ниже:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/StructureHelper/StructureHelperCommon/Services/Calculations/AccuracyService.cs b/StructureHelper/StructureHelperCommon/Services/Calculations/AccuracyService.cs
new file mode 100644
index 0000000..c56bd0c
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Services/Calculations/AccuracyService.cs
@@ -0,0 +1,19 @@
+using LoaderCalculator;
+using StructureHelperCommon.Models.Calculators;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Services.Calculations
+{
+ public static class AccuracyService
+ {
+ public static void CopyProperties(IAccuracy source, IAccuracy target)
+ {
+ target.IterationAccuracy = source.IterationAccuracy;
+ target.MaxIterationCount = source.MaxIterationCount;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Services/ColorServices/ColorProcessor.cs b/StructureHelper/StructureHelperCommon/Services/ColorServices/ColorProcessor.cs
new file mode 100644
index 0000000..67f7980
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Services/ColorServices/ColorProcessor.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.Windows.Media;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
+
+namespace StructureHelperCommon.Services.ColorServices
+{
+ public static class ColorProcessor
+ {
+ public static Color GetRandomColor()
+ {
+ Thread.Sleep(100);
+ var randomR = new Random(new Random((int)DateTime.Now.Ticks % 1000).Next(50)).Next(0, 255);
+ var randomG = new Random(new Random((int)DateTime.Now.Ticks % 200).Next(100, 200)).Next(0, 255);
+ var randomB = new Random(new Random((int)DateTime.Now.Ticks % 50).Next(500, 1000)).Next(0, 255);
+ return Color.FromRgb((byte)randomR, (byte)randomG, (byte)randomB);
+ }
+ public static void EditColor(ref Color wpfColor)
+ {
+ var winformsColor = System.Drawing.Color.FromArgb(wpfColor.A, wpfColor.R, wpfColor.G, wpfColor.B);
+ ColorDialog dialog = new ColorDialog();
+ dialog.FullOpen = true;
+ dialog.Color = winformsColor;
+ if (dialog.ShowDialog() == DialogResult.OK)
+ {
+ wpfColor = Color.FromArgb(dialog.Color.A, dialog.Color.R, dialog.Color.G, dialog.Color.B);
+ }
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Services/Forces/ForceTupleService.cs b/StructureHelper/StructureHelperCommon/Services/Forces/ForceTupleService.cs
new file mode 100644
index 0000000..ccf0951
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Services/Forces/ForceTupleService.cs
@@ -0,0 +1,54 @@
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Models.Shapes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Services.Forces
+{
+ public static class ForceTupleService
+ {
+ public static IForceTuple MoveTupleIntoPoint(IForceTuple forceTuple, IPoint2D point2D)
+ {
+ var newTuple = forceTuple.Clone() as IForceTuple;
+ newTuple.Mx += newTuple.Nz * point2D.Y;
+ newTuple.My -= newTuple.Nz * point2D.X;
+ return newTuple;
+ }
+
+ public static IForceTuple InterpolateTuples(IForceTuple endTuple, IForceTuple startTuple = null, double coefficient = 0.5d)
+ {
+ if (startTuple == null) startTuple = new ForceTuple();
+ double dMx, dMy, dNz;
+ dMx = endTuple.Mx - startTuple.Mx;
+ dMy = endTuple.My - startTuple.My;
+ dNz = endTuple.Nz - startTuple.Nz;
+ return new ForceTuple()
+ {
+ Mx = startTuple.Mx + dMx * coefficient,
+ My = startTuple.My + dMy * coefficient,
+ Nz = startTuple.Nz + dNz * coefficient
+ };
+ }
+
+
+ public static List InterpolateDesignTuple(IDesignForceTuple finishDesignForce, IDesignForceTuple startDesignForce = null, int stepCount = 10)
+ {
+ if (startDesignForce.LimitState != finishDesignForce.LimitState) throw new StructureHelperException(ErrorStrings.LimitStatesIsNotValid);
+ if (startDesignForce.CalcTerm != finishDesignForce.CalcTerm) throw new StructureHelperException(ErrorStrings.LoadTermIsNotValid);
+ var tuples =new List();
+ double step = 1d / stepCount;
+ for (int i = 0; i <= stepCount; i++)
+ {
+ var currentTuple = InterpolateTuples(finishDesignForce.ForceTuple, startDesignForce.ForceTuple, i * step);
+ var currentDesignTuple = new DesignForceTuple() { LimitState = finishDesignForce.LimitState, CalcTerm = finishDesignForce.CalcTerm, ForceTuple = currentTuple };
+ tuples.Add(currentDesignTuple);
+ }
+ return tuples;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Services/Forces/StrainTupleService.cs b/StructureHelper/StructureHelperCommon/Services/Forces/StrainTupleService.cs
new file mode 100644
index 0000000..6a488bb
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Services/Forces/StrainTupleService.cs
@@ -0,0 +1,35 @@
+using LoaderCalculator.Data.Matrix;
+using StructureHelperCommon.Models.Forces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Services.Forces
+{
+ public static class StrainTupleService
+ {
+ public static void CopyProperties (IStrainTuple source, IStrainTuple target, double factor = 1 )
+ {
+ target.Kx = source.Kx * factor;
+ target.Ky = source.Ky * factor;
+ target.EpsZ = source.EpsZ * factor;
+ target.Gx = source.Gx * factor;
+ target.Gy = source.Gy * factor;
+ target.Gz = source.Gz * factor;
+ }
+
+ public static IStrainMatrix ConvertToLoaderStrainMatrix(IStrainTuple strainTuple)
+ {
+ IStrainMatrix strainMatrix = new StrainMatrix() { Kx = strainTuple.EpsZ, Ky = strainTuple.Ky, EpsZ = strainTuple.EpsZ };
+ return strainMatrix;
+ }
+
+ public static IStrainTuple ConvertToStrainTuple(IStrainMatrix strainMatrix)
+ {
+ IStrainTuple strainTuple = new StrainTuple() { Kx = strainMatrix.Kx, Ky = strainMatrix.Ky, EpsZ = strainMatrix.EpsZ };
+ return strainTuple;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Services/Sections/CompressedMemberServices.cs b/StructureHelper/StructureHelperCommon/Services/Sections/CompressedMemberServices.cs
new file mode 100644
index 0000000..e38a53e
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Services/Sections/CompressedMemberServices.cs
@@ -0,0 +1,22 @@
+using StructureHelperCommon.Models.Sections;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Services.Sections
+{
+ public static class CompressedMemberServices
+ {
+ public static void CopyProperties(ICompressedMember source, ICompressedMember target)
+ {
+ target.Buckling = source.Buckling;
+ target.GeometryLength = source.GeometryLength;
+ target.LengthFactorX = source.LengthFactorX;
+ target.DiagramFactorX = source.DiagramFactorX;
+ target.LengthFactorY = source.LengthFactorY;
+ target.DiagramFactorY = source.DiagramFactorY;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Services/ShapeServices/ShapeService.cs b/StructureHelper/StructureHelperCommon/Services/ShapeServices/ShapeService.cs
new file mode 100644
index 0000000..7c75825
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Services/ShapeServices/ShapeService.cs
@@ -0,0 +1,27 @@
+using StructureHelperCommon.Models.Shapes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Services.ShapeServices
+{
+ public static class ShapeService
+ {
+ public static void CopyLineProperties(ILineShape source, ILineShape target)
+ {
+ target.StartPoint.X = source.StartPoint.X;
+ target.StartPoint.Y = source.StartPoint.Y;
+ target.EndPoint.X = source.EndPoint.X;
+ target.EndPoint.Y = source.EndPoint.Y;
+ }
+
+ public static void CopyRectangleProperties(IRectangleShape source, IRectangleShape target)
+ {
+ target.Width = source.Width;
+ target.Height = source.Height;
+ target.Angle = source.Angle;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Services/Units/IUnit.cs b/StructureHelper/StructureHelperCommon/Services/Units/IUnit.cs
new file mode 100644
index 0000000..7a81584
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Services/Units/IUnit.cs
@@ -0,0 +1,20 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Services.Units
+{
+ ///
+ /// Interface for measurements Unit
+ ///
+ public interface IUnit
+ {
+
+ UnitTypes UnitType { get; }
+ string Name { get; }
+ double Multiplyer { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Services/Units/Unit.cs b/StructureHelper/StructureHelperCommon/Services/Units/Unit.cs
new file mode 100644
index 0000000..d3e2cf2
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Services/Units/Unit.cs
@@ -0,0 +1,16 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Services.Units
+{
+ public class Unit : IUnit
+ {
+ public UnitTypes UnitType { get; set; }
+ public string Name { get; set; }
+ public double Multiplyer { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/Services/Units/UnitsFactory.cs b/StructureHelper/StructureHelperCommon/Services/Units/UnitsFactory.cs
new file mode 100644
index 0000000..8620ad4
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/Services/Units/UnitsFactory.cs
@@ -0,0 +1,44 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperCommon.Services.Units
+{
+ public static class UnitsFactory
+ {
+ public static List GetUnitCollection()
+ {
+ List units = new List();
+ UnitTypes type = UnitTypes.Length;
+ units.Add(new Unit() { UnitType = type, Name = "m", Multiplyer = 1d });
+ units.Add(new Unit() { UnitType = type, Name = "mm", Multiplyer = 1e3d });
+ units.Add(new Unit() { UnitType = type, Name = "cm", Multiplyer = 1e2d });
+ units.Add(new Unit() { UnitType = type, Name = "km", Multiplyer = 1e-3d });
+ type = UnitTypes.Area;
+ units.Add(new Unit() { UnitType = type, Name = "m2", Multiplyer = 1d });
+ units.Add(new Unit() { UnitType = type, Name = "mm2", Multiplyer = 1e6d });
+ units.Add(new Unit() { UnitType = type, Name = "cm2", Multiplyer = 1e4d });
+ type = UnitTypes.Stress;
+ units.Add(new Unit() { UnitType = type, Name = "Pa", Multiplyer = 1d });
+ units.Add(new Unit() { UnitType = type, Name = "kPa", Multiplyer = 1e-3d });
+ units.Add(new Unit() { UnitType = type, Name = "MPa", Multiplyer = 1e-6d });
+ type = UnitTypes.Force;
+ units.Add(new Unit() { UnitType = type, Name = "N", Multiplyer = 1d });
+ units.Add(new Unit() { UnitType = type, Name = "kN", Multiplyer = 1e-3d });
+ units.Add(new Unit() { UnitType = type, Name = "MN", Multiplyer = 1e-6d });
+ type = UnitTypes.Moment;
+ units.Add(new Unit() { UnitType = type, Name = "Nm", Multiplyer = 1d });
+ units.Add(new Unit() { UnitType = type, Name = "kNm", Multiplyer = 1e-3d });
+ units.Add(new Unit() { UnitType = type, Name = "kgfm", Multiplyer = 9.8d });
+ units.Add(new Unit() { UnitType = type, Name = "tfm", Multiplyer = 9.8e-3d });
+ type = UnitTypes.Curvature;
+ units.Add(new Unit() { UnitType = type, Name = "1/m", Multiplyer = 1d });
+ units.Add(new Unit() { UnitType = type, Name = "1/mm", Multiplyer = 1e-3d });
+ units.Add(new Unit() { UnitType = type, Name = "1/cm", Multiplyer = 1e-2d });
+ return units;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperCommon/StructureHelperCommon.csproj b/StructureHelper/StructureHelperCommon/StructureHelperCommon.csproj
new file mode 100644
index 0000000..d5e146a
--- /dev/null
+++ b/StructureHelper/StructureHelperCommon/StructureHelperCommon.csproj
@@ -0,0 +1,118 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {5DFEC3FD-9677-47BB-9E88-EB71828B5913}
+ Library
+ Properties
+ StructureHelperCommon
+ StructureHelperCommon
+ v4.7.2
+ 512
+ true
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\Libraries\LoaderCalculator.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/StructureHelperCommon/StructureHelperCommon.csproj.bak b/StructureHelper/StructureHelperCommon/StructureHelperCommon.csproj.bak
similarity index 100%
rename from StructureHelperCommon/StructureHelperCommon.csproj.bak
rename to StructureHelper/StructureHelperCommon/StructureHelperCommon.csproj.bak
diff --git a/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/CalculationProperty.cs b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/CalculationProperty.cs
new file mode 100644
index 0000000..dc08f1f
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/CalculationProperty.cs
@@ -0,0 +1,24 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System.Collections.Generic;
+
+namespace StructureHelperLogics.Models.Calculations.CalculationProperties
+{
+ public class CalculationProperty : ICalculationProperty
+ {
+ public List ForceCombinations { get; set; }
+ public LimitStates LimitState { get; set; }
+ public CalcTerms CalcTerm { get; set; }
+ public IIterationProperty IterationProperty { get; }
+
+ public CalculationProperty()
+ {
+ ForceCombinations = new List
+ {
+ new ForceCombination()
+ };
+ LimitState = LimitStates.ULS;
+ CalcTerm = CalcTerms.ShortTerm;
+ IterationProperty = new IterationProperty() { Accuracy = 0.001d, MaxIterationCount = 100};
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/ForceCombination.cs b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/ForceCombination.cs
new file mode 100644
index 0000000..731ddca
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/ForceCombination.cs
@@ -0,0 +1,19 @@
+using LoaderCalculator.Data.Matrix;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace StructureHelperLogics.Models.Calculations.CalculationProperties
+{
+ public class ForceCombination : IForceCombination
+ {
+ public IForceMatrix ForceMatrix { get; private set; }
+ public bool TakeInCalculate { get; set; }
+
+ public ForceCombination()
+ {
+ ForceMatrix = new ForceMatrix() { Mx = 0d, My = 0d, Nz = 0d};
+ TakeInCalculate = true;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/ICalculationProperty.cs b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/ICalculationProperty.cs
new file mode 100644
index 0000000..3530460
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/ICalculationProperty.cs
@@ -0,0 +1,13 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using System.Collections.Generic;
+
+namespace StructureHelperLogics.Models.Calculations.CalculationProperties
+{
+ public interface ICalculationProperty
+ {
+ List ForceCombinations { get; set; }
+ LimitStates LimitState { get; set; }
+ CalcTerms CalcTerm { get; set; }
+ IIterationProperty IterationProperty {get;}
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/IForceCombination.cs b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/IForceCombination.cs
new file mode 100644
index 0000000..edbbc6b
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/IForceCombination.cs
@@ -0,0 +1,13 @@
+using LoaderCalculator.Data.Matrix;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace StructureHelperLogics.Models.Calculations.CalculationProperties
+{
+ public interface IForceCombination
+ {
+ IForceMatrix ForceMatrix { get; }
+ bool TakeInCalculate { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/IIterationProperty.cs b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/IIterationProperty.cs
new file mode 100644
index 0000000..05a3023
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/IIterationProperty.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace StructureHelperLogics.Models.Calculations.CalculationProperties
+{
+ public interface IIterationProperty
+ {
+ double Accuracy { get; set; }
+ int MaxIterationCount { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/IterationProperty.cs b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/IterationProperty.cs
new file mode 100644
index 0000000..51a99fe
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationProperties/IterationProperty.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace StructureHelperLogics.Models.Calculations.CalculationProperties
+{
+ public class IterationProperty : IIterationProperty
+ {
+ public double Accuracy { get; set; }
+ public int MaxIterationCount { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationsResults/CalculationResult.cs b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationsResults/CalculationResult.cs
new file mode 100644
index 0000000..1c0eb99
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationsResults/CalculationResult.cs
@@ -0,0 +1,18 @@
+using LoaderCalculator.Data.ResultData;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace StructureHelperLogics.Models.Calculations.CalculationsResults
+{
+ ///
+ class CalculationResult : ICalculationResult
+ {
+ ///
+ public bool IsValid { get; set; }
+ ///
+ public string Desctription { get; set; }
+ ///
+ public ILoaderResults LoaderResults { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationsResults/ICalculationResult.cs b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationsResults/ICalculationResult.cs
new file mode 100644
index 0000000..5ab8105
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Calculations/CalculationsResults/ICalculationResult.cs
@@ -0,0 +1,26 @@
+using LoaderCalculator.Data.ResultData;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace StructureHelperLogics.Models.Calculations.CalculationsResults
+{
+ ///
+ /// Represent result of calculation of ndm analisys
+ ///
+ public interface ICalculationResult
+ {
+ ///
+ /// True if result of calculation is valid
+ ///
+ bool IsValid { get; }
+ ///
+ /// Text of result of calculations
+ ///
+ string Desctription { get; }
+ ///
+ /// Keep result of calculations from ndm-library
+ ///
+ ILoaderResults LoaderResults { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/CrossSections/CrossSection.cs b/StructureHelper/StructureHelperLogics/Models/CrossSections/CrossSection.cs
new file mode 100644
index 0000000..5ecbe14
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/CrossSections/CrossSection.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.CrossSections
+{
+ public class CrossSection : ICrossSection
+ {
+ public ICrossSectionRepository SectionRepository { get; private set; }
+
+ public CrossSection()
+ {
+ SectionRepository = new CrossSectionRepository();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/CrossSections/CrossSectionRepository.cs b/StructureHelper/StructureHelperLogics/Models/CrossSections/CrossSectionRepository.cs
new file mode 100644
index 0000000..8a634c0
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/CrossSections/CrossSectionRepository.cs
@@ -0,0 +1,29 @@
+using StructureHelper.Models.Materials;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperLogics.NdmCalculations.Analyses;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.CrossSections
+{
+ public class CrossSectionRepository : ICrossSectionRepository
+ {
+ public List ForceCombinationLists { get; private set; }
+ public List HeadMaterials { get; private set; }
+ public List Primitives { get; }
+ public List CalculatorsList { get; private set; }
+
+ public CrossSectionRepository()
+ {
+ ForceCombinationLists = new List();
+ HeadMaterials = new List();
+ Primitives = new List();
+ CalculatorsList = new List();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/CrossSections/ICrossSection.cs b/StructureHelper/StructureHelperLogics/Models/CrossSections/ICrossSection.cs
new file mode 100644
index 0000000..2b6a597
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/CrossSections/ICrossSection.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.CrossSections
+{
+ public interface ICrossSection
+ {
+ ICrossSectionRepository SectionRepository { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/CrossSections/ICrossSectionRepository.cs b/StructureHelper/StructureHelperLogics/Models/CrossSections/ICrossSectionRepository.cs
new file mode 100644
index 0000000..2499617
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/CrossSections/ICrossSectionRepository.cs
@@ -0,0 +1,20 @@
+using StructureHelper.Models.Materials;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperLogics.Models.Materials;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperLogics.NdmCalculations.Analyses;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.CrossSections
+{
+ public interface ICrossSectionRepository : IHasHeadMaterials, IHasPrimitives
+ {
+ List ForceCombinationLists { get; }
+ List CalculatorsList { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/ConcreteLibMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/ConcreteLibMaterial.cs
new file mode 100644
index 0000000..1d6a5d3
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/ConcreteLibMaterial.cs
@@ -0,0 +1,54 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperCommon.Models.Materials.Libraries;
+using LCM = LoaderCalculator.Data.Materials;
+using LCMB = LoaderCalculator.Data.Materials.MaterialBuilders;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using StructureHelperCommon.Infrastructures.Settings;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public class ConcreteLibMaterial : IConcreteLibMaterial
+ {
+ public ILibMaterialEntity MaterialEntity { get; set; }
+ public List SafetyFactors { get; }
+ public bool TensionForULS { get ; set; }
+ public bool TensionForSLS { get; set; }
+
+ private IMaterialOptionLogic optionLogic;
+
+ public ConcreteLibMaterial()
+ {
+ SafetyFactors = new List();
+ SafetyFactors.AddRange(PartialCoefficientFactory.GetDefaultConcreteSafetyFactors(ProgramSetting.CodeType));
+ optionLogic = new MaterialOptionLogic(new LCMB.ConcreteOptions());
+ }
+
+ public object Clone()
+ {
+ return new ConcreteLibMaterial() { MaterialEntity = MaterialEntity, TensionForULS = TensionForULS, TensionForSLS = TensionForSLS };
+ }
+
+ public LCM.IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm)
+ {
+ var materialOptions = optionLogic.SetMaterialOptions(MaterialEntity, limitState, calcTerm);
+ double compressionVal = 1d;
+ double tensionVal = 1d;
+ foreach (var item in SafetyFactors.Where(x => x.Take == true))
+ {
+ compressionVal *= item.GetFactor(StressStates.Compression, calcTerm, limitState);
+ tensionVal *= item.GetFactor(StressStates.Tension, calcTerm, limitState);
+ }
+ materialOptions.ExternalFactor.Compressive = compressionVal;
+ materialOptions.ExternalFactor.Tensile = tensionVal;
+ LCMB.IMaterialBuilder builder = new LCMB.ConcreteBuilder(materialOptions);
+ LCMB.IBuilderDirector director = new LCMB.BuilderDirector(builder);
+ return director.BuildMaterial();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/ElasticMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/ElasticMaterial.cs
new file mode 100644
index 0000000..0d47185
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/ElasticMaterial.cs
@@ -0,0 +1,43 @@
+using LoaderCalculator.Data.Materials;
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperLogics.Models.Materials;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public class ElasticMaterial : IElasticMaterial
+ {
+ public double Modulus { get; set; }
+ public double CompressiveStrength { get; set; }
+ public double TensileStrength { get; set; }
+
+ public IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm)
+ {
+ IMaterial material = new Material();
+ material.InitModulus = Modulus;
+ IEnumerable parameters = new List() { Modulus, CompressiveStrength, TensileStrength};
+ material.DiagramParameters = parameters;
+ material.Diagram = GetStress;
+ return material;
+ }
+
+ private double GetStress (IEnumerable parameters, double strain)
+ {
+ double modulus = parameters.First();
+ double stress = modulus * strain;
+ double compressiveStrength = (-1d) * parameters.ElementAt(1);
+ double tensileStrength = parameters.ElementAt(2);
+ if (stress > tensileStrength || stress < compressiveStrength) { return 0d; }
+ else { return stress; }
+ }
+
+ public object Clone()
+ {
+ return new ElasticMaterial() { Modulus = Modulus, CompressiveStrength = CompressiveStrength, TensileStrength = TensileStrength };
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/Factories/HeadMaterialFactory.cs b/StructureHelper/StructureHelperLogics/Models/Materials/Factories/HeadMaterialFactory.cs
new file mode 100644
index 0000000..82ef0a7
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/Factories/HeadMaterialFactory.cs
@@ -0,0 +1,66 @@
+using StructureHelper.Models.Materials;
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Settings;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperCommon.Models.Materials.Libraries;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public enum HeadmaterialType
+ {
+ Concrete40,
+ Reinforecement400,
+ Elastic200
+ }
+
+ public static class HeadMaterialFactory
+ {
+ private static CodeTypes codeType;
+ private static IEnumerable LibConcreteMaterials => LibMaterialPepository.GetConcreteRepository(codeType);
+ private static IEnumerable LibReinforcementMaterials => LibMaterialPepository.GetReinforcementRepository(codeType);
+
+ public static IHeadMaterial GetHeadMaterial(HeadmaterialType type, CodeTypes code)
+ {
+ codeType = code;
+ if (type == HeadmaterialType.Concrete40) { return GetConcrete40(); }
+ if (type == HeadmaterialType.Reinforecement400) { return GetReinforcement400(); }
+ if (type == HeadmaterialType.Elastic200) { return GetElastic200(); }
+ else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + nameof(type));
+ }
+
+ private static IHeadMaterial GetElastic200()
+ {
+ var material = new HeadMaterial();
+ material.HelperMaterial = new ElasticMaterial() { Modulus = 2e11d, CompressiveStrength = 4e8d, TensileStrength = 4e8d };
+ return material;
+ }
+
+ private static IHeadMaterial GetReinforcement400()
+ {
+ var material = new HeadMaterial() { Name = "New reinforcement" };
+ var libMaterial = LibReinforcementMaterials.Where(x => x.Name.Contains("400")).First();
+ var libMat = new ReinforcementLibMaterial();
+ libMat.MaterialEntity = libMaterial;
+ material.HelperMaterial = libMat;
+ return material;
+ }
+
+ private static IHeadMaterial GetConcrete40()
+ {
+ var material = new HeadMaterial();
+ var libMaterial = LibConcreteMaterials.Where(x => x.Name.Contains("40")).First();
+ var libMat = new ConcreteLibMaterial();
+ libMat.MaterialEntity = libMaterial;
+ libMat.TensionForULS = false;
+ libMat.TensionForSLS = true;
+ material.HelperMaterial = libMat;
+ return material;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/Factories/PartialCoefficientFactory.cs b/StructureHelper/StructureHelperLogics/Models/Materials/Factories/PartialCoefficientFactory.cs
new file mode 100644
index 0000000..175d93d
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/Factories/PartialCoefficientFactory.cs
@@ -0,0 +1,44 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperCommon.Models.Materials.Libraries;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public static class PartialCoefficientFactory
+ {
+ public static List GetDefaultConcreteSafetyFactors(CodeTypes codeType)
+ {
+ if (codeType == CodeTypes.SP63_13330_2018) return GetConcreteFactorsSP63_2018();
+ else if (codeType == CodeTypes.EuroCode_2_1990) return GetConcreteFactorsEC2_1990();
+ else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + ": " + codeType);
+ }
+
+ private static List GetConcreteFactorsEC2_1990()
+ {
+ List factors = new List();
+ return factors;
+ }
+
+ private static List GetConcreteFactorsSP63_2018()
+ {
+ List factors = new List();
+ IMaterialSafetyFactor coefficient;
+ coefficient = ConcreteFactorsFactory.GetFactor(FactorType.LongTermFactor);
+ coefficient.Take = true;
+ factors.Add(coefficient);
+ coefficient = ConcreteFactorsFactory.GetFactor(FactorType.PlainConcreteFactor);
+ coefficient.Take = false;
+ factors.Add(coefficient);
+ coefficient = ConcreteFactorsFactory.GetFactor(FactorType.BleedingFactor);
+ coefficient.Take = false;
+ factors.Add(coefficient);
+ return factors;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/HeadMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/HeadMaterial.cs
new file mode 100644
index 0000000..7ae52e0
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/HeadMaterial.cs
@@ -0,0 +1,59 @@
+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 StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Services.ColorServices;
+using StructureHelperLogics.Models.Materials;
+
+namespace StructureHelper.Models.Materials
+{
+ public class HeadMaterial : IHeadMaterial, INotifyPropertyChanged
+ {
+ private Color color;
+
+ public string Id { get; }
+ public string Name { get; set; }
+ public Color Color
+ {
+ get => color;
+ set
+ {
+ color = value;
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Color)));
+ }
+ }
+ public IHelperMaterial HelperMaterial {get; set;}
+
+ public HeadMaterial()
+ {
+ Id = Convert.ToString(Guid.NewGuid());
+ Color = ColorProcessor.GetRandomColor();
+ }
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ public IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm)
+ {
+ return HelperMaterial.GetLoaderMaterial(limitState, calcTerm);
+ }
+
+ public object Clone()
+ {
+ IHeadMaterial material = new HeadMaterial
+ {
+ Name = Name,
+ Color = Color,
+ HelperMaterial = HelperMaterial.Clone() as IHelperMaterial
+ };
+ return material;
+ }
+
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/HeadMaterialRepository.cs b/StructureHelper/StructureHelperLogics/Models/Materials/HeadMaterialRepository.cs
new file mode 100644
index 0000000..3afd932
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/HeadMaterialRepository.cs
@@ -0,0 +1,32 @@
+using StructureHelper.Models.Materials;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public class HeadMaterialRepository : IHeadMaterialRepository
+ {
+ public object Parent { get; private set; }
+
+ public List HeadMaterials { get; set; }
+
+ public HeadMaterialRepository()
+ {
+ HeadMaterials = new List();
+ }
+
+ public HeadMaterialRepository(object parent)
+ {
+ Parent = parent;
+ HeadMaterials = new List();
+ }
+
+ public void RegisterParent(object obj)
+ {
+ Parent = obj;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/IConcreteLibMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/IConcreteLibMaterial.cs
new file mode 100644
index 0000000..0cac2da
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/IConcreteLibMaterial.cs
@@ -0,0 +1,15 @@
+using StructureHelperCommon.Models.Materials.Libraries;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public interface IConcreteLibMaterial : ILibMaterial
+ {
+ bool TensionForULS { get; set; }
+ bool TensionForSLS { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/IElasticMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/IElasticMaterial.cs
new file mode 100644
index 0000000..9974916
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/IElasticMaterial.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public interface IElasticMaterial : IHelperMaterial
+ {
+ double Modulus { get; set; }
+ double CompressiveStrength { get; set; }
+ double TensileStrength { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/IHasHeadMaterials.cs b/StructureHelper/StructureHelperLogics/Models/Materials/IHasHeadMaterials.cs
new file mode 100644
index 0000000..8a21667
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/IHasHeadMaterials.cs
@@ -0,0 +1,14 @@
+using StructureHelper.Models.Materials;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public interface IHasHeadMaterials
+ {
+ List HeadMaterials { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/IHeadMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/IHeadMaterial.cs
new file mode 100644
index 0000000..fb1b017
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/IHeadMaterial.cs
@@ -0,0 +1,22 @@
+using LoaderCalculator.Data.Materials;
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperLogics.Models.Materials;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+
+namespace StructureHelper.Models.Materials
+{
+ public interface IHeadMaterial : ICloneable
+ {
+ string Id { get; }
+ string Name { get; set; }
+ Color Color { get; set; }
+ IHelperMaterial HelperMaterial { get; set; }
+ //MaterialDefinitionBase Material { get; set; }
+ IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm);
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/IHeadMaterialRepository.cs b/StructureHelper/StructureHelperLogics/Models/Materials/IHeadMaterialRepository.cs
new file mode 100644
index 0000000..5b16aca
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/IHeadMaterialRepository.cs
@@ -0,0 +1,18 @@
+using StructureHelper.Models.Materials;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public interface IHeadMaterialRepository
+ {
+ object Parent { get; }
+ List HeadMaterials { get; set; }
+ void RegisterParent(object obj);
+
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/IHelperMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/IHelperMaterial.cs
new file mode 100644
index 0000000..a119393
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/IHelperMaterial.cs
@@ -0,0 +1,14 @@
+using LoaderCalculator.Data.Materials;
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperLogics.Models.Materials;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public interface IHelperMaterial : ICloneable
+ {
+ IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm);
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/ILibMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/ILibMaterial.cs
new file mode 100644
index 0000000..b162bce
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/ILibMaterial.cs
@@ -0,0 +1,15 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Materials.Libraries;
+using StructureHelperLogics.Models.Materials;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public interface ILibMaterial : IHelperMaterial
+ {
+ ILibMaterialEntity MaterialEntity { get; set; }
+ List SafetyFactors { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/IMaterialOptionLogic.cs b/StructureHelper/StructureHelperLogics/Models/Materials/IMaterialOptionLogic.cs
new file mode 100644
index 0000000..df7e3f0
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/IMaterialOptionLogic.cs
@@ -0,0 +1,12 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Materials.Libraries;
+using LCM = LoaderCalculator.Data.Materials;
+using LCMB = LoaderCalculator.Data.Materials.MaterialBuilders;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public interface IMaterialOptionLogic
+ {
+ LCMB.IMaterialOptions SetMaterialOptions(ILibMaterialEntity materialEntity, LimitStates limitState, CalcTerms calcTerm);
+ }
+}
\ No newline at end of file
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/IReinforcementLibMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/IReinforcementLibMaterial.cs
new file mode 100644
index 0000000..7470504
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/IReinforcementLibMaterial.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public interface IReinforcementLibMaterial : ILibMaterial
+ {
+
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/LibMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/LibMaterial.cs
new file mode 100644
index 0000000..87302dc
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/LibMaterial.cs
@@ -0,0 +1,91 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperCommon.Models.Materials.Libraries;
+using System.Collections.Generic;
+using LCM = LoaderCalculator.Data.Materials;
+using LCMB = LoaderCalculator.Data.Materials.MaterialBuilders;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public class LibMaterial : ILibMaterial
+ {
+ private LCMB.IMaterialOptions materialOptions;
+
+ public MaterialTypes MaterialType { get; set; }
+ private CodeTypes codeType;
+
+ private LimitStates limitState;
+ private CalcTerms calcTerm;
+ public string Name { get; set; }
+ public double MainStrength { get; set; }
+
+ public ILibMaterialEntity MaterialEntity { get; set; }
+
+ public List SafetyFactors { get; }
+
+ public LibMaterial(MaterialTypes materialType, CodeTypes codeType, string name, double mainStrength)
+ {
+ this.MaterialType = materialType;
+ this.codeType = codeType;
+ Name = name;
+ MainStrength = mainStrength;
+ }
+
+ public LCM.IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm)
+ {
+ this.limitState = limitState;
+ this.calcTerm = calcTerm;
+ if (MaterialType == MaterialTypes.Concrete)
+ { return GetConcrete();}
+ else if (MaterialType == MaterialTypes.Reinforcement)
+ { return GetReinfrocement();}
+ else throw new StructureHelperException($"{ErrorStrings.ObjectTypeIsUnknown}: material type = {MaterialType}, code type = {codeType}");
+ }
+
+
+ private LCM.IMaterial GetReinfrocement()
+ {
+ materialOptions = new LCMB.ReinforcementOptions();
+ SetMaterialOptions();
+ LCMB.IMaterialBuilder builder = new LCMB.ReinforcementBuilder(materialOptions);
+ LCMB.IBuilderDirector director = new LCMB.BuilderDirector(builder);
+ return director.BuildMaterial();
+ }
+
+ private LCM.IMaterial GetConcrete()
+ {
+ materialOptions = new LCMB.ConcreteOptions();
+ SetMaterialOptions();
+ LCMB.IMaterialBuilder builder = new LCMB.ConcreteBuilder(materialOptions);
+ LCMB.IBuilderDirector director = new LCMB.BuilderDirector(builder);
+ return director.BuildMaterial();
+ }
+
+ private void SetMaterialOptions()
+ {
+ materialOptions.Strength = MainStrength;
+ if (codeType == CodeTypes.EuroCode_2_1990)
+ {
+ materialOptions.CodesType = LCMB.CodesType.EC2_1990;
+ }
+ else if (codeType == CodeTypes.SP63_13330_2018)
+ {
+ materialOptions.CodesType = LCMB.CodesType.SP63_2018;
+ }
+ else { throw new StructureHelperException($"{ErrorStrings.ObjectTypeIsUnknown} : {codeType}"); }
+ if (limitState == LimitStates.ULS) { materialOptions.LimitState = LCMB.LimitStates.Collapse; }
+ else if (limitState == LimitStates.SLS) { materialOptions.LimitState = LCMB.LimitStates.ServiceAbility; }
+ else if (limitState == LimitStates.Special) { materialOptions.LimitState = LCMB.LimitStates.Special; }
+ else { throw new StructureHelperException(ErrorStrings.LimitStatesIsNotValid); }
+ if (calcTerm == CalcTerms.ShortTerm) { materialOptions.IsShortTerm = true; }
+ else if (calcTerm == CalcTerms.LongTerm) { materialOptions.IsShortTerm = false; }
+ else { throw new StructureHelperException(ErrorStrings.LoadTermIsNotValid); }
+ }
+
+ public object Clone()
+ {
+ return new LibMaterial(this.MaterialType, this.codeType, this.Name, this.MainStrength);
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/MaterialOptionLogic.cs b/StructureHelper/StructureHelperLogics/Models/Materials/MaterialOptionLogic.cs
new file mode 100644
index 0000000..86fe4d6
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/MaterialOptionLogic.cs
@@ -0,0 +1,46 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperCommon.Models.Materials.Libraries;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using LCMB = LoaderCalculator.Data.Materials.MaterialBuilders;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public class MaterialOptionLogic : IMaterialOptionLogic
+ {
+ private LCMB.IMaterialOptions materialOptions;
+
+ public MaterialOptionLogic(LCMB.IMaterialOptions materialOptions)
+ {
+ this.materialOptions = materialOptions;
+ }
+
+ public LCMB.IMaterialOptions SetMaterialOptions(ILibMaterialEntity materialEntity, LimitStates limitState, CalcTerms calcTerm)
+ {
+ materialOptions.Strength = materialEntity.MainStrength;
+ if (materialEntity.CodeType == CodeTypes.EuroCode_2_1990)
+ {
+ materialOptions.CodesType = LCMB.CodesType.EC2_1990;
+ }
+ else if (materialEntity.CodeType == CodeTypes.SP63_13330_2018)
+ {
+ materialOptions.CodesType = LCMB.CodesType.SP63_2018;
+ }
+ else { throw new StructureHelperException($"{ErrorStrings.ObjectTypeIsUnknown} : {materialOptions.CodesType}"); }
+ if (limitState == LimitStates.ULS) { materialOptions.LimitState = LCMB.LimitStates.Collapse; }
+ else if (limitState == LimitStates.SLS) { materialOptions.LimitState = LCMB.LimitStates.ServiceAbility; }
+ else if (limitState == LimitStates.Special) { materialOptions.LimitState = LCMB.LimitStates.Special; }
+ else { throw new StructureHelperException(ErrorStrings.LimitStatesIsNotValid); }
+ if (calcTerm == CalcTerms.ShortTerm) { materialOptions.IsShortTerm = true; }
+ else if (calcTerm == CalcTerms.LongTerm) { materialOptions.IsShortTerm = false; }
+ else { throw new StructureHelperException(ErrorStrings.LoadTermIsNotValid); }
+
+ return materialOptions;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Materials/ReinforcementLibMaterial.cs b/StructureHelper/StructureHelperLogics/Models/Materials/ReinforcementLibMaterial.cs
new file mode 100644
index 0000000..94f86fc
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Materials/ReinforcementLibMaterial.cs
@@ -0,0 +1,48 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Materials.Libraries;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using LCM = LoaderCalculator.Data.Materials;
+using LCMB = LoaderCalculator.Data.Materials.MaterialBuilders;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public class ReinforcementLibMaterial : IReinforcementLibMaterial
+ {
+ public ILibMaterialEntity MaterialEntity { get; set; }
+ public List SafetyFactors { get; }
+
+ private IMaterialOptionLogic optionLogic;
+
+ public ReinforcementLibMaterial()
+ {
+ SafetyFactors = new List();
+ optionLogic = new MaterialOptionLogic(new LCMB.ReinforcementOptions());
+ }
+
+ public object Clone()
+ {
+ return new ReinforcementLibMaterial() { MaterialEntity = MaterialEntity};
+ }
+
+ public LCM.IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm)
+ {
+ var materialOptions = optionLogic.SetMaterialOptions(MaterialEntity, limitState, calcTerm);
+ double compressionVal = 1d;
+ double tensionVal = 1d;
+ foreach (var item in SafetyFactors.Where(x => x.Take == true))
+ {
+ compressionVal *= item.GetFactor(StressStates.Compression, calcTerm, limitState);
+ tensionVal *= item.GetFactor(StressStates.Tension, calcTerm, limitState);
+ }
+ materialOptions.ExternalFactor.Compressive = compressionVal;
+ materialOptions.ExternalFactor.Tensile = tensionVal;
+ LCMB.IMaterialBuilder builder = new LCMB.ReinforcementBuilder(materialOptions);
+ LCMB.IBuilderDirector director = new LCMB.BuilderDirector(builder);
+ return director.BuildMaterial();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Primitives/IPrimitive.cs b/StructureHelper/StructureHelperLogics/Models/Primitives/IPrimitive.cs
new file mode 100644
index 0000000..90e9c09
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Primitives/IPrimitive.cs
@@ -0,0 +1,21 @@
+using LoaderCalculator.Data.Ndms;
+using StructureHelperCommon.Infrastructures.Interfaces;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Primitives
+{
+ public interface IPrimitive : ISaveable, ICloneable
+ {
+ string Name { get; set; }
+ IPoint2D Center { get; }
+ IShape Shape { get; }
+
+ IEnumerable GetNdmPrimitives();
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Primitives/LinePrimitive.cs b/StructureHelper/StructureHelperLogics/Models/Primitives/LinePrimitive.cs
new file mode 100644
index 0000000..ff0cffe
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Primitives/LinePrimitive.cs
@@ -0,0 +1,38 @@
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Primitives
+{
+ public class LinePrimitive : IPrimitive
+ {
+ public int Id { get; set; }
+ public string Name { get; set; }
+ public IPoint2D Center { get; set; }
+ public IShape Shape { get; }
+
+ public LinePrimitive()
+ {
+
+ }
+
+ public IEnumerable GetNdmPrimitives()
+ {
+ throw new NotImplementedException();
+ }
+
+ public object Clone()
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Save()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/CalculatorLogic.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/CalculatorLogic.cs
new file mode 100644
index 0000000..9a2ad9f
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/CalculatorLogic.cs
@@ -0,0 +1,20 @@
+using StructureHelperLogics.NdmCalculations.Analyses;
+using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections
+{
+ internal class CalculatorLogic : ICalculatorLogic
+ {
+ public IEnumerable GetNdmCalculators()
+ {
+ var calculators = new List();
+ calculators.Add(new ForceCalculator() { Name = "New Force Calculator"});
+ return calculators;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ForceLogic.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ForceLogic.cs
new file mode 100644
index 0000000..9d078da
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ForceLogic.cs
@@ -0,0 +1,22 @@
+using StructureHelperCommon.Models.Forces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections
+{
+ internal class ForceLogic : IForceLogic
+ {
+ public IEnumerable GetCombinationList()
+ {
+ var combinations = new List();
+ var combination = new ForceCombinationList() { Name = "New Force Action"};
+ combination.DesignForces.Clear();
+ combination.DesignForces.AddRange(ForceCombinationListFactory.GetDesignForces(DesignForceType.Suit_1));
+ combinations.Add(combination);
+ return combinations;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ICalculatorLogic.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ICalculatorLogic.cs
new file mode 100644
index 0000000..dc4453a
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ICalculatorLogic.cs
@@ -0,0 +1,14 @@
+using StructureHelperLogics.NdmCalculations.Analyses;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections
+{
+ internal interface ICalculatorLogic
+ {
+ IEnumerable GetNdmCalculators();
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ICrossSectionTemplate.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ICrossSectionTemplate.cs
new file mode 100644
index 0000000..2837f00
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ICrossSectionTemplate.cs
@@ -0,0 +1,14 @@
+using StructureHelperLogics.Models.CrossSections;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections
+{
+ public interface ICrossSectionTemplate
+ {
+ ICrossSection GetCrossSection();
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/IForceLogic.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/IForceLogic.cs
new file mode 100644
index 0000000..2375304
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/IForceLogic.cs
@@ -0,0 +1,14 @@
+using StructureHelperCommon.Models.Forces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections
+{
+ internal interface IForceLogic
+ {
+ IEnumerable GetCombinationList();
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/IMaterialLogic.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/IMaterialLogic.cs
new file mode 100644
index 0000000..bb164f1
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/IMaterialLogic.cs
@@ -0,0 +1,14 @@
+using StructureHelper.Models.Materials;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections
+{
+ internal interface IMaterialLogic
+ {
+ IEnumerable GetHeadMaterials();
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ISectionGeometryLogic.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ISectionGeometryLogic.cs
new file mode 100644
index 0000000..1a8c150
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/ISectionGeometryLogic.cs
@@ -0,0 +1,14 @@
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections
+{
+ public interface ISectionGeometryLogic
+ {
+ IEnumerable GetNdmPrimitives();
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/IRCGeometryLogic.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/IRCGeometryLogic.cs
new file mode 100644
index 0000000..687afd8
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/IRCGeometryLogic.cs
@@ -0,0 +1,14 @@
+using StructureHelper.Models.Materials;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
+{
+ public interface IRCGeometryLogic : ISectionGeometryLogic
+ {
+ IEnumerable HeadMaterials { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/IRectangleBeamTemplate.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/IRectangleBeamTemplate.cs
new file mode 100644
index 0000000..13c941e
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/IRectangleBeamTemplate.cs
@@ -0,0 +1,19 @@
+using StructureHelperCommon.Models.Shapes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.RCs
+{
+ public interface IRectangleBeamTemplate
+ {
+ IShape Shape { get; }
+ double CoverGap { get; set; }
+ double TopDiameter { get; set; }
+ double BottomDiameter { get; set; }
+ int WidthCount { get; set; }
+ int HeightCount { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/MaterialLogic.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/MaterialLogic.cs
new file mode 100644
index 0000000..f957c0e
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/MaterialLogic.cs
@@ -0,0 +1,27 @@
+using StructureHelper.Models.Materials;
+using StructureHelperCommon.Infrastructures.Settings;
+using StructureHelperCommon.Models.Materials.Libraries;
+using StructureHelperLogics.Models.Materials;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
+{
+ internal class MaterialLogic : IMaterialLogic
+ {
+ public IEnumerable GetHeadMaterials()
+ {
+ var result = new List();
+ var concrete = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Concrete40, ProgramSetting.CodeType);
+ concrete.Name = "Concrete";
+ result.Add(concrete);
+ var reinforcement = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Reinforecement400, ProgramSetting.CodeType);
+ reinforcement.Name = "Reinforcement";
+ result.Add(reinforcement);
+ return result;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/RectGeometryLogic.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/RectGeometryLogic.cs
new file mode 100644
index 0000000..2910820
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/RectGeometryLogic.cs
@@ -0,0 +1,106 @@
+using StructureHelper.Models.Materials;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperLogics.Models.Templates.RCs;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
+{
+ public class RectGeometryLogic : IRCGeometryLogic
+ {
+ RectangleBeamTemplate template;
+ IHeadMaterial concrete => HeadMaterials.ToList()[0];
+ IHeadMaterial reinforcement => HeadMaterials.ToList()[1];
+
+ RectangleShape rect => template.Shape as RectangleShape;
+ double width => rect.Width;
+ double height => rect.Height;
+ double area1 => Math.PI * template.BottomDiameter * template.BottomDiameter / 4d;
+ double area2 => Math.PI * template.TopDiameter * template.TopDiameter / 4d;
+ double gap => template.CoverGap;
+
+ public IEnumerable HeadMaterials { get; set; }
+
+ public RectGeometryLogic(RectangleBeamTemplate template)
+ {
+ this.template = template;
+ }
+
+ public IEnumerable GetNdmPrimitives()
+ {
+ List primitives = new List();
+ primitives.AddRange(GetConcretePrimitives());
+ primitives.AddRange(GetCornerReinfrocementPrimitives());
+ if (template.WidthCount > 2 || template.HeightCount > 2)
+ {
+ primitives.AddRange(GetMiddleReinfrocementPrimitives());
+ }
+ return primitives;
+ }
+
+ private IEnumerable GetConcretePrimitives()
+ {
+ List primitives = new List();
+ var rectangle = new RectanglePrimitive(concrete) { Width = width, Height = height, Name = "Concrete block" };
+ primitives.Add(rectangle);
+ return primitives;
+ }
+
+ private IEnumerable GetCornerReinfrocementPrimitives()
+ {
+ double[] xs = new double[] { -width / 2 + gap, width / 2 - gap };
+ double[] ys = new double[] { -height / 2 + gap, height / 2 - gap };
+
+ List primitives = new List();
+ var point = new PointPrimitive(reinforcement) { CenterX = xs[0], CenterY = ys[0], Area = area1, Name = "Left bottom point" };
+ primitives.Add(point);
+ point = new PointPrimitive(reinforcement) { CenterX = xs[1], CenterY = ys[0], Area = area1, Name = "Right bottom point" };
+ primitives.Add(point);
+ point = new PointPrimitive(reinforcement) { CenterX = xs[0], CenterY = ys[1], Area = area2, Name = "Left top point" };
+ primitives.Add(point);
+ point = new PointPrimitive(reinforcement) { CenterX = xs[1], CenterY = ys[1], Area = area2, Name = "Right top point" };
+ primitives.Add(point);
+ return primitives;
+ }
+
+ private IEnumerable GetMiddleReinfrocementPrimitives()
+ {
+ double[] xs = new double[] { -width / 2 + gap, width / 2 - gap };
+ double[] ys = new double[] { -height / 2 + gap, height / 2 - gap };
+
+ List primitives = new List();
+ IPointPrimitive point;
+ if (template.WidthCount > 2)
+ {
+ int count = template.WidthCount - 1;
+ double dist = (xs[1] - xs[0]) / count;
+ for (int i = 1; i < count; i++)
+ {
+ point = new PointPrimitive(reinforcement) { CenterX = xs[0] + dist * i, CenterY = ys[0], Area = area1, Name = $"Bottom point {i}" };
+ primitives.Add(point);
+ point = new PointPrimitive(reinforcement) { CenterX = xs[0] + dist * i, CenterY = ys[1], Area = area2, Name = $"Top point {i}" };
+ primitives.Add(point);
+ }
+ }
+ if (template.HeightCount > 2)
+ {
+ int count = template.HeightCount - 1;
+ double dist = (ys[1] - ys[0]) / count;
+ for (int i = 1; i < count; i++)
+ {
+ point = new PointPrimitive(reinforcement) { CenterX = xs[0], CenterY = ys[0] + dist * i, Area = area1, Name = $"Left point {i}" };
+ primitives.Add(point);
+ point = new PointPrimitive(reinforcement) { CenterX = xs[1], CenterY = ys[0] + dist * i, Area = area1, Name = $"Right point {i}" };
+ primitives.Add(point);
+ }
+ }
+ return primitives;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/RectangleBeamTemplate.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/RectangleBeamTemplate.cs
new file mode 100644
index 0000000..fdd60af
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/RectangleBeamTemplate.cs
@@ -0,0 +1,39 @@
+using StructureHelperCommon.Models.Shapes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.RCs
+{
+ public class RectangleBeamTemplate : IRectangleBeamTemplate
+ {
+ public IShape Shape { get; }
+ public double CoverGap { get; set; }
+ public double TopDiameter { get; set; }
+ public double BottomDiameter { get; set; }
+ public int WidthCount { get; set; }
+ public int HeightCount { get; set; }
+
+ public RectangleBeamTemplate()
+ {
+ Shape = new RectangleShape() { Width = 0.4d, Height = 0.6d };
+ CoverGap = 0.05d;
+ TopDiameter = 0.016d;
+ BottomDiameter = 0.025d;
+ WidthCount = 2;
+ HeightCount = 2;
+ }
+
+ public RectangleBeamTemplate(double width, double height)
+ {
+ Shape = new RectangleShape() { Width = width, Height = height };
+ CoverGap = 0.05d;
+ TopDiameter = 0.016d;
+ BottomDiameter = 0.025d;
+ WidthCount = 2;
+ HeightCount = 2;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/SectionTemplate.cs b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/SectionTemplate.cs
new file mode 100644
index 0000000..9553bdb
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Models/Templates/CrossSections/RCs/SectionTemplate.cs
@@ -0,0 +1,74 @@
+using StructureHelperCommon.Infrastructures.Interfaces;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperLogics.Models.CrossSections;
+using StructureHelperLogics.Models.Templates.RCs;
+using StructureHelperLogics.NdmCalculations.Analyses;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Models.Templates.CrossSections.RCs
+{
+ public class SectionTemplate : ICrossSectionTemplate
+ {
+ IForceLogic forceLogic;
+ IMaterialLogic materialLogic;
+ IRCGeometryLogic geometryLogic;
+ ICalculatorLogic calculatorLogic;
+ IEnumerable primitives;
+ IEnumerable combinations;
+ IEnumerable calculators;
+
+ public SectionTemplate(IRCGeometryLogic geometryLogic)
+ {
+ this.geometryLogic = geometryLogic;
+ materialLogic = new MaterialLogic();
+ forceLogic = new ForceLogic();
+ calculatorLogic = new CalculatorLogic();
+ }
+
+ public ICrossSection GetCrossSection()
+ {
+ ICrossSection section = new CrossSection();
+ var repository = section.SectionRepository;
+ var materials = materialLogic.GetHeadMaterials();
+ geometryLogic.HeadMaterials = materials;
+ primitives = geometryLogic.GetNdmPrimitives();
+ repository.HeadMaterials.AddRange(materials);
+ repository.Primitives.AddRange(primitives);
+ combinations = forceLogic.GetCombinationList();
+ repository.ForceCombinationLists.AddRange(combinations);
+ calculators = calculatorLogic.GetNdmCalculators();
+ AddAllForcesToCalculators();
+ AddAllPrimitivesToCalculator();
+ repository.CalculatorsList.AddRange(calculators);
+ return section;
+ }
+
+ private void AddAllForcesToCalculators()
+ {
+ foreach (var calculator in calculators)
+ {
+ if (calculator is IHasForceCombinations)
+ {
+ var forceCalculator = calculator as IHasForceCombinations;
+ forceCalculator.ForceCombinationLists.AddRange(combinations);
+ }
+ }
+ }
+ private void AddAllPrimitivesToCalculator()
+ {
+ foreach (var calculator in calculators)
+ {
+ if (calculator is IHasPrimitives)
+ {
+ var primitiveCalculator = calculator as IHasPrimitives;
+ primitiveCalculator.Primitives.AddRange(primitives);
+ }
+ }
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs
new file mode 100644
index 0000000..3451fac
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs
@@ -0,0 +1,185 @@
+using LoaderCalculator;
+using LoaderCalculator.Data.Matrix;
+using LoaderCalculator.Data.Ndms;
+using LoaderCalculator.Data.SourceData;
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Calculators;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Models.Sections;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperCommon.Services.Calculations;
+using StructureHelperCommon.Services.Forces;
+using StructureHelperCommon.Services.Sections;
+using StructureHelperLogics.NdmCalculations.Buckling;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using StructureHelperLogics.Services.NdmPrimitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public class ForceCalculator : IForceCalculator
+ {
+ public string Name { get; set; }
+ public List LimitStatesList { get; }
+ public List CalcTermsList { get; }
+ public List ForceCombinationLists { get; }
+ public List Primitives { get; }
+ public INdmResult Result { get; private set; }
+ public ICompressedMember CompressedMember { get; }
+ public IAccuracy Accuracy { get; set; }
+
+ public void Run()
+ {
+ var checkResult = CheckInputData();
+ if (checkResult != "")
+ {
+ Result = new ForcesResults() { IsValid = false, Desctription = checkResult };
+ return;
+ }
+ else { CalculateResult(); }
+ }
+
+ private void CalculateResult()
+ {
+ var ndmResult = new ForcesResults() { IsValid = true };
+ foreach (var combination in ForceCombinationLists)
+ {
+ foreach (var tuple in combination.DesignForces)
+ {
+ var limitState = tuple.LimitState;
+ var calcTerm = tuple.CalcTerm;
+ if (LimitStatesList.Contains(limitState) & CalcTermsList.Contains(calcTerm))
+ {
+ var ndms = NdmPrimitivesService.GetNdms(Primitives, limitState, calcTerm);
+ IPoint2D point2D;
+ if (combination.SetInGravityCenter == true)
+ {
+ var loaderPoint = LoaderCalculator.Logics.Geometry.GeometryOperations.GetGravityCenter(ndms);
+ point2D = new Point2D() { X = loaderPoint.CenterX, Y = loaderPoint.CenterY };
+ }
+ else point2D = combination.ForcePoint;
+ var newTuple = ForceTupleService.MoveTupleIntoPoint(tuple.ForceTuple, point2D);
+ var result = GetPrimitiveStrainMatrix(ndms, newTuple);
+ if (CompressedMember.Buckling == true)
+ {
+ IForceTuple longTuple;
+ if (calcTerm == CalcTerms.LongTerm)
+ {
+ longTuple = newTuple;
+ }
+ else
+ {
+ longTuple = GetLongTuple(combination.DesignForces, limitState);
+ }
+ var bucklingCalculator = GetBucklingCalculator(CompressedMember, limitState, calcTerm, newTuple, longTuple);
+ try
+ {
+ bucklingCalculator.Run();
+ var bucklingResult = bucklingCalculator.Result as IConcreteBucklingResult;
+ if (bucklingResult.IsValid != true)
+ {
+ result.IsValid = false;
+ result.Desctription += $"Buckling result:\n{bucklingResult.Desctription}\n";
+ }
+ newTuple = CalculateBuckling(newTuple, bucklingResult);
+ }
+ catch (Exception ex)
+ {
+ result.IsValid = false;
+ result.Desctription = $"Buckling error:\n{ex}\n";
+ }
+
+ }
+
+ result.DesignForceTuple.LimitState = limitState;
+ result.DesignForceTuple.CalcTerm = calcTerm;
+ result.DesignForceTuple.ForceTuple = newTuple;
+ ndmResult.ForcesResultList.Add(result);
+ }
+ }
+ }
+ Result = ndmResult;
+ }
+
+ private IForceTuple GetLongTuple(List designForces, LimitStates limitState)
+ {
+ IForceTuple longTuple;
+ try
+ {
+ longTuple = designForces.Where(x => x.LimitState == limitState & x.CalcTerm == CalcTerms.LongTerm).First().ForceTuple;
+ }
+ catch (Exception)
+ {
+ longTuple = new ForceTuple();
+ }
+ return longTuple;
+ }
+
+ private IConcreteBucklingCalculator GetBucklingCalculator(ICompressedMember compressedMember, LimitStates limitStates, CalcTerms calcTerms, IForceTuple calcTuple, IForceTuple longTuple)
+ {
+ IConcreteBucklingOptions options = new ConcreteBucklingOptions()
+ { CompressedMember = compressedMember,
+ LimitState = limitStates,
+ CalcTerm = calcTerms,
+ CalcForceTuple = calcTuple,
+ LongTermTuple = longTuple,
+ Primitives = Primitives };
+ IConcreteBucklingCalculator bucklingCalculator = new ConcreteBucklingCalculator(options, Accuracy);
+ return bucklingCalculator;
+ }
+
+ private IForceTuple CalculateBuckling(IForceTuple calcTuple, IConcreteBucklingResult bucklingResult)
+ {
+ var newTuple = calcTuple.Clone() as IForceTuple;
+ newTuple.Mx *= bucklingResult.EtaFactorAlongY;
+ newTuple.My *= bucklingResult.EtaFactorAlongX;
+ return newTuple;
+ }
+
+
+ private string CheckInputData()
+ {
+ string result = "";
+ if (Primitives.Count == 0) { result += "Calculator does not contain any primitives \n"; }
+ if (ForceCombinationLists.Count == 0) { result += "Calculator does not contain any forces \n"; }
+ if (LimitStatesList.Count == 0) { result += "Calculator does not contain any limit states \n"; }
+ if (CalcTermsList.Count == 0) { result += "Calculator does not contain any duration \n"; }
+ return result;
+ }
+
+ public ForceCalculator()
+ {
+ ForceCombinationLists = new List();
+ Primitives = new List();
+ CompressedMember = new CompressedMember() { Buckling = false };
+ Accuracy = new Accuracy() { IterationAccuracy = 0.001d, MaxIterationCount = 1000 };
+ LimitStatesList = new List() { LimitStates.ULS, LimitStates.SLS };
+ CalcTermsList = new List() { CalcTerms.ShortTerm, CalcTerms.LongTerm };
+ }
+
+ private IForcesTupleResult GetPrimitiveStrainMatrix(IEnumerable ndmCollection, IForceTuple tuple)
+ {
+ IForceTupleInputData inputData = new ForceTupleInputData() { NdmCollection = ndmCollection, Tuple = tuple, Accuracy = Accuracy };
+ IForceTupleCalculator calculator = new ForceTupleCalculator(inputData);
+ calculator.Run();
+ return calculator.Result as IForcesTupleResult;
+ }
+
+ public object Clone()
+ {
+ IForceCalculator target = new ForceCalculator { Name = Name + " copy"};
+ target.LimitStatesList.Clear();
+ target.LimitStatesList.AddRange(LimitStatesList);
+ target.CalcTermsList.Clear();
+ target.CalcTermsList.AddRange(CalcTermsList);
+ AccuracyService.CopyProperties(Accuracy, target.Accuracy);
+ CompressedMemberServices.CopyProperties(CompressedMember, target.CompressedMember);
+ target.Primitives.AddRange(Primitives);
+ target.ForceCombinationLists.AddRange(ForceCombinationLists);
+ return target;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceInputData.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceInputData.cs
new file mode 100644
index 0000000..aa5a4d2
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceInputData.cs
@@ -0,0 +1,19 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperLogics.Models.Calculations.CalculationProperties;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public class ForceInputData : IForceInputData
+ {
+ public IEnumerable ForceCombinationLists { get; set; }
+ public IEnumerable LimitStates { get; set; }
+ public IEnumerable CalcTerms { get; set; }
+ public IIterationProperty IterationProperty { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceTupleCalculator.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceTupleCalculator.cs
new file mode 100644
index 0000000..47988e8
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceTupleCalculator.cs
@@ -0,0 +1,82 @@
+using LoaderCalculator.Data.Matrix;
+using LoaderCalculator.Data.SourceData;
+using LoaderCalculator;
+using StructureHelperCommon.Models.Calculators;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public class ForceTupleCalculator : IForceTupleCalculator
+ {
+ public string Name { get; set; }
+ public INdmResult Result { get; private set; }
+
+ private IForceTupleInputData inputData;
+
+ public ForceTupleCalculator(IForceTupleInputData inputData)
+ {
+ this.inputData = inputData;
+ }
+
+ public void Run()
+ {
+ Result = CalculateResult();
+ }
+
+ private IForcesTupleResult CalculateResult()
+ {
+ var ndmCollection = inputData.NdmCollection;
+ var tuple = inputData.Tuple;
+ var accuracy = inputData.Accuracy;
+
+
+ var mx = tuple.Mx;
+ var my = tuple.My;
+ var nz = tuple.Nz;
+
+ try
+ {
+ var loaderData = new LoaderOptions
+ {
+ Preconditions = new Preconditions
+ {
+ ConditionRate = accuracy.IterationAccuracy,
+ MaxIterationCount = accuracy.MaxIterationCount,
+ StartForceMatrix = new ForceMatrix { Mx = mx, My = my, Nz = nz }
+ },
+ NdmCollection = ndmCollection
+ };
+ var calculator = new Calculator();
+ calculator.Run(loaderData, new CancellationToken());
+ var calcResult = calculator.Result;
+ if (calcResult.AccuracyRate <= accuracy.IterationAccuracy)
+ {
+ return new ForcesTupleResult() { IsValid = true, Desctription = "Analysis is done succsefully", LoaderResults = calcResult };
+ }
+ else
+ {
+ return new ForcesTupleResult() { IsValid = false, Desctription = "Required accuracy rate has not achived", LoaderResults = calcResult };
+ }
+
+ }
+ catch (Exception ex)
+ {
+ var result = new ForcesTupleResult() { IsValid = false };
+ if (ex.Message == "Calculation result is not valid: stiffness matrix is equal to zero") { result.Desctription = "Stiffness matrix is equal to zero \nProbably section was collapsed"; }
+ else { result.Desctription = $"Error is appeared due to analysis. Error: {ex}"; }
+ return result;
+ }
+ }
+
+ public object Clone()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceTupleInputData.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceTupleInputData.cs
new file mode 100644
index 0000000..241e76d
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceTupleInputData.cs
@@ -0,0 +1,18 @@
+using LoaderCalculator.Data.Ndms;
+using StructureHelperCommon.Models.Calculators;
+using StructureHelperCommon.Models.Forces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public class ForceTupleInputData : IForceTupleInputData
+ {
+ public IEnumerable NdmCollection { get; set; }
+ public IForceTuple Tuple { get; set; }
+ public IAccuracy Accuracy { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForcesResults.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForcesResults.cs
new file mode 100644
index 0000000..75fd467
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForcesResults.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public class ForcesResults : IForcesResults
+ {
+ public bool IsValid { get; set; }
+ public List ForcesResultList { get; }
+ public string Desctription { get; set; }
+
+ public ForcesResults()
+ {
+ ForcesResultList = new List();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForcesTupleResult.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForcesTupleResult.cs
new file mode 100644
index 0000000..7de59dc
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForcesTupleResult.cs
@@ -0,0 +1,30 @@
+using LoaderCalculator.Data.ResultData;
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Forces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public class ForcesTupleResult : IForcesTupleResult
+ {
+ public bool IsValid { get; set; }
+ public IDesignForceTuple DesignForceTuple { get; set; }
+ ///
+ /// Text of result of calculations
+ ///
+ public string Desctription { get; set; }
+ ///
+ /// Keep result of calculations from ndm-library
+ ///
+ public ILoaderResults LoaderResults { get; set; }
+
+ public ForcesTupleResult()
+ {
+ DesignForceTuple = new DesignForceTuple();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs
new file mode 100644
index 0000000..25d9723
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceCalculator.cs
@@ -0,0 +1,19 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Interfaces;
+using StructureHelperCommon.Models.Calculators;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Models.Sections;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public interface IForceCalculator : INdmCalculator, IHasPrimitives, IHasForceCombinations
+ {
+ List CalcTermsList { get; }
+ List LimitStatesList { get; }
+ ICompressedMember CompressedMember { get; }
+ IAccuracy Accuracy { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceInputData.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceInputData.cs
new file mode 100644
index 0000000..d2a6d7e
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceInputData.cs
@@ -0,0 +1,15 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperLogics.Models.Calculations.CalculationProperties;
+using System.Collections.Generic;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public interface IForceInputData
+ {
+ IEnumerable CalcTerms { get; set; }
+ IEnumerable ForceCombinationLists { get; set; }
+ IIterationProperty IterationProperty { get; }
+ IEnumerable LimitStates { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceTupleCalculator.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceTupleCalculator.cs
new file mode 100644
index 0000000..07a411a
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceTupleCalculator.cs
@@ -0,0 +1,13 @@
+using StructureHelperCommon.Models.Calculators;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public interface IForceTupleCalculator : INdmCalculator
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceTupleInputData.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceTupleInputData.cs
new file mode 100644
index 0000000..c151d6f
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForceTupleInputData.cs
@@ -0,0 +1,18 @@
+using LoaderCalculator.Data.Ndms;
+using StructureHelperCommon.Models.Calculators;
+using StructureHelperCommon.Models.Forces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public interface IForceTupleInputData
+ {
+ IEnumerable NdmCollection { get; set; }
+ IForceTuple Tuple { get; set; }
+ IAccuracy Accuracy { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForcesResults.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForcesResults.cs
new file mode 100644
index 0000000..e0f5ddd
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForcesResults.cs
@@ -0,0 +1,11 @@
+using System.Collections.Generic;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public interface IForcesResults : INdmResult
+ {
+ string Desctription { get; set; }
+ List ForcesResultList { get; }
+ bool IsValid { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForcesTupleResult.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForcesTupleResult.cs
new file mode 100644
index 0000000..4a108fc
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ByForces/IForcesTupleResult.cs
@@ -0,0 +1,11 @@
+using LoaderCalculator.Data.ResultData;
+using StructureHelperCommon.Models.Forces;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
+{
+ public interface IForcesTupleResult : INdmResult
+ {
+ IDesignForceTuple DesignForceTuple { get; set; }
+ ILoaderResults LoaderResults { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ExportToCSVLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ExportToCSVLogic.cs
new file mode 100644
index 0000000..8138b93
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ExportToCSVLogic.cs
@@ -0,0 +1,75 @@
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses
+{
+ public class ExportToCSVLogic : IExportResultLogic
+ {
+ string filename;
+
+ public void Export(INdmResult ndmResult)
+ {
+ string separator = ";";
+ StringBuilder output = new StringBuilder();
+
+ if (ndmResult is ForcesResults)
+ {
+ var forceResults = ndmResult as ForcesResults;
+ string[] headings =
+ {
+ "Limit State",
+ "Calc duration",
+ "Mx",
+ "My",
+ "Nz",
+ "kx",
+ "ky",
+ "epsz"
+ };
+ output.AppendLine(string.Join(separator, headings));
+ foreach (var item in forceResults.ForcesResultList)
+ {
+ if (item.IsValid == true)
+ {
+ var tuple = item.DesignForceTuple.ForceTuple;
+ var strainMatrix = item.LoaderResults.StrainMatrix;
+ string[] newLine =
+ {
+ item.DesignForceTuple.LimitState.ToString(),
+ item.DesignForceTuple.CalcTerm.ToString(),
+ tuple.Mx.ToString(),
+ tuple.My.ToString(),
+ tuple.Nz.ToString(),
+ strainMatrix.Kx.ToString(),
+ strainMatrix.Ky.ToString(),
+ strainMatrix.EpsZ.ToString()
+ };
+ output.AppendLine(string.Join(separator, newLine));
+ }
+ }
+ try
+ {
+ File.AppendAllText(filename, output.ToString());
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("Data could not be written to the CSV file.");
+ return;
+ }
+ }
+ else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown +": "+ nameof(ndmResult));
+ }
+
+ public ExportToCSVLogic(string filename)
+ {
+ this.filename = filename;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/IExportResultLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/IExportResultLogic.cs
new file mode 100644
index 0000000..a3d927a
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/IExportResultLogic.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses
+{
+ public interface IExportResultLogic
+ {
+ void Export(INdmResult ndmResult);
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/INdmCalculator.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/INdmCalculator.cs
new file mode 100644
index 0000000..dc431ab
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/INdmCalculator.cs
@@ -0,0 +1,24 @@
+using StructureHelperCommon.Models.Calculators;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using TaskManager;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses
+{
+ public interface INdmCalculator : ICloneable
+ {
+ string Name { get; set; }
+ ///
+ /// Method for calculating
+ ///
+ void Run();
+ ///
+ /// Result of Calculations
+ ///
+ INdmResult Result { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/INdmResult.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/INdmResult.cs
new file mode 100644
index 0000000..878b31d
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/INdmResult.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Analyses
+{
+ public interface INdmResult
+ {
+ ///
+ /// True if result of calculation is valid
+ ///
+ bool IsValid { get; set; }
+ string Desctription { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingCalculator.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingCalculator.cs
new file mode 100644
index 0000000..0738077
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingCalculator.cs
@@ -0,0 +1,177 @@
+using LoaderCalculator.Data.Materials.MaterialBuilders;
+using LoaderCalculator.Data.Ndms;
+using LoaderCalculator.Logics;
+using LoaderCalculator.Logics.Geometry;
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Calculators;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperCommon.Services.Forces;
+using StructureHelperLogics.Models.Materials;
+using StructureHelperLogics.NdmCalculations.Analyses;
+using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using StructureHelperLogics.Services.NdmPrimitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ public class ConcreteBucklingCalculator : IConcreteBucklingCalculator
+ {
+ private IConcreteBucklingOptions options;
+ private IEilerCriticalForceLogic criticalForceLogic;
+ private IRCStiffnessLogic stiffnessLogicX, stiffnessLogicY;
+ private List ndmCollection;
+ private List concreteNdms;
+ private List otherNdms;
+ IForcesTupleResult forcesResults;
+
+ public string Name { get; set; }
+
+ public INdmResult Result { get; private set; }
+
+ public IAccuracy Accuracy { get; set; }
+
+ private (double EtaAlongX, double EtaAlongY) GetBucklingCoefficients()
+ {
+ var stiffness = GetStiffness();
+ criticalForceLogic.LongForce = options.CalcForceTuple.Nz;
+ criticalForceLogic.StiffnessEI = stiffness.DX;
+ criticalForceLogic.DesignLength = options.CompressedMember.GeometryLength * options.CompressedMember.LengthFactorY;
+ var etaAlongY = criticalForceLogic.GetEtaFactor();
+ criticalForceLogic.StiffnessEI = stiffness.DY;
+ criticalForceLogic.DesignLength = options.CompressedMember.GeometryLength * options.CompressedMember.LengthFactorX;
+ var etaAlongX = criticalForceLogic.GetEtaFactor();
+ return (etaAlongX, etaAlongY);
+ }
+
+ public ConcreteBucklingCalculator(IConcreteBucklingOptions options, IAccuracy accuracy)
+ {
+ this.options = options;
+ Accuracy = accuracy;
+
+ var allPrimitives = options.Primitives;
+ var concretePrimitives = GetConcretePrimitives();
+ var otherPrimitives = allPrimitives.Except(concretePrimitives);
+ ndmCollection = NdmPrimitivesService.GetNdms(allPrimitives, options.LimitState, options.CalcTerm);
+ concreteNdms = NdmPrimitivesService.GetNdms(concretePrimitives, options.LimitState, options.CalcTerm);
+ otherNdms = NdmPrimitivesService.GetNdms(otherPrimitives, options.LimitState, options.CalcTerm);
+ }
+
+ private (IConcreteDeltaELogic DeltaLogicX, IConcreteDeltaELogic DeltaLogicY) GetDeltaLogics()
+ {
+ IForceTuple forceTuple = options.CalcForceTuple;
+ if (forceTuple.Nz >= 0) { return (new ConstDeltaELogic(), new ConstDeltaELogic()); }
+ var eccentricityAlongX = options.CalcForceTuple.My / forceTuple.Nz;
+ var eccentricityAlongY = options.CalcForceTuple.Mx / forceTuple.Nz;
+ var sizeAlongX = ndmCollection.Max(x => x.CenterX) - ndmCollection.Min(x => x.CenterX);
+ var sizeAlongY = ndmCollection.Max(x => x.CenterY) - ndmCollection.Min(x => x.CenterY);
+ var DeltaElogicAboutX = new DeltaELogicSP63(eccentricityAlongY, sizeAlongY);
+ var DeltaElogicAboutY = new DeltaELogicSP63(eccentricityAlongX, sizeAlongX);
+ return (DeltaElogicAboutX, DeltaElogicAboutY);
+ }
+
+ private IEnumerable GetConcretePrimitives()
+ {
+ var primitives = options.Primitives.Where(x => x.HeadMaterial.HelperMaterial is IConcreteLibMaterial);
+ return primitives;
+ }
+
+ private (double DX, double DY) GetStiffness()
+ {
+ var gravityCenter = GeometryOperations.GetGravityCenter(ndmCollection);
+
+ var concreteInertia = GeometryOperations.GetMomentsOfInertiaMod(concreteNdms, gravityCenter);
+ var otherInertia = GeometryOperations.GetMomentsOfInertiaMod(otherNdms, gravityCenter);
+
+ var stiffnessX = stiffnessLogicX.GetStiffnessCoeffitients();
+ var dX = stiffnessX.Kc * concreteInertia.MomentX + stiffnessX.Ks * otherInertia.MomentX;
+
+ var stiffnessY = stiffnessLogicY.GetStiffnessCoeffitients();
+ var dY = stiffnessY.Kc * concreteInertia.MomentY + stiffnessY.Ks * otherInertia.MomentY;
+
+ return (dX, dY);
+ }
+
+ private IConcretePhiLLogic GetPhiLogic()
+ {
+ IPoint2D point = GetMostTensionedPoint();
+ var phiLogic = new PhiLogicSP63(options.CalcForceTuple, options.LongTermTuple, point);
+ return phiLogic;
+ }
+
+ private IPoint2D GetMostTensionedPoint()
+ {
+ var strains = forcesResults.LoaderResults.StrainMatrix;
+ double maxStrain = double.NegativeInfinity;
+ IPoint2D point = new Point2D();
+ var stressLogic = new StressLogic();
+ foreach (var item in ndmCollection)
+ {
+ var strain = stressLogic.GetTotalStrain(strains, item);
+ if (strain > maxStrain)
+ {
+ maxStrain = strain;
+ point = new Point2D() { X = item.CenterX, Y = item.CenterY };
+ }
+ }
+ return point;
+ }
+
+ private IForceTupleCalculator GetForceCalculator()
+ {
+ var tuple = options.CalcForceTuple;
+ IForceTupleInputData inputData = new ForceTupleInputData() { NdmCollection = ndmCollection, Tuple = tuple, Accuracy = Accuracy };
+ IForceTupleCalculator calculator = new ForceTupleCalculator(inputData);
+ return calculator;
+ }
+
+ public void Run()
+ {
+ var checkResult = CheckInputData();
+ if (checkResult != "")
+ {
+ Result = new ConcreteBucklingResult() { IsValid = false, Desctription = checkResult };
+ return;
+ }
+ else
+ {
+ IConcretePhiLLogic phiLLogic = GetPhiLogic();
+ var (DeltaLogicAboutX, DeltaLogicAboutY) = GetDeltaLogics();
+ stiffnessLogicX = new RCStiffnessLogicSP63(phiLLogic, DeltaLogicAboutX);
+ stiffnessLogicY = new RCStiffnessLogicSP63(phiLLogic, DeltaLogicAboutY);
+ criticalForceLogic = new EilerCriticalForceLogic();
+
+ var (EtaFactorX, EtaFactorY) = GetBucklingCoefficients();
+ Result = new ConcreteBucklingResult()
+ {
+ IsValid = true,
+ EtaFactorAlongX = EtaFactorX,
+ EtaFactorAlongY = EtaFactorY
+ };
+ }
+ }
+
+ private string CheckInputData()
+ {
+ string result = "";
+ IForceTupleCalculator calculator = GetForceCalculator();
+ calculator.Run();
+ forcesResults = calculator.Result as IForcesTupleResult;
+ if (forcesResults.IsValid != true)
+ {
+ result += "Bearind capacity of crosssection is not enough for initial forces\n";
+ }
+ return result;
+ }
+
+ public object Clone()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingOptions.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingOptions.cs
new file mode 100644
index 0000000..820b7f2
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingOptions.cs
@@ -0,0 +1,29 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Models.Sections;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ ///
+ internal class ConcreteBucklingOptions : IConcreteBucklingOptions
+ {
+ ///
+ public IForceTuple LongTermTuple { get; set; }
+ ///
+ public ICompressedMember CompressedMember { get; set; }
+ ///
+ public LimitStates LimitState { get; set; }
+ ///
+ public CalcTerms CalcTerm { get; set; }
+ ///
+ public IEnumerable Primitives { get; set; }
+ ///
+ public IForceTuple CalcForceTuple { get; set; }
+}
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingResult.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingResult.cs
new file mode 100644
index 0000000..1d3e233
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingResult.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ ///
+ public class ConcreteBucklingResult : IConcreteBucklingResult
+ {
+ ///
+ public bool IsValid { get; set; }
+ ///
+ public string Desctription { get; set; }
+ ///
+ public double EtaFactorAlongX { get; set; }
+ ///
+ public double EtaFactorAlongY { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConstDeltaELogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConstDeltaELogic.cs
new file mode 100644
index 0000000..ed60dd4
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConstDeltaELogic.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ public class ConstDeltaELogic : IConcreteDeltaELogic
+ {
+ public double GetDeltaE()
+ {
+ return 1.5d;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConstPhiLLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConstPhiLLogic.cs
new file mode 100644
index 0000000..a9cdc03
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ConstPhiLLogic.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ internal class ConstPhiLLogic : IConcretePhiLLogic
+ {
+ public double GetPhil()
+ {
+ return 2.0d;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/CriticalForceSP63Logic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/CriticalForceSP63Logic.cs
new file mode 100644
index 0000000..6d14887
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/CriticalForceSP63Logic.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ internal class CriticalForceSP63Logic : ICriticalBucklingForceLogic
+ {
+ double concreteFactor, reinforcementFactor;
+
+ public double GetCriticalForce()
+ {
+ throw new NotImplementedException();
+ }
+
+ public double GetEtaFactor()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/DeltaELogicSP63.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/DeltaELogicSP63.cs
new file mode 100644
index 0000000..631aab6
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/DeltaELogicSP63.cs
@@ -0,0 +1,36 @@
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ public class DeltaELogicSP63 : IConcreteDeltaELogic
+ {
+ const double deltaEMin = 0.15d;
+ const double deltaEMax = 1.5d;
+
+ readonly double eccentricity;
+ readonly double size;
+ public DeltaELogicSP63(double eccentricity, double size)
+ {
+ if (size <= 0 )
+ {
+ throw new StructureHelperException(ErrorStrings.SizeMustBeGreaterThanZero + $", actual size: {size}");
+ }
+ this.eccentricity = eccentricity;
+ this.size = size;
+ }
+
+ public double GetDeltaE()
+ {
+ var deltaE = Math.Abs(eccentricity) / size;
+ deltaE = Math.Max(deltaE, deltaEMin);
+ deltaE = Math.Min(deltaE, deltaEMax);
+ return deltaE;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/EilerCriticalForceLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/EilerCriticalForceLogic.cs
new file mode 100644
index 0000000..9a76b38
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/EilerCriticalForceLogic.cs
@@ -0,0 +1,35 @@
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ internal class EilerCriticalForceLogic : IEilerCriticalForceLogic
+ {
+ public double LongForce { get; set; }
+ public double StiffnessEI { get; set; }
+ public double DesignLength { get; set; }
+
+ public double GetCriticalForce()
+ {
+ double Ncr = - Math.Pow(Math.PI, 2) * StiffnessEI / (Math.Pow(DesignLength, 2));
+ return Ncr;
+ }
+
+ public double GetEtaFactor()
+ {
+ if (LongForce >= 0d) return 1d;
+ var Ncr = GetCriticalForce();
+ if (LongForce <= Ncr)
+ {
+ throw new StructureHelperException(ErrorStrings.LongitudinalForceMustBeLessThanCriticalForce);
+ }
+ double eta = 1 / (1 - LongForce / Ncr);
+ return eta;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IBucklingOptions.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IBucklingOptions.cs
new file mode 100644
index 0000000..ecfc7c3
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IBucklingOptions.cs
@@ -0,0 +1,21 @@
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Models.Sections;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ public interface IBucklingOptions
+ {
+ ICompressedMember CompressedMember { get; }
+ LimitStates LimitState { get; }
+ CalcTerms CalcTerm { get; }
+ IEnumerable Primitives { get; }
+ IForceTuple CalcForceTuple { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteBucklingCalculator.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteBucklingCalculator.cs
new file mode 100644
index 0000000..6555062
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteBucklingCalculator.cs
@@ -0,0 +1,15 @@
+using StructureHelperCommon.Models.Calculators;
+using StructureHelperLogics.NdmCalculations.Analyses;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ internal interface IConcreteBucklingCalculator : INdmCalculator
+ {
+ IAccuracy Accuracy { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteBucklingOptions.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteBucklingOptions.cs
new file mode 100644
index 0000000..5ee4b4b
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteBucklingOptions.cs
@@ -0,0 +1,15 @@
+using StructureHelperCommon.Models.Calculators;
+using StructureHelperCommon.Models.Forces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ public interface IConcreteBucklingOptions : IBucklingOptions
+ {
+ IForceTuple LongTermTuple { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteBucklingResult.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteBucklingResult.cs
new file mode 100644
index 0000000..635aa2b
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteBucklingResult.cs
@@ -0,0 +1,24 @@
+using StructureHelperLogics.NdmCalculations.Analyses;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ ///
+ /// Results of calculation of buckling of reinforced concrete section
+ ///
+ public interface IConcreteBucklingResult : INdmResult
+ {
+ ///
+ /// Factor of increasing of bending moment (p-delta effect) in the plain XOZ
+ ///
+ double EtaFactorAlongX { get; set; }
+ ///
+ /// Factor of increasing of bending moment (p-delta effect) in the plain YOZ
+ ///
+ double EtaFactorAlongY { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteDeltaELogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteDeltaELogic.cs
new file mode 100644
index 0000000..5654179
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcreteDeltaELogic.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ internal interface IConcreteDeltaELogic
+ {
+ double GetDeltaE();
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcretePhiLLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcretePhiLLogic.cs
new file mode 100644
index 0000000..504e935
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IConcretePhiLLogic.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ public interface IConcretePhiLLogic
+ {
+ double GetPhil();
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ICriticalBucklingForceLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ICriticalBucklingForceLogic.cs
new file mode 100644
index 0000000..1d14189
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/ICriticalBucklingForceLogic.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ internal interface ICriticalBucklingForceLogic
+ {
+ double GetCriticalForce();
+ double GetEtaFactor();
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IEilerCriticalForceLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IEilerCriticalForceLogic.cs
new file mode 100644
index 0000000..c778b72
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IEilerCriticalForceLogic.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ internal interface IEilerCriticalForceLogic : ICriticalBucklingForceLogic
+ {
+ double LongForce { get; set; }
+ double StiffnessEI { get; set; }
+ double DesignLength { get; set; }
+
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IRCStiffnessLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IRCStiffnessLogic.cs
new file mode 100644
index 0000000..39cee43
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/IRCStiffnessLogic.cs
@@ -0,0 +1,14 @@
+using StructureHelperLogics.NdmCalculations.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ public interface IRCStiffnessLogic
+ {
+ (double Kc, double Ks) GetStiffnessCoeffitients();
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/PhiLogicSP63.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/PhiLogicSP63.cs
new file mode 100644
index 0000000..cb02ffd
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/PhiLogicSP63.cs
@@ -0,0 +1,41 @@
+using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperCommon.Services.Forces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ public class PhiLogicSP63 : IConcretePhiLLogic
+ {
+ readonly IForceTuple fullForceTuple;
+ readonly IForceTuple longForceTuple;
+ readonly IPoint2D point;
+ public PhiLogicSP63(IForceTuple fullForceTuple, IForceTuple longForceTuple, IPoint2D point)
+ {
+ this.fullForceTuple = fullForceTuple;
+ this.longForceTuple = longForceTuple;
+ this.point = point;
+ }
+
+ public double GetPhil()
+ {
+ var distance = Math.Sqrt(point.X * point.X + point.Y * point.Y);
+ var fullMoment = GetMoment(fullForceTuple, distance);
+ var longMoment = GetMoment(longForceTuple, distance);
+ if (fullMoment == 0d) { return 2d; }
+ var phi = 1 + longMoment / fullMoment;
+ phi = Math.Max(1, phi);
+ phi = Math.Min(2, phi);
+ return phi;
+ }
+
+ private double GetMoment(IForceTuple forceTuple, double distance)
+ {
+ return Math.Abs(forceTuple.Nz) * distance + Math.Abs(forceTuple.Mx) + Math.Abs(forceTuple.My);
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/RCStiffnessLogicSP63.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/RCStiffnessLogicSP63.cs
new file mode 100644
index 0000000..357a14b
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/RCStiffnessLogicSP63.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Buckling
+{
+ internal class RCStiffnessLogicSP63 : IRCStiffnessLogic
+ {
+ IConcretePhiLLogic phiLLogic { get; }
+ IConcreteDeltaELogic deltaELogic { get; }
+
+ public RCStiffnessLogicSP63() : this(new ConstPhiLLogic(), new ConstDeltaELogic()) { }
+
+ public RCStiffnessLogicSP63(IConcretePhiLLogic phiLLogic, IConcreteDeltaELogic deltaELogic)
+ {
+ this.phiLLogic = phiLLogic;
+ this.deltaELogic = deltaELogic;
+ }
+
+ public (double Kc, double Ks) GetStiffnessCoeffitients()
+ {
+ const double initialKs = 0.7d;
+ const double initialKc = 0.15d;
+ const double deltaEAddition = 0.3d;
+ double phiL = phiLLogic.GetPhil();
+ double deltaE = deltaELogic.GetDeltaE();
+ double kc = initialKc / (phiL * (deltaEAddition + deltaE));
+ return (kc, initialKs);
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IHasDivisionSize.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IHasDivisionSize.cs
new file mode 100644
index 0000000..8590c48
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IHasDivisionSize.cs
@@ -0,0 +1,15 @@
+using StructureHelperLogics.Models.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public interface IHasDivisionSize : INdmPrimitive
+ {
+ double NdmMaxSize { get; set; }
+ int NdmMinDivision { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IHasPrimitives.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IHasPrimitives.cs
new file mode 100644
index 0000000..522f5fe
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IHasPrimitives.cs
@@ -0,0 +1,9 @@
+using System.Collections.Generic;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public interface IHasPrimitives
+ {
+ List Primitives { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/ILinePrimitive.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/ILinePrimitive.cs
new file mode 100644
index 0000000..fc78d08
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/ILinePrimitive.cs
@@ -0,0 +1,13 @@
+using StructureHelperCommon.Models.Shapes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public interface ILinePrimitive : IHasDivisionSize, ILineShape
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/INdmPrimitive.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/INdmPrimitive.cs
new file mode 100644
index 0000000..b5584c9
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/INdmPrimitive.cs
@@ -0,0 +1,29 @@
+using StructureHelperLogics.Models.Materials;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelper.Models.Materials;
+using System.Collections;
+using LoaderCalculator.Data.Ndms;
+using LoaderCalculator.Data.Materials;
+using System.Collections.Generic;
+using StructureHelperCommon.Infrastructures.Interfaces;
+using System;
+using StructureHelperCommon.Models.Forces;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public interface INdmPrimitive : ISaveable, ICloneable
+ {
+ string Name { get; set; }
+ double CenterX { get; set; }
+ double CenterY { get; set; }
+ IHeadMaterial HeadMaterial { get; set; }
+ IStrainTuple UsersPrestrain { get; }
+ IStrainTuple AutoPrestrain { get; }
+ //double PrestrainKx { get; set; }
+ //double PrestrainKy { get; set; }
+ //double PrestrainEpsZ { get; set; }
+ IVisualProperty VisualProperty {get; }
+
+ IEnumerable GetNdms(IMaterial material);
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IPointPrimitive.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IPointPrimitive.cs
new file mode 100644
index 0000000..75ecff6
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IPointPrimitive.cs
@@ -0,0 +1,14 @@
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperLogics.Models.Primitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public interface IPointPrimitive : INdmPrimitive, IPointShape
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IRectanglePrimitive.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IRectanglePrimitive.cs
new file mode 100644
index 0000000..a72f327
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IRectanglePrimitive.cs
@@ -0,0 +1,13 @@
+using StructureHelperCommon.Models.Shapes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public interface IRectanglePrimitive : IHasDivisionSize, IRectangleShape
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IVisualProperty.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IVisualProperty.cs
new file mode 100644
index 0000000..c93eda5
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/IVisualProperty.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public interface IVisualProperty
+ {
+ bool IsVisible { get; set; }
+ Color Color { get; set; }
+ bool SetMaterialColor { get; set; }
+ int ZIndex { get; set; }
+ double Opacity { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/LinePrimitive.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/LinePrimitive.cs
new file mode 100644
index 0000000..375754e
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/LinePrimitive.cs
@@ -0,0 +1,69 @@
+using LoaderCalculator.Data.Materials;
+using LoaderCalculator.Data.Ndms;
+using StructureHelper.Models.Materials;
+using StructureHelperCommon.Infrastructures.Interfaces;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperCommon.Services.ShapeServices;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperLogics.Services.NdmPrimitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public class LinePrimitive : ILinePrimitive
+ {
+ public int Id { get; set; }
+ public string Name { get; set; }
+ public double CenterX { get; set; }
+ public double CenterY { get; set; }
+ public double NdmMaxSize { get; set; }
+ public int NdmMinDivision { get; set; }
+ public IHeadMaterial HeadMaterial { get; set; }
+ public double PrestrainKx { get; set; }
+ public double PrestrainKy { get; set; }
+ public double PrestrainEpsZ { get; set; }
+
+ public IPoint2D StartPoint { get; set; }
+ public IPoint2D EndPoint { get; set; }
+ public double Thickness { get; set; }
+
+ public IVisualProperty VisualProperty => throw new NotImplementedException();
+
+ public IStrainTuple UsersPrestrain => throw new NotImplementedException();
+
+ public IStrainTuple AutoPrestrain => throw new NotImplementedException();
+
+ public LinePrimitive()
+ {
+ StartPoint = new Point2D();
+ EndPoint = new Point2D();
+
+ Name = "New Line";
+ NdmMaxSize = 0.01d;
+ NdmMinDivision = 10;
+ }
+
+ public object Clone()
+ {
+ var primitive = new LinePrimitive();
+ NdmPrimitivesService.CopyDivisionProperties(this, primitive);
+ ShapeService.CopyLineProperties(this, primitive);
+ return primitive;
+ }
+
+ public IEnumerable GetNdms(IMaterial material)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Save()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/PointPrimitive.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/PointPrimitive.cs
new file mode 100644
index 0000000..953a64b
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/PointPrimitive.cs
@@ -0,0 +1,64 @@
+using StructureHelperLogics.Models.Materials;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelper.Models.Materials;
+using System.Collections.Generic;
+using LoaderCalculator.Data.Ndms;
+using LoaderCalculator.Data.Materials;
+using StructureHelperCommon.Infrastructures.Interfaces;
+using System;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using StructureHelperLogics.NdmCalculations.Triangulations;
+using StructureHelperLogics.Services.NdmPrimitives;
+using StructureHelperCommon.Models.Forces;
+
+namespace StructureHelperLogics.Models.Primitives
+{
+ public class PointPrimitive : IPointPrimitive
+ {
+ public int Id { get; set; }
+ public string Name { get; set; }
+ public double CenterX { get; set; }
+ public double CenterY { get; set; }
+ public IHeadMaterial HeadMaterial { get; set; }
+ public double NdmMaxSize { get; set; }
+ public int NdmMinDivision { get; set; }
+ public IStrainTuple UsersPrestrain { get; private set; }
+ public IStrainTuple AutoPrestrain { get; private set; }
+ public double Area { get; set; }
+
+ public IVisualProperty VisualProperty { get; }
+
+
+
+ public PointPrimitive()
+ {
+ Name = "New Point";
+ Area = 0.0005d;
+ VisualProperty = new VisualProperty();
+ UsersPrestrain = new StrainTuple();
+ AutoPrestrain = new StrainTuple();
+ }
+
+ public PointPrimitive(IHeadMaterial material) : this() { HeadMaterial = material; }
+
+ public IEnumerable GetNdms(IMaterial material)
+ {
+ var options = new PointTriangulationLogicOptions(this);
+ IPointTriangulationLogic logic = new PointTriangulationLogic(options);
+ return logic.GetNdmCollection(material);
+ }
+
+ public void Save()
+ {
+ throw new NotImplementedException();
+ }
+
+ public object Clone()
+ {
+ var primitive = new PointPrimitive();
+ NdmPrimitivesService.CopyNdmProperties(this, primitive);
+ primitive.Area = Area;
+ return primitive;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/RectanglePrimitive.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/RectanglePrimitive.cs
new file mode 100644
index 0000000..a7d4cca
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/RectanglePrimitive.cs
@@ -0,0 +1,70 @@
+using LoaderCalculator.Data.Materials;
+using LoaderCalculator.Data.Ndms;
+using StructureHelper.Models.Materials;
+using StructureHelperCommon.Infrastructures.Interfaces;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperCommon.Services.ShapeServices;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperLogics.NdmCalculations.Triangulations;
+using StructureHelperLogics.Services.NdmPrimitives;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public class RectanglePrimitive : IRectanglePrimitive
+ {
+ public int Id { get; set; }
+ public string Name { get; set; }
+ public double CenterX { get; set; }
+ public double CenterY { get; set; }
+ public IHeadMaterial HeadMaterial { get; set; }
+ public IStrainTuple UsersPrestrain { get; private set; }
+ public IStrainTuple AutoPrestrain { get; private set; }
+ public double NdmMaxSize { get; set; }
+ public int NdmMinDivision { get; set; }
+ public double Width { get; set; }
+ public double Height { get; set; }
+ public double Angle { get; set; }
+
+ public IVisualProperty VisualProperty { get; }
+
+ public RectanglePrimitive()
+ {
+ Name = "New Rectangle";
+ NdmMaxSize = 0.01d;
+ NdmMinDivision = 10;
+ VisualProperty = new VisualProperty { Opacity = 0.8d};
+ UsersPrestrain = new StrainTuple();
+ AutoPrestrain = new StrainTuple();
+ }
+
+ public RectanglePrimitive(IHeadMaterial material) : this() { HeadMaterial = material; }
+
+ public object Clone()
+ {
+ RectanglePrimitive primitive = new RectanglePrimitive();
+ NdmPrimitivesService.CopyDivisionProperties(this, primitive);
+ ShapeService.CopyRectangleProperties(this, primitive);
+ return primitive;
+ }
+
+ public IEnumerable GetNdms(IMaterial material)
+ {
+ List ndms = new List();
+ var options = new RectangleTriangulationLogicOptions(this);
+ ITriangulationLogic logic = new RectangleTriangulationLogic(options);
+ ndms.AddRange(logic.GetNdmCollection(material));
+ return ndms;
+ }
+
+ public void Save()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/VisualProperty.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/VisualProperty.cs
new file mode 100644
index 0000000..b729485
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Primitives/VisualProperty.cs
@@ -0,0 +1,42 @@
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperCommon.Services.ColorServices;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Media;
+
+namespace StructureHelperLogics.NdmCalculations.Primitives
+{
+ public class VisualProperty : IVisualProperty
+ {
+
+ public bool IsVisible { get; set; }
+ public Color Color { get; set; }
+ public bool SetMaterialColor { get; set; }
+ public int ZIndex { get; set; }
+ private double opacity;
+
+ public double Opacity
+ {
+ get { return opacity; }
+ set
+ {
+ if (value < 0d || value > 1d) { throw new StructureHelperException(ErrorStrings.VisualPropertyIsNotRight + nameof(Opacity) + value); }
+ opacity = value;
+ }
+ }
+
+
+ public VisualProperty()
+ {
+ IsVisible = true;
+ Color = ColorProcessor.GetRandomColor();
+ SetMaterialColor = true;
+ ZIndex = 0;
+ Opacity = 1;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IPointTriangulationLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IPointTriangulationLogic.cs
new file mode 100644
index 0000000..16f3c63
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IPointTriangulationLogic.cs
@@ -0,0 +1,6 @@
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ interface IPointTriangulationLogic : ITriangulationLogic
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IPointTriangulationLogicOptions.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IPointTriangulationLogicOptions.cs
new file mode 100644
index 0000000..9d64cce
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IPointTriangulationLogicOptions.cs
@@ -0,0 +1,10 @@
+using StructureHelperCommon.Models.Shapes;
+
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ public interface IPointTriangulationLogicOptions : ITriangulationLogicOptions
+ {
+ IPoint2D Center { get; }
+ double Area { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IRectangleTriangulationLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IRectangleTriangulationLogic.cs
new file mode 100644
index 0000000..f2d285d
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IRectangleTriangulationLogic.cs
@@ -0,0 +1,6 @@
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ public interface IRectangleTriangulationLogic : ITriangulationLogic
+ {
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IRectangleTriangulationLogicOptions.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IRectangleTriangulationLogicOptions.cs
new file mode 100644
index 0000000..66851dc
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/IRectangleTriangulationLogicOptions.cs
@@ -0,0 +1,28 @@
+using StructureHelperCommon.Models.Shapes;
+
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ ///
+ /// Parameter of triangulation of rectangle part of section
+ /// Параметры триангуляции прямоугольного участка сечения
+ ///
+ public interface IRectangleTriangulationLogicOptions : ITriangulationLogicOptions
+ {
+ ///
+ ///
+ ///
+ IPoint2D Center { get; }
+ ///
+ ///
+ ///
+ IRectangleShape Rectangle { get; }
+ ///
+ /// Maximum size (width or height) of ndm part after triangulation
+ ///
+ double NdmMaxSize { get; }
+ ///
+ /// Minimum quantity of division of side of rectangle after triangulation
+ ///
+ int NdmMinDivision { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/ITriangulationLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/ITriangulationLogic.cs
new file mode 100644
index 0000000..ad313e1
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/ITriangulationLogic.cs
@@ -0,0 +1,13 @@
+using System.Collections.Generic;
+using LoaderCalculator.Data.Ndms;
+using LoaderCalculator.Data.Materials;
+
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ public interface ITriangulationLogic
+ {
+ ITriangulationLogicOptions Options { get; }
+ IEnumerable GetNdmCollection(IMaterial material);
+ void ValidateOptions(ITriangulationLogicOptions options);
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/ITriangulationLogicOptions.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/ITriangulationLogicOptions.cs
new file mode 100644
index 0000000..513a185
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/ITriangulationLogicOptions.cs
@@ -0,0 +1,9 @@
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ public interface ITriangulationLogicOptions
+ {
+ double PrestrainKx { get;}
+ double PrestrainKy { get;}
+ double PrestrainEpsZ { get;}
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/ITriangulationOptions.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/ITriangulationOptions.cs
new file mode 100644
index 0000000..0f1f0b6
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/ITriangulationOptions.cs
@@ -0,0 +1,10 @@
+using StructureHelperCommon.Infrastructures.Enums;
+
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ public interface ITriangulationOptions
+ {
+ LimitStates LimiteState { get; }
+ CalcTerms CalcTerm { get; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/PointTriangulationLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/PointTriangulationLogic.cs
new file mode 100644
index 0000000..c682be6
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/PointTriangulationLogic.cs
@@ -0,0 +1,37 @@
+using LoaderCalculator.Data.Materials;
+using LoaderCalculator.Data.Ndms;
+using System;
+using System.Collections.Generic;
+using StructureHelperCommon.Models.Shapes;
+using LoaderCalculator.Data.Matrix;
+using LoaderCalculator.Data.Ndms.Transformations;
+
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ public class PointTriangulationLogic : IPointTriangulationLogic
+ {
+ public ITriangulationLogicOptions Options { get; }
+
+ public PointTriangulationLogic(ITriangulationLogicOptions options)
+ {
+ Options = options;
+ }
+
+ public IEnumerable GetNdmCollection(IMaterial material)
+ {
+ IPointTriangulationLogicOptions options = Options as IPointTriangulationLogicOptions;
+ IPoint2D center = options.Center;
+ double area = options.Area;
+ List ndmCollection = new List();
+ INdm ndm = new Ndm { CenterX = center.X, CenterY = center.Y, Area = area, Material = material };
+ ndmCollection.Add(ndm);
+ NdmTransform.SetPrestrain(ndmCollection, new StrainMatrix() { Kx = Options.PrestrainKx, Ky = Options.PrestrainKy, EpsZ = Options.PrestrainEpsZ });
+ return ndmCollection;
+ }
+
+ public void ValidateOptions(ITriangulationLogicOptions options)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/PointTriangulationLogicOptions.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/PointTriangulationLogicOptions.cs
new file mode 100644
index 0000000..1abae2e
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/PointTriangulationLogicOptions.cs
@@ -0,0 +1,42 @@
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperLogics.NdmCalculations.Primitives;
+
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ ///
+ ///
+ ///
+ public class PointTriangulationLogicOptions : IPointTriangulationLogicOptions
+ {
+ ///
+ ///
+ ///
+ public IPoint2D Center { get; }
+ ///
+ public double Area { get; }
+ ///
+ public double PrestrainKx { get; }
+ ///
+ public double PrestrainKy { get; }
+ ///
+ public double PrestrainEpsZ { get; }
+
+ public PointTriangulationLogicOptions(IPoint2D center, double area)
+ {
+ Center = center;
+ Area = area;
+ }
+
+ public PointTriangulationLogicOptions(IPointPrimitive primitive)
+ {
+ Center = new Point2D() { X = primitive.CenterX, Y = primitive.CenterY };
+ Area = primitive.Area;
+ PrestrainKx = primitive.UsersPrestrain.Kx + primitive.AutoPrestrain.Kx;
+ PrestrainKy = primitive.UsersPrestrain.Ky + primitive.AutoPrestrain.Ky;
+ PrestrainEpsZ = primitive.UsersPrestrain.EpsZ + primitive.AutoPrestrain.EpsZ;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/RectangleTriangulationLogic.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/RectangleTriangulationLogic.cs
new file mode 100644
index 0000000..a11e435
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/RectangleTriangulationLogic.cs
@@ -0,0 +1,43 @@
+using LoaderCalculator.Data.Materials;
+using LoaderCalculator.Data.Ndms;
+using System;
+using System.Collections.Generic;
+using LoaderCalculator.Data.Ndms.Transformations;
+using LoaderCalculator.Data.Matrix;
+
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ public class RectangleTriangulationLogic : IRectangleTriangulationLogic
+ {
+ public ITriangulationLogicOptions Options { get; }
+
+ public IEnumerable GetNdmCollection(IMaterial material)
+ {
+ IRectangleTriangulationLogicOptions rectangleOptions = Options as IRectangleTriangulationLogicOptions;
+ double width = rectangleOptions.Rectangle.Width;
+ double height = rectangleOptions.Rectangle.Height;
+ double ndmMaxSize = rectangleOptions.NdmMaxSize;
+ int ndmMinDivision = rectangleOptions.NdmMinDivision;
+ LoaderCalculator.Triangulations.RectangleTriangulationLogicOptions logicOptions = new LoaderCalculator.Triangulations.RectangleTriangulationLogicOptions(width, height, ndmMaxSize, ndmMinDivision);
+ var logic = LoaderCalculator.Triangulations.Triangulation.GetLogicInstance(logicOptions);
+ var ndmCollection = logic.GetNdmCollection(new LoaderCalculator.Data.Planes.RectangularPlane { Material = material });
+ double dX = rectangleOptions.Center.X;
+ double dY = rectangleOptions.Center.Y;
+ NdmTransform.Move(ndmCollection, dX, dY);
+ double angle = rectangleOptions.Rectangle.Angle;
+ NdmTransform.Rotate(ndmCollection, angle);
+ NdmTransform.SetPrestrain(ndmCollection, new StrainMatrix() { Kx = Options.PrestrainKx, Ky = Options.PrestrainKy, EpsZ = Options.PrestrainEpsZ });
+ return ndmCollection;
+ }
+
+ public void ValidateOptions(ITriangulationLogicOptions options)
+ {
+ throw new NotImplementedException();
+ }
+
+ public RectangleTriangulationLogic(ITriangulationLogicOptions options)
+ {
+ Options = options;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/RectangleTriangulationLogicOptions.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/RectangleTriangulationLogicOptions.cs
new file mode 100644
index 0000000..b7bf8a3
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/RectangleTriangulationLogicOptions.cs
@@ -0,0 +1,47 @@
+using System;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperLogics.NdmCalculations.Primitives;
+
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ ///
+ public class RectangleTriangulationLogicOptions : IRectangleTriangulationLogicOptions
+ {
+ ///
+ public IPoint2D Center { get; }
+ ///
+ public IRectangleShape Rectangle { get; }
+ ///
+ public double NdmMaxSize { get; }
+ ///
+ public int NdmMinDivision { get; }
+ ///
+ public double PrestrainKx { get;}
+ ///
+ public double PrestrainKy { get; }
+ ///
+ public double PrestrainEpsZ { get;}
+
+ public RectangleTriangulationLogicOptions(IPoint2D center, IRectangleShape rectangle, double ndmMaxSize, int ndmMinDivision)
+ {
+ Center = center;
+ Rectangle = rectangle;
+ NdmMaxSize = ndmMaxSize;
+ NdmMinDivision = ndmMinDivision;
+ }
+
+ public RectangleTriangulationLogicOptions(IRectanglePrimitive primitive)
+ {
+ Center = new Point2D() { X = primitive.CenterX, Y = primitive.CenterY };
+ Rectangle = primitive;
+ NdmMaxSize = primitive.NdmMaxSize;
+ NdmMinDivision = primitive.NdmMinDivision;
+ PrestrainKx = primitive.UsersPrestrain.Kx + primitive.AutoPrestrain.Kx;
+ PrestrainKy = primitive.UsersPrestrain.Ky + primitive.AutoPrestrain.Ky;
+ PrestrainEpsZ = primitive.UsersPrestrain.EpsZ + primitive.AutoPrestrain.EpsZ;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/Triangulation.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/Triangulation.cs
new file mode 100644
index 0000000..fbdc021
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/Triangulation.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Collections.Generic;
+using LoaderCalculator.Data.Materials;
+using LoaderCalculator.Data.Materials.MaterialBuilders;
+using LoaderCalculator.Data.Ndms;
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Strings;
+using StructureHelperLogics.Models.Materials;
+using StructureHelperCommon.Models.Shapes;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelper.Models.Materials;
+using StructureHelperLogics.NdmCalculations.Primitives;
+
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ public static class Triangulation
+ {
+ public static IEnumerable GetNdms(IEnumerable ndmPrimitives, ITriangulationOptions options)
+ {
+ List ndms = new List();
+ var headMaterials = GetPrimitiveMaterials(ndmPrimitives);
+ Dictionary materials = GetMaterials(headMaterials, options);
+ foreach (var ndmPrimitive in ndmPrimitives)
+ {
+ IHeadMaterial headMaterial = ndmPrimitive.HeadMaterial;
+ IMaterial material;
+ if (materials.TryGetValue(headMaterial.Id, out material) == false) { throw new Exception("Material dictionary is not valid"); }
+ IEnumerable localNdms = GetNdmsByPrimitive(ndmPrimitive, material);
+ ndms.AddRange(localNdms);
+ }
+ return ndms;
+ }
+ ///
+ /// Returns dictionary of unique materials by collection of primitives
+ ///
+ ///
+ ///
+ private static Dictionary GetPrimitiveMaterials(IEnumerable ndmPrimitives)
+ {
+ Dictionary headMaterials = new Dictionary();
+ foreach (var ndmPrimitive in ndmPrimitives)
+ {
+ IHeadMaterial material = ndmPrimitive.HeadMaterial;
+ if (!headMaterials.ContainsKey(material.Id)) { headMaterials.Add(material.Id, material); }
+ }
+ return headMaterials;
+ }
+ ///
+ /// Return dictionary of ndm-materials by dictionary of primirive materials
+ ///
+ ///
+ ///
+ ///
+ ///
+ private static Dictionary GetMaterials(Dictionary PrimitiveMaterials, ITriangulationOptions options)
+ {
+ Dictionary materials = new Dictionary();
+ IEnumerable keyCollection = PrimitiveMaterials.Keys;
+ IMaterial material;
+ foreach (string id in keyCollection)
+ {
+ IHeadMaterial headMaterial;
+ if (PrimitiveMaterials.TryGetValue(id, out headMaterial) == false) { throw new StructureHelperException("Material dictionary is not valid"); }
+ material = headMaterial.GetLoaderMaterial(options.LimiteState, options.CalcTerm);
+ materials.Add(id, material);
+ }
+ return materials;
+ }
+
+ private static IEnumerable GetNdmsByPrimitive(INdmPrimitive primitive, IMaterial material)
+ {
+ List ndms = new List();
+ //ITriangulationLogicOptions options;
+ //ICenter center = primitive.Center;
+ //IShape shape = primitive.Shape;
+ ndms.AddRange(primitive.GetNdms(material));
+ //if (shape is IRectangleShape)
+ //{
+ // options = new RectangleTriangulationLogicOptions(primitive);
+ // ITriangulationLogic logic = new RectangleTriangulationLogic(options);
+ // ndms.AddRange(logic.GetNdmCollection(material));
+ //}
+ //else if (shape is IPoint)
+ //{
+ // options = new PointTriangulationLogicOptions(primitive);
+ // IPointTriangulationLogic logic = new PointTriangulationLogic(options);
+ // ndms.AddRange(logic.GetNdmCollection(material));
+ //}
+ //else { throw new StructureHelperException($"{ErrorStrings.ShapeIsNotCorrect} :{nameof(primitive.Shape)}"); }
+ return ndms;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/TriangulationOptions.cs b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/TriangulationOptions.cs
new file mode 100644
index 0000000..6a52527
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/NdmCalculations/Triangulations/TriangulationOptions.cs
@@ -0,0 +1,10 @@
+using StructureHelperCommon.Infrastructures.Enums;
+
+namespace StructureHelperLogics.NdmCalculations.Triangulations
+{
+ public class TriangulationOptions : ITriangulationOptions
+ {
+ public LimitStates LimiteState { get; set; }
+ public CalcTerms CalcTerm { get; set; }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Services/NdmCalculations/CalculationService.cs b/StructureHelper/StructureHelperLogics/Services/NdmCalculations/CalculationService.cs
new file mode 100644
index 0000000..dbc039d
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Services/NdmCalculations/CalculationService.cs
@@ -0,0 +1,90 @@
+using LoaderCalculator.Data.Matrix;
+using LoaderCalculator.Data.Ndms;
+using LoaderCalculator.Data.SourceData;
+using LoaderCalculator;
+using StructureHelperLogics.Models.Calculations.CalculationProperties;
+using StructureHelperLogics.Models.Calculations.CalculationsResults;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperLogics.NdmCalculations.Triangulations;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperLogics.NdmCalculations.Primitives;
+
+namespace StructureHelperLogics.Services.NdmCalculations
+{
+ public class CalculationService
+ {
+ private ICalculationProperty calculationProperty;
+
+ public IStrainMatrix GetPrimitiveStrainMatrix(INdmPrimitive[] ndmPrimitives, double mx, double my, double nz)
+ {
+ var ndmCollection = new List();
+ ITriangulationOptions options = new TriangulationOptions { LimiteState = calculationProperty.LimitState, CalcTerm = calculationProperty.CalcTerm };
+ ndmCollection.AddRange(Triangulation.GetNdms(ndmPrimitives, options));
+ var loaderData = new LoaderOptions
+ {
+ Preconditions = new Preconditions
+ {
+ ConditionRate = calculationProperty.IterationProperty.Accuracy,
+ MaxIterationCount = calculationProperty.IterationProperty.MaxIterationCount,
+ StartForceMatrix = new ForceMatrix { Mx = mx, My = my, Nz = nz }
+ },
+ NdmCollection = ndmCollection
+ };
+ var calculator = new Calculator();
+ calculator.Run(loaderData, new CancellationToken());
+ return calculator.Result.StrainMatrix;
+ }
+
+ public List GetCalculationResults(IEnumerable ndms)
+ {
+ List results = new List();
+ foreach (var forceCombinations in calculationProperty.ForceCombinations)
+ {
+ var forceMatrix = forceCombinations.ForceMatrix;
+ results.Add(GetCalculationResult(forceMatrix, ndms, calculationProperty.IterationProperty.Accuracy, calculationProperty.IterationProperty.MaxIterationCount));
+ }
+ return results;
+ }
+
+ public ICalculationResult GetCalculationResult(IForceMatrix forceMatrix, IEnumerable ndmCollection, double accuracyRate, int maxIterationCount)
+ {
+ try
+ {
+ var loaderData = new LoaderOptions
+ {
+ Preconditions = new Preconditions
+ {
+ ConditionRate = accuracyRate,
+ MaxIterationCount = maxIterationCount,
+ StartForceMatrix = forceMatrix
+ },
+ NdmCollection = ndmCollection
+ };
+ var calculator = new Calculator();
+ calculator.Run(loaderData, new CancellationToken());
+ var result = calculator.Result;
+ if (result.AccuracyRate <= accuracyRate) { return new CalculationResult() { IsValid = true, Desctription = "Analisys is done succsefully", LoaderResults = result }; }
+ else { return new CalculationResult() { IsValid = false, Desctription = "Required accuracy rate has not achived", LoaderResults = result }; }
+ }
+ catch (Exception ex)
+ {
+ return new CalculationResult() { IsValid = false, Desctription = $"Error is appeared due to analysis. Error: {ex}" };
+ }
+ }
+
+ public CalculationService(ICalculationProperty property)
+ {
+ calculationProperty = property;
+ }
+ public CalculationService()
+ {
+
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Services/NdmCalculations/InterpolateService.cs b/StructureHelper/StructureHelperLogics/Services/NdmCalculations/InterpolateService.cs
new file mode 100644
index 0000000..5d1cd4b
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Services/NdmCalculations/InterpolateService.cs
@@ -0,0 +1,40 @@
+using StructureHelperCommon.Models.Forces;
+using StructureHelperCommon.Services.Forces;
+using StructureHelperCommon.Services.Sections;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelperLogics.Services.NdmCalculations
+{
+ public static class InterpolateService
+ {
+ public static IForceCalculator InterpolateForceCalculator(IForceCalculator source, IDesignForceTuple finishDesignForce,IDesignForceTuple startDesignForce, int stepCount)
+ {
+ IForceCalculator calculator = new ForceCalculator();
+ calculator.LimitStatesList.Clear();
+ calculator.LimitStatesList.Add(finishDesignForce.LimitState);
+ calculator.CalcTermsList.Clear();
+ calculator.CalcTermsList.Add(finishDesignForce.CalcTerm);
+ CompressedMemberServices.CopyProperties(source.CompressedMember, calculator.CompressedMember);
+ calculator.Accuracy = source.Accuracy;
+ calculator.Primitives.AddRange(source.Primitives);
+ calculator.ForceCombinationLists.Clear();
+ var combination = new ForceCombinationList()
+ {
+ Name = "New combination",
+ SetInGravityCenter = false
+ };
+ combination.DesignForces.Clear();
+ combination.DesignForces.AddRange(ForceTupleService.InterpolateDesignTuple(finishDesignForce, startDesignForce, stepCount));
+ combination.ForcePoint.X = 0;
+ combination.ForcePoint.Y = 0;
+ calculator.ForceCombinationLists.Add(combination);
+ return calculator;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/Services/NdmPrimitives/NdmPrimitivesService.cs b/StructureHelper/StructureHelperLogics/Services/NdmPrimitives/NdmPrimitivesService.cs
new file mode 100644
index 0000000..de61870
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/Services/NdmPrimitives/NdmPrimitivesService.cs
@@ -0,0 +1,57 @@
+using LoaderCalculator.Data.Ndms;
+using StructureHelperCommon.Infrastructures.Enums;
+using StructureHelperCommon.Services.Forces;
+using StructureHelperLogics.Models.Calculations.CalculationProperties;
+using StructureHelperLogics.Models.Primitives;
+using StructureHelperLogics.NdmCalculations.Primitives;
+using StructureHelperLogics.NdmCalculations.Triangulations;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static System.Collections.Specialized.BitVector32;
+
+namespace StructureHelperLogics.Services.NdmPrimitives
+{
+ public static class NdmPrimitivesService
+ {
+ public static void CopyVisualProperty(IVisualProperty source, IVisualProperty target)
+ {
+ target.IsVisible = source.IsVisible;
+ target.Color = source.Color;
+ target.SetMaterialColor = source.SetMaterialColor;
+ target.Opacity = source.Opacity;
+ target.ZIndex = source.ZIndex;
+ }
+
+ public static void CopyNdmProperties (INdmPrimitive source, INdmPrimitive target)
+ {
+ target.Name = source.Name + " copy" ;
+ if (source.HeadMaterial != null) target.HeadMaterial = source.HeadMaterial;
+ CopyVisualProperty(source.VisualProperty, target.VisualProperty);
+ target.CenterX = source.CenterX;
+ target.CenterY = source.CenterY;
+ StrainTupleService.CopyProperties(source.UsersPrestrain, target.UsersPrestrain);
+ }
+
+ public static void CopyDivisionProperties(IHasDivisionSize source, IHasDivisionSize target)
+ {
+ CopyNdmProperties(source, target);
+ target.NdmMaxSize = source.NdmMaxSize;
+ target.NdmMinDivision = source.NdmMinDivision;
+ }
+
+ public static List GetNdms(IEnumerable primitives, LimitStates limitState, CalcTerms calcTerm)
+ {
+ //Настройки триангуляции
+ ITriangulationOptions options = new TriangulationOptions { LimiteState = limitState, CalcTerm = calcTerm };
+
+ //Формируем коллекцию элементарных участков для расчета в библитеке (т.е. выполняем триангуляцию)
+ List ndmCollection = new List();
+ ndmCollection.AddRange(Triangulation.GetNdms(primitives, options));
+
+ return ndmCollection;
+ }
+ }
+}
diff --git a/StructureHelper/StructureHelperLogics/StructureHelperLogics.csproj b/StructureHelper/StructureHelperLogics/StructureHelperLogics.csproj
new file mode 100644
index 0000000..ef0f54a
--- /dev/null
+++ b/StructureHelper/StructureHelperLogics/StructureHelperLogics.csproj
@@ -0,0 +1,26 @@
+
+
+
+ net472
+ Library
+
+
+
+
+
+
+
+
+ ..\Libraries\LoaderCalculator.dll
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/StructureHelperLogics/StructureHelperLogics.csproj.bak b/StructureHelper/StructureHelperLogics/StructureHelperLogics.csproj.bak
similarity index 100%
rename from StructureHelperLogics/StructureHelperLogics.csproj.bak
rename to StructureHelper/StructureHelperLogics/StructureHelperLogics.csproj.bak
diff --git a/StructureHelperLogics/StructureHelperLogics1.csproj b/StructureHelper/StructureHelperLogics/StructureHelperLogics1.csproj
similarity index 100%
rename from StructureHelperLogics/StructureHelperLogics1.csproj
rename to StructureHelper/StructureHelperLogics/StructureHelperLogics1.csproj
diff --git a/UnitSystem/Enums/SystemTypes.cs b/StructureHelper/UnitSystem/Enums/SystemTypes.cs
similarity index 100%
rename from UnitSystem/Enums/SystemTypes.cs
rename to StructureHelper/UnitSystem/Enums/SystemTypes.cs
diff --git a/UnitSystem/Systems/IUnitSystem.cs b/StructureHelper/UnitSystem/Systems/IUnitSystem.cs
similarity index 100%
rename from UnitSystem/Systems/IUnitSystem.cs
rename to StructureHelper/UnitSystem/Systems/IUnitSystem.cs
diff --git a/UnitSystem/Systems/SystemSi.cs b/StructureHelper/UnitSystem/Systems/SystemSi.cs
similarity index 100%
rename from UnitSystem/Systems/SystemSi.cs
rename to StructureHelper/UnitSystem/Systems/SystemSi.cs
diff --git a/UnitSystem/UnitSystemService.cs b/StructureHelper/UnitSystem/UnitSystemService.cs
similarity index 100%
rename from UnitSystem/UnitSystemService.cs
rename to StructureHelper/UnitSystem/UnitSystemService.cs
diff --git a/Windows/AddMaterialWindow/AddMaterialView.xaml b/StructureHelper/Windows/AddMaterialWindow/AddMaterialView.xaml
similarity index 100%
rename from Windows/AddMaterialWindow/AddMaterialView.xaml
rename to StructureHelper/Windows/AddMaterialWindow/AddMaterialView.xaml
diff --git a/Windows/AddMaterialWindow/AddMaterialView.xaml.cs b/StructureHelper/Windows/AddMaterialWindow/AddMaterialView.xaml.cs
similarity index 100%
rename from Windows/AddMaterialWindow/AddMaterialView.xaml.cs
rename to StructureHelper/Windows/AddMaterialWindow/AddMaterialView.xaml.cs
diff --git a/Windows/AddMaterialWindow/AddMaterialViewModel.cs b/StructureHelper/Windows/AddMaterialWindow/AddMaterialViewModel.cs
similarity index 100%
rename from Windows/AddMaterialWindow/AddMaterialViewModel.cs
rename to StructureHelper/Windows/AddMaterialWindow/AddMaterialViewModel.cs
diff --git a/Windows/CalculationWindows/CalculationPropertyWindow/CalculationPropertyView.xaml b/StructureHelper/Windows/CalculationWindows/CalculationPropertyWindow/CalculationPropertyView.xaml
similarity index 100%
rename from Windows/CalculationWindows/CalculationPropertyWindow/CalculationPropertyView.xaml
rename to StructureHelper/Windows/CalculationWindows/CalculationPropertyWindow/CalculationPropertyView.xaml
diff --git a/Windows/CalculationWindows/CalculationPropertyWindow/CalculationPropertyView.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculationPropertyWindow/CalculationPropertyView.xaml.cs
similarity index 100%
rename from Windows/CalculationWindows/CalculationPropertyWindow/CalculationPropertyView.xaml.cs
rename to StructureHelper/Windows/CalculationWindows/CalculationPropertyWindow/CalculationPropertyView.xaml.cs
diff --git a/Windows/CalculationWindows/CalculationResultWindow/CalculationResultView.xaml b/StructureHelper/Windows/CalculationWindows/CalculationResultWindow/CalculationResultView.xaml
similarity index 100%
rename from Windows/CalculationWindows/CalculationResultWindow/CalculationResultView.xaml
rename to StructureHelper/Windows/CalculationWindows/CalculationResultWindow/CalculationResultView.xaml
diff --git a/Windows/CalculationWindows/CalculationResultWindow/CalculationResultView.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculationResultWindow/CalculationResultView.xaml.cs
similarity index 100%
rename from Windows/CalculationWindows/CalculationResultWindow/CalculationResultView.xaml.cs
rename to StructureHelper/Windows/CalculationWindows/CalculationResultWindow/CalculationResultView.xaml.cs
diff --git a/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml
similarity index 100%
rename from Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml
diff --git a/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml.cs
similarity index 100%
rename from Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml.cs
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceCalculatorView.xaml.cs
diff --git a/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml
similarity index 100%
rename from Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml
diff --git a/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml.cs
similarity index 100%
rename from Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml.cs
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml.cs
diff --git a/Windows/CalculationWindows/CalculatorsViews/SetPrestrainView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/SetPrestrainView.xaml
similarity index 100%
rename from Windows/CalculationWindows/CalculatorsViews/SetPrestrainView.xaml
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/SetPrestrainView.xaml
diff --git a/Windows/CalculationWindows/CalculatorsViews/SetPrestrainView.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/SetPrestrainView.xaml.cs
similarity index 100%
rename from Windows/CalculationWindows/CalculatorsViews/SetPrestrainView.xaml.cs
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/SetPrestrainView.xaml.cs
diff --git a/Windows/CalculationWindows/CalculatorsViews/SourceToTargetControl.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/SourceToTargetControl.xaml
similarity index 100%
rename from Windows/CalculationWindows/CalculatorsViews/SourceToTargetControl.xaml
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/SourceToTargetControl.xaml
diff --git a/Windows/CalculationWindows/CalculatorsViews/SourceToTargetControl.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/SourceToTargetControl.xaml.cs
similarity index 100%
rename from Windows/CalculationWindows/CalculatorsViews/SourceToTargetControl.xaml.cs
rename to StructureHelper/Windows/CalculationWindows/CalculatorsViews/SourceToTargetControl.xaml.cs
diff --git a/Windows/ColorPickerWindow/ColorPickerView.xaml b/StructureHelper/Windows/ColorPickerWindow/ColorPickerView.xaml
similarity index 100%
rename from Windows/ColorPickerWindow/ColorPickerView.xaml
rename to StructureHelper/Windows/ColorPickerWindow/ColorPickerView.xaml
diff --git a/Windows/ColorPickerWindow/ColorPickerView.xaml.cs b/StructureHelper/Windows/ColorPickerWindow/ColorPickerView.xaml.cs
similarity index 100%
rename from Windows/ColorPickerWindow/ColorPickerView.xaml.cs
rename to StructureHelper/Windows/ColorPickerWindow/ColorPickerView.xaml.cs
diff --git a/Windows/ColorPickerWindow/ColorPickerViewModel.cs b/StructureHelper/Windows/ColorPickerWindow/ColorPickerViewModel.cs
similarity index 100%
rename from Windows/ColorPickerWindow/ColorPickerViewModel.cs
rename to StructureHelper/Windows/ColorPickerWindow/ColorPickerViewModel.cs
diff --git a/Windows/Forces/ForceCombinationView.xaml b/StructureHelper/Windows/Forces/ForceCombinationView.xaml
similarity index 100%
rename from Windows/Forces/ForceCombinationView.xaml
rename to StructureHelper/Windows/Forces/ForceCombinationView.xaml
diff --git a/Windows/Forces/ForceCombinationView.xaml.cs b/StructureHelper/Windows/Forces/ForceCombinationView.xaml.cs
similarity index 100%
rename from Windows/Forces/ForceCombinationView.xaml.cs
rename to StructureHelper/Windows/Forces/ForceCombinationView.xaml.cs
diff --git a/Windows/Forces/ForceTupleControl.xaml b/StructureHelper/Windows/Forces/ForceTupleControl.xaml
similarity index 100%
rename from Windows/Forces/ForceTupleControl.xaml
rename to StructureHelper/Windows/Forces/ForceTupleControl.xaml
diff --git a/Windows/Forces/ForceTupleControl.xaml.cs b/StructureHelper/Windows/Forces/ForceTupleControl.xaml.cs
similarity index 100%
rename from Windows/Forces/ForceTupleControl.xaml.cs
rename to StructureHelper/Windows/Forces/ForceTupleControl.xaml.cs
diff --git a/Windows/Forces/InterpolateTuplesView.xaml b/StructureHelper/Windows/Forces/InterpolateTuplesView.xaml
similarity index 100%
rename from Windows/Forces/InterpolateTuplesView.xaml
rename to StructureHelper/Windows/Forces/InterpolateTuplesView.xaml
diff --git a/Windows/Forces/InterpolateTuplesView.xaml.cs b/StructureHelper/Windows/Forces/InterpolateTuplesView.xaml.cs
similarity index 100%
rename from Windows/Forces/InterpolateTuplesView.xaml.cs
rename to StructureHelper/Windows/Forces/InterpolateTuplesView.xaml.cs
diff --git a/Windows/MainWindow/MainModel.cs b/StructureHelper/Windows/MainWindow/MainModel.cs
similarity index 100%
rename from Windows/MainWindow/MainModel.cs
rename to StructureHelper/Windows/MainWindow/MainModel.cs
diff --git a/Windows/MainWindow/MainView.xaml b/StructureHelper/Windows/MainWindow/MainView.xaml
similarity index 100%
rename from Windows/MainWindow/MainView.xaml
rename to StructureHelper/Windows/MainWindow/MainView.xaml
index 647a5c0..81695dc 100644
--- a/Windows/MainWindow/MainView.xaml
+++ b/StructureHelper/Windows/MainWindow/MainView.xaml
@@ -3,7 +3,6 @@
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:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:infrastructure="clr-namespace:StructureHelper.Infrastructure"
xmlns:dataTemplates="clr-namespace:StructureHelper.Infrastructure.UI.DataTemplates"
xmlns:dataContexts="clr-namespace:StructureHelper.Infrastructure.UI.DataContexts"
@@ -11,6 +10,7 @@
xmlns:mouseEventTriggers="clr-namespace:StructureHelper.Infrastructure.UI.Triggers.MouseEventTriggers"
xmlns:local="clr-namespace:StructureHelper.Windows.MainWindow"
xmlns:enums="clr-namespace:StructureHelper.Infrastructure.Enums"
+ xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:MainViewModel}"
Title="StructureHelper" Height="700" Width="1000" MinHeight="400" MinWidth="600">
diff --git a/Windows/MainWindow/MainView.xaml.cs b/StructureHelper/Windows/MainWindow/MainView.xaml.cs
similarity index 100%
rename from Windows/MainWindow/MainView.xaml.cs
rename to StructureHelper/Windows/MainWindow/MainView.xaml.cs
diff --git a/Windows/MainWindow/MainViewModel.cs b/StructureHelper/Windows/MainWindow/MainViewModel.cs
similarity index 100%
rename from Windows/MainWindow/MainViewModel.cs
rename to StructureHelper/Windows/MainWindow/MainViewModel.cs
diff --git a/Windows/MainWindow/Materials/HeadMaterialsView.xaml b/StructureHelper/Windows/MainWindow/Materials/HeadMaterialsView.xaml
similarity index 100%
rename from Windows/MainWindow/Materials/HeadMaterialsView.xaml
rename to StructureHelper/Windows/MainWindow/Materials/HeadMaterialsView.xaml
diff --git a/Windows/MainWindow/Materials/HeadMaterialsView.xaml.cs b/StructureHelper/Windows/MainWindow/Materials/HeadMaterialsView.xaml.cs
similarity index 100%
rename from Windows/MainWindow/Materials/HeadMaterialsView.xaml.cs
rename to StructureHelper/Windows/MainWindow/Materials/HeadMaterialsView.xaml.cs
diff --git a/Windows/MainWindow/Materials/PartialFactorsView.xaml b/StructureHelper/Windows/MainWindow/Materials/PartialFactorsView.xaml
similarity index 100%
rename from Windows/MainWindow/Materials/PartialFactorsView.xaml
rename to StructureHelper/Windows/MainWindow/Materials/PartialFactorsView.xaml
diff --git a/Windows/MainWindow/Materials/PartialFactorsView.xaml.cs b/StructureHelper/Windows/MainWindow/Materials/PartialFactorsView.xaml.cs
similarity index 100%
rename from Windows/MainWindow/Materials/PartialFactorsView.xaml.cs
rename to StructureHelper/Windows/MainWindow/Materials/PartialFactorsView.xaml.cs
diff --git a/Windows/MainWindow/Materials/SafetyFactorsView.xaml b/StructureHelper/Windows/MainWindow/Materials/SafetyFactorsView.xaml
similarity index 100%
rename from Windows/MainWindow/Materials/SafetyFactorsView.xaml
rename to StructureHelper/Windows/MainWindow/Materials/SafetyFactorsView.xaml
diff --git a/Windows/MainWindow/Materials/SafetyFactorsView.xaml.cs b/StructureHelper/Windows/MainWindow/Materials/SafetyFactorsView.xaml.cs
similarity index 100%
rename from Windows/MainWindow/Materials/SafetyFactorsView.xaml.cs
rename to StructureHelper/Windows/MainWindow/Materials/SafetyFactorsView.xaml.cs
diff --git a/Windows/MainWindow/VisualPropertyView.xaml b/StructureHelper/Windows/MainWindow/VisualPropertyView.xaml
similarity index 100%
rename from Windows/MainWindow/VisualPropertyView.xaml
rename to StructureHelper/Windows/MainWindow/VisualPropertyView.xaml
diff --git a/Windows/MainWindow/VisualPropertyView.xaml.cs b/StructureHelper/Windows/MainWindow/VisualPropertyView.xaml.cs
similarity index 100%
rename from Windows/MainWindow/VisualPropertyView.xaml.cs
rename to StructureHelper/Windows/MainWindow/VisualPropertyView.xaml.cs
diff --git a/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml b/StructureHelper/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml
similarity index 100%
rename from Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml
rename to StructureHelper/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml
diff --git a/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml.cs b/StructureHelper/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml.cs
similarity index 100%
rename from Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml.cs
rename to StructureHelper/Windows/PrimitivePropertiesWindow/PrimitivePropertiesView.xaml.cs
diff --git a/Windows/PrimitivePropertiesWindow/SelectPrimitivesView.xaml b/StructureHelper/Windows/PrimitivePropertiesWindow/SelectPrimitivesView.xaml
similarity index 100%
rename from Windows/PrimitivePropertiesWindow/SelectPrimitivesView.xaml
rename to StructureHelper/Windows/PrimitivePropertiesWindow/SelectPrimitivesView.xaml
diff --git a/Windows/PrimitivePropertiesWindow/SelectPrimitivesView.xaml.cs b/StructureHelper/Windows/PrimitivePropertiesWindow/SelectPrimitivesView.xaml.cs
similarity index 100%
rename from Windows/PrimitivePropertiesWindow/SelectPrimitivesView.xaml.cs
rename to StructureHelper/Windows/PrimitivePropertiesWindow/SelectPrimitivesView.xaml.cs
diff --git a/Windows/PrimitiveTemplates/RCs/RectangleBeam/RectangleBeamView.xaml b/StructureHelper/Windows/PrimitiveTemplates/RCs/RectangleBeam/RectangleBeamView.xaml
similarity index 100%
rename from Windows/PrimitiveTemplates/RCs/RectangleBeam/RectangleBeamView.xaml
rename to StructureHelper/Windows/PrimitiveTemplates/RCs/RectangleBeam/RectangleBeamView.xaml
diff --git a/Windows/PrimitiveTemplates/RCs/RectangleBeam/RectangleBeamView.xaml.cs b/StructureHelper/Windows/PrimitiveTemplates/RCs/RectangleBeam/RectangleBeamView.xaml.cs
similarity index 100%
rename from Windows/PrimitiveTemplates/RCs/RectangleBeam/RectangleBeamView.xaml.cs
rename to StructureHelper/Windows/PrimitiveTemplates/RCs/RectangleBeam/RectangleBeamView.xaml.cs
diff --git a/Windows/ViewModels/CRUDViewModelBase.cs b/StructureHelper/Windows/ViewModels/CRUDViewModelBase.cs
similarity index 100%
rename from Windows/ViewModels/CRUDViewModelBase.cs
rename to StructureHelper/Windows/ViewModels/CRUDViewModelBase.cs
diff --git a/Windows/ViewModels/Calculations/CalculationProperies/CalculationPropertyViewModel.cs b/StructureHelper/Windows/ViewModels/Calculations/CalculationProperies/CalculationPropertyViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Calculations/CalculationProperies/CalculationPropertyViewModel.cs
rename to StructureHelper/Windows/ViewModels/Calculations/CalculationProperies/CalculationPropertyViewModel.cs
diff --git a/Windows/ViewModels/Calculations/CalculationResult/CalculationResultViewModel.cs b/StructureHelper/Windows/ViewModels/Calculations/CalculationResult/CalculationResultViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Calculations/CalculationResult/CalculationResultViewModel.cs
rename to StructureHelper/Windows/ViewModels/Calculations/CalculationResult/CalculationResultViewModel.cs
diff --git a/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs b/StructureHelper/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs
rename to StructureHelper/Windows/ViewModels/Calculations/Calculators/ForceCalculatorViewModel.cs
diff --git a/Windows/ViewModels/Calculations/Calculators/ForcesResultsViewModel.cs b/StructureHelper/Windows/ViewModels/Calculations/Calculators/ForcesResultsViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Calculations/Calculators/ForcesResultsViewModel.cs
rename to StructureHelper/Windows/ViewModels/Calculations/Calculators/ForcesResultsViewModel.cs
diff --git a/Windows/ViewModels/Calculations/Calculators/ICombinationSourceToTargetViewModel.cs b/StructureHelper/Windows/ViewModels/Calculations/Calculators/ICombinationSourceToTargetViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Calculations/Calculators/ICombinationSourceToTargetViewModel.cs
rename to StructureHelper/Windows/ViewModels/Calculations/Calculators/ICombinationSourceToTargetViewModel.cs
diff --git a/Windows/ViewModels/Calculations/Calculators/SetPrestrainViewModel.cs b/StructureHelper/Windows/ViewModels/Calculations/Calculators/SetPrestrainViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Calculations/Calculators/SetPrestrainViewModel.cs
rename to StructureHelper/Windows/ViewModels/Calculations/Calculators/SetPrestrainViewModel.cs
diff --git a/Windows/ViewModels/Forces/ActionsViewModel.cs b/StructureHelper/Windows/ViewModels/Forces/ActionsViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Forces/ActionsViewModel.cs
rename to StructureHelper/Windows/ViewModels/Forces/ActionsViewModel.cs
diff --git a/Windows/ViewModels/Forces/ForceCombinationViewModel.cs b/StructureHelper/Windows/ViewModels/Forces/ForceCombinationViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Forces/ForceCombinationViewModel.cs
rename to StructureHelper/Windows/ViewModels/Forces/ForceCombinationViewModel.cs
diff --git a/Windows/ViewModels/Forces/ForceTuplesViewModel.cs b/StructureHelper/Windows/ViewModels/Forces/ForceTuplesViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Forces/ForceTuplesViewModel.cs
rename to StructureHelper/Windows/ViewModels/Forces/ForceTuplesViewModel.cs
diff --git a/Windows/ViewModels/Forces/InterpolateTuplesViewModel.cs b/StructureHelper/Windows/ViewModels/Forces/InterpolateTuplesViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Forces/InterpolateTuplesViewModel.cs
rename to StructureHelper/Windows/ViewModels/Forces/InterpolateTuplesViewModel.cs
diff --git a/Windows/ViewModels/ICRUDViewModel.cs b/StructureHelper/Windows/ViewModels/ICRUDViewModel.cs
similarity index 100%
rename from Windows/ViewModels/ICRUDViewModel.cs
rename to StructureHelper/Windows/ViewModels/ICRUDViewModel.cs
diff --git a/Windows/ViewModels/ISourceToTargetViewModel.cs b/StructureHelper/Windows/ViewModels/ISourceToTargetViewModel.cs
similarity index 100%
rename from Windows/ViewModels/ISourceToTargetViewModel.cs
rename to StructureHelper/Windows/ViewModels/ISourceToTargetViewModel.cs
diff --git a/Windows/ViewModels/Materials/HeadMaterialsViewModel.cs b/StructureHelper/Windows/ViewModels/Materials/HeadMaterialsViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Materials/HeadMaterialsViewModel.cs
rename to StructureHelper/Windows/ViewModels/Materials/HeadMaterialsViewModel.cs
diff --git a/Windows/ViewModels/Materials/ISafetyFactorViewModel.cs b/StructureHelper/Windows/ViewModels/Materials/ISafetyFactorViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Materials/ISafetyFactorViewModel.cs
rename to StructureHelper/Windows/ViewModels/Materials/ISafetyFactorViewModel.cs
diff --git a/Windows/ViewModels/Materials/PartialFactorsViewModel.cs b/StructureHelper/Windows/ViewModels/Materials/PartialFactorsViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Materials/PartialFactorsViewModel.cs
rename to StructureHelper/Windows/ViewModels/Materials/PartialFactorsViewModel.cs
diff --git a/Windows/ViewModels/Materials/SafetyFactorsViewModel.cs b/StructureHelper/Windows/ViewModels/Materials/SafetyFactorsViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Materials/SafetyFactorsViewModel.cs
rename to StructureHelper/Windows/ViewModels/Materials/SafetyFactorsViewModel.cs
diff --git a/Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs
similarity index 100%
rename from Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs
rename to StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisVewModelLogic.cs
diff --git a/Windows/ViewModels/NdmCrossSections/CrossSectionViewVisualProperty.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/CrossSectionViewVisualProperty.cs
similarity index 100%
rename from Windows/ViewModels/NdmCrossSections/CrossSectionViewVisualProperty.cs
rename to StructureHelper/Windows/ViewModels/NdmCrossSections/CrossSectionViewVisualProperty.cs
diff --git a/Windows/ViewModels/NdmCrossSections/ForceCombinationViewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/ForceCombinationViewModelLogic.cs
similarity index 100%
rename from Windows/ViewModels/NdmCrossSections/ForceCombinationViewModelLogic.cs
rename to StructureHelper/Windows/ViewModels/NdmCrossSections/ForceCombinationViewModelLogic.cs
diff --git a/Windows/ViewModels/NdmCrossSections/ICalculatorsViewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/ICalculatorsViewModelLogic.cs
similarity index 100%
rename from Windows/ViewModels/NdmCrossSections/ICalculatorsViewModelLogic.cs
rename to StructureHelper/Windows/ViewModels/NdmCrossSections/ICalculatorsViewModelLogic.cs
diff --git a/Windows/ViewModels/NdmCrossSections/IForceCombinationViewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/IForceCombinationViewModelLogic.cs
similarity index 100%
rename from Windows/ViewModels/NdmCrossSections/IForceCombinationViewModelLogic.cs
rename to StructureHelper/Windows/ViewModels/NdmCrossSections/IForceCombinationViewModelLogic.cs
diff --git a/Windows/ViewModels/NdmCrossSections/IPrimitiveViewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/IPrimitiveViewModelLogic.cs
similarity index 100%
rename from Windows/ViewModels/NdmCrossSections/IPrimitiveViewModelLogic.cs
rename to StructureHelper/Windows/ViewModels/NdmCrossSections/IPrimitiveViewModelLogic.cs
diff --git a/Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs
similarity index 100%
rename from Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs
rename to StructureHelper/Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs
diff --git a/Windows/ViewModels/NdmCrossSections/SecondOrderViewModel.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/SecondOrderViewModel.cs
similarity index 100%
rename from Windows/ViewModels/NdmCrossSections/SecondOrderViewModel.cs
rename to StructureHelper/Windows/ViewModels/NdmCrossSections/SecondOrderViewModel.cs
diff --git a/Windows/ViewModels/OkCancelViewModelBase.cs b/StructureHelper/Windows/ViewModels/OkCancelViewModelBase.cs
similarity index 100%
rename from Windows/ViewModels/OkCancelViewModelBase.cs
rename to StructureHelper/Windows/ViewModels/OkCancelViewModelBase.cs
diff --git a/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs b/StructureHelper/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs
similarity index 100%
rename from Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs
rename to StructureHelper/Windows/ViewModels/PrimitiveProperties/PrimitivePropertiesViewModel.cs
diff --git a/Windows/ViewModels/PrimitiveProperties/SelectPrimitivesViewModel.cs b/StructureHelper/Windows/ViewModels/PrimitiveProperties/SelectPrimitivesViewModel.cs
similarity index 100%
rename from Windows/ViewModels/PrimitiveProperties/SelectPrimitivesViewModel.cs
rename to StructureHelper/Windows/ViewModels/PrimitiveProperties/SelectPrimitivesViewModel.cs
diff --git a/Windows/ViewModels/PrimitiveTemplates/RCs/RectangleBeamViewModel.cs b/StructureHelper/Windows/ViewModels/PrimitiveTemplates/RCs/RectangleBeamViewModel.cs
similarity index 100%
rename from Windows/ViewModels/PrimitiveTemplates/RCs/RectangleBeamViewModel.cs
rename to StructureHelper/Windows/ViewModels/PrimitiveTemplates/RCs/RectangleBeamViewModel.cs
diff --git a/Windows/ViewModels/Primitives/RectangleControlViewModel.cs b/StructureHelper/Windows/ViewModels/Primitives/RectangleControlViewModel.cs
similarity index 100%
rename from Windows/ViewModels/Primitives/RectangleControlViewModel.cs
rename to StructureHelper/Windows/ViewModels/Primitives/RectangleControlViewModel.cs
diff --git a/Windows/ViewModels/SelectItemsViewModel.cs b/StructureHelper/Windows/ViewModels/SelectItemsViewModel.cs
similarity index 100%
rename from Windows/ViewModels/SelectItemsViewModel.cs
rename to StructureHelper/Windows/ViewModels/SelectItemsViewModel.cs
diff --git a/Windows/ViewModels/SourceToTargetViewModel.cs b/StructureHelper/Windows/ViewModels/SourceToTargetViewModel.cs
similarity index 100%
rename from Windows/ViewModels/SourceToTargetViewModel.cs
rename to StructureHelper/Windows/ViewModels/SourceToTargetViewModel.cs
diff --git a/packages.config b/StructureHelper/packages.config
similarity index 100%
rename from packages.config
rename to StructureHelper/packages.config
diff --git a/StructureHelperCommon/Infrastructures/Enums/CodeTypes.cs b/StructureHelperCommon/Infrastructures/Enums/CodeTypes.cs
index 66213b9..8150f2b 100644
--- a/StructureHelperCommon/Infrastructures/Enums/CodeTypes.cs
+++ b/StructureHelperCommon/Infrastructures/Enums/CodeTypes.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace StructureHelperCommon.Infrastructures.Enums
+namespace StructureHelperCommon.Infrastructures.Enums
{
public enum CodeTypes
{
diff --git a/StructureHelperCommon/Infrastructures/Enums/Directions.cs b/StructureHelperCommon/Infrastructures/Enums/Directions.cs
index f210380..6b4dc0f 100644
--- a/StructureHelperCommon/Infrastructures/Enums/Directions.cs
+++ b/StructureHelperCommon/Infrastructures/Enums/Directions.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Infrastructures.Enums
+namespace StructureHelperCommon.Infrastructures.Enums
{
public enum Directions
{
diff --git a/StructureHelperCommon/Infrastructures/Enums/StressStates.cs b/StructureHelperCommon/Infrastructures/Enums/StressStates.cs
index e02d0a6..5c44653 100644
--- a/StructureHelperCommon/Infrastructures/Enums/StressStates.cs
+++ b/StructureHelperCommon/Infrastructures/Enums/StressStates.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Infrastructures.Enums
+namespace StructureHelperCommon.Infrastructures.Enums
{
public enum StressStates
{
diff --git a/StructureHelperCommon/Infrastructures/Enums/UnitTypes.cs b/StructureHelperCommon/Infrastructures/Enums/UnitTypes.cs
index 21f9421..8df3530 100644
--- a/StructureHelperCommon/Infrastructures/Enums/UnitTypes.cs
+++ b/StructureHelperCommon/Infrastructures/Enums/UnitTypes.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Infrastructures.Enums
+namespace StructureHelperCommon.Infrastructures.Enums
{
public enum UnitTypes
{
diff --git a/StructureHelperCommon/Infrastructures/Exceptions/StructureHelperException.cs b/StructureHelperCommon/Infrastructures/Exceptions/StructureHelperException.cs
index 9c96b5e..ab76f9d 100644
--- a/StructureHelperCommon/Infrastructures/Exceptions/StructureHelperException.cs
+++ b/StructureHelperCommon/Infrastructures/Exceptions/StructureHelperException.cs
@@ -1,8 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Infrastructures.Exceptions
{
diff --git a/StructureHelperCommon/Infrastructures/Interfaces/IHasForceCombinations.cs b/StructureHelperCommon/Infrastructures/Interfaces/IHasForceCombinations.cs
index 6bf61fb..e73e49f 100644
--- a/StructureHelperCommon/Infrastructures/Interfaces/IHasForceCombinations.cs
+++ b/StructureHelperCommon/Infrastructures/Interfaces/IHasForceCombinations.cs
@@ -1,9 +1,5 @@
-using StructureHelperCommon.Models.Forces;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Collections.Generic;
+using StructureHelperCommon.Models.Forces;
namespace StructureHelperCommon.Infrastructures.Interfaces
{
diff --git a/StructureHelperCommon/Infrastructures/Interfaces/IHasParent.cs b/StructureHelperCommon/Infrastructures/Interfaces/IHasParent.cs
index 99f6895..e51b97f 100644
--- a/StructureHelperCommon/Infrastructures/Interfaces/IHasParent.cs
+++ b/StructureHelperCommon/Infrastructures/Interfaces/IHasParent.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Infrastructures.Interfaces
+namespace StructureHelperCommon.Infrastructures.Interfaces
{
public interface IHasParent
{
diff --git a/StructureHelperCommon/Infrastructures/Interfaces/ISaveable.cs b/StructureHelperCommon/Infrastructures/Interfaces/ISaveable.cs
index a1020e2..45d8519 100644
--- a/StructureHelperCommon/Infrastructures/Interfaces/ISaveable.cs
+++ b/StructureHelperCommon/Infrastructures/Interfaces/ISaveable.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Infrastructures.Interfaces
+namespace StructureHelperCommon.Infrastructures.Interfaces
{
public interface ISaveable
{
diff --git a/StructureHelperCommon/Infrastructures/Settings/ProgramSetting.cs b/StructureHelperCommon/Infrastructures/Settings/ProgramSetting.cs
index 21e48a1..03254af 100644
--- a/StructureHelperCommon/Infrastructures/Settings/ProgramSetting.cs
+++ b/StructureHelperCommon/Infrastructures/Settings/ProgramSetting.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Infrastructures.Settings
{
diff --git a/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs b/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs
index 227527f..1939600 100644
--- a/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs
+++ b/StructureHelperCommon/Infrastructures/Strings/ErrorString.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Infrastructures.Strings
+namespace StructureHelperCommon.Infrastructures.Strings
{
public static class ErrorStrings
{
diff --git a/StructureHelperCommon/Models/Calculators/Accuracy.cs b/StructureHelperCommon/Models/Calculators/Accuracy.cs
index 67ca68e..4b7fadb 100644
--- a/StructureHelperCommon/Models/Calculators/Accuracy.cs
+++ b/StructureHelperCommon/Models/Calculators/Accuracy.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Models.Calculators
+namespace StructureHelperCommon.Models.Calculators
{
public class Accuracy : IAccuracy
{
diff --git a/StructureHelperCommon/Models/Calculators/IAccuracy.cs b/StructureHelperCommon/Models/Calculators/IAccuracy.cs
index 4ca1bd4..6526300 100644
--- a/StructureHelperCommon/Models/Calculators/IAccuracy.cs
+++ b/StructureHelperCommon/Models/Calculators/IAccuracy.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Models.Calculators
+namespace StructureHelperCommon.Models.Calculators
{
public interface IAccuracy
{
diff --git a/StructureHelperCommon/Models/Calculators/IHelperCalculator.cs b/StructureHelperCommon/Models/Calculators/IHelperCalculator.cs
index cddd4d2..2bb73c6 100644
--- a/StructureHelperCommon/Models/Calculators/IHelperCalculator.cs
+++ b/StructureHelperCommon/Models/Calculators/IHelperCalculator.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Models.Calculators
+namespace StructureHelperCommon.Models.Calculators
{
public interface IHelperCalculator
where TInputData : class
diff --git a/StructureHelperCommon/Models/Forces/DesignForceTuple.cs b/StructureHelperCommon/Models/Forces/DesignForceTuple.cs
index 3425cb0..804701e 100644
--- a/StructureHelperCommon/Models/Forces/DesignForceTuple.cs
+++ b/StructureHelperCommon/Models/Forces/DesignForceTuple.cs
@@ -1,10 +1,4 @@
using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Runtime.Remoting.Messaging;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Forces
{
diff --git a/StructureHelperCommon/Models/Forces/Factories/DesignForceFactory.cs b/StructureHelperCommon/Models/Forces/Factories/DesignForceFactory.cs
index d113c67..5292cbb 100644
--- a/StructureHelperCommon/Models/Forces/Factories/DesignForceFactory.cs
+++ b/StructureHelperCommon/Models/Forces/Factories/DesignForceFactory.cs
@@ -1,11 +1,6 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Strings;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Forces
{
diff --git a/StructureHelperCommon/Models/Forces/Factories/ForceCombinationListFactory.cs b/StructureHelperCommon/Models/Forces/Factories/ForceCombinationListFactory.cs
index b98a933..003a9c5 100644
--- a/StructureHelperCommon/Models/Forces/Factories/ForceCombinationListFactory.cs
+++ b/StructureHelperCommon/Models/Forces/Factories/ForceCombinationListFactory.cs
@@ -1,11 +1,7 @@
-using StructureHelperCommon.Infrastructures.Enums;
+using System.Collections.Generic;
+using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Strings;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Forces
{
diff --git a/StructureHelperCommon/Models/Forces/ForceCombinationList.cs b/StructureHelperCommon/Models/Forces/ForceCombinationList.cs
index c6cd760..e09765f 100644
--- a/StructureHelperCommon/Models/Forces/ForceCombinationList.cs
+++ b/StructureHelperCommon/Models/Forces/ForceCombinationList.cs
@@ -1,10 +1,6 @@
-using StructureHelperCommon.Infrastructures.Enums;
+using System.Collections.Generic;
+using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Models.Shapes;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Forces
{
diff --git a/StructureHelperCommon/Models/Forces/ForceTuple.cs b/StructureHelperCommon/Models/Forces/ForceTuple.cs
index 78662b8..81ae422 100644
--- a/StructureHelperCommon/Models/Forces/ForceTuple.cs
+++ b/StructureHelperCommon/Models/Forces/ForceTuple.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Models.Forces
+namespace StructureHelperCommon.Models.Forces
{
///
public class ForceTuple : IForceTuple
diff --git a/StructureHelperCommon/Models/Forces/IDesignForceTuple.cs b/StructureHelperCommon/Models/Forces/IDesignForceTuple.cs
index e50b2c6..ee8aeeb 100644
--- a/StructureHelperCommon/Models/Forces/IDesignForceTuple.cs
+++ b/StructureHelperCommon/Models/Forces/IDesignForceTuple.cs
@@ -1,9 +1,5 @@
-using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System;
+using StructureHelperCommon.Infrastructures.Enums;
namespace StructureHelperCommon.Models.Forces
{
diff --git a/StructureHelperCommon/Models/Forces/IForceCombinationList.cs b/StructureHelperCommon/Models/Forces/IForceCombinationList.cs
index 8a89573..2bc9034 100644
--- a/StructureHelperCommon/Models/Forces/IForceCombinationList.cs
+++ b/StructureHelperCommon/Models/Forces/IForceCombinationList.cs
@@ -1,9 +1,6 @@
-using StructureHelperCommon.Models.Shapes;
-using System;
+using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using StructureHelperCommon.Models.Shapes;
namespace StructureHelperCommon.Models.Forces
{
diff --git a/StructureHelperCommon/Models/Forces/IForceRepository.cs b/StructureHelperCommon/Models/Forces/IForceRepository.cs
index b8c656f..3b61cea 100644
--- a/StructureHelperCommon/Models/Forces/IForceRepository.cs
+++ b/StructureHelperCommon/Models/Forces/IForceRepository.cs
@@ -1,11 +1,4 @@
-using StructureHelperCommon.Infrastructures.Interfaces;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Models.Forces
+namespace StructureHelperCommon.Models.Forces
{
internal interface IForceRepository
{
diff --git a/StructureHelperCommon/Models/Forces/IForceTuple.cs b/StructureHelperCommon/Models/Forces/IForceTuple.cs
index 96c487f..1713b32 100644
--- a/StructureHelperCommon/Models/Forces/IForceTuple.cs
+++ b/StructureHelperCommon/Models/Forces/IForceTuple.cs
@@ -1,8 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Forces
{
diff --git a/StructureHelperCommon/Models/Forces/Strains/IStrainTuple.cs b/StructureHelperCommon/Models/Forces/Strains/IStrainTuple.cs
index 8fc0bdf..ba881dd 100644
--- a/StructureHelperCommon/Models/Forces/Strains/IStrainTuple.cs
+++ b/StructureHelperCommon/Models/Forces/Strains/IStrainTuple.cs
@@ -1,8 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Forces
{
diff --git a/StructureHelperCommon/Models/Forces/Strains/StrainTuple.cs b/StructureHelperCommon/Models/Forces/Strains/StrainTuple.cs
index e18c6d7..6d6900a 100644
--- a/StructureHelperCommon/Models/Forces/Strains/StrainTuple.cs
+++ b/StructureHelperCommon/Models/Forces/Strains/StrainTuple.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Services.Forces;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Forces
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/ConcreteMaterialEntity.cs b/StructureHelperCommon/Models/Materials/Libraries/ConcreteMaterialEntity.cs
index 1532fd6..a1fa134 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/ConcreteMaterialEntity.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/ConcreteMaterialEntity.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/Factories/ConcreteFactorsFactory.cs b/StructureHelperCommon/Models/Materials/Libraries/Factories/ConcreteFactorsFactory.cs
index b4c2f35..3d94713 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/Factories/ConcreteFactorsFactory.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/Factories/ConcreteFactorsFactory.cs
@@ -1,11 +1,6 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Strings;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/Factories/LibMaterialFactory.cs b/StructureHelperCommon/Models/Materials/Libraries/Factories/LibMaterialFactory.cs
index cbe4aa3..ce74263 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/Factories/LibMaterialFactory.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/Factories/LibMaterialFactory.cs
@@ -1,11 +1,5 @@
-using StructureHelperCommon.Infrastructures.Enums;
-using StructureHelperCommon.Infrastructures.Exceptions;
-using StructureHelperCommon.Infrastructures.Strings;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Collections.Generic;
+using StructureHelperCommon.Infrastructures.Enums;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/IConcreteMaterialEntity.cs b/StructureHelperCommon/Models/Materials/Libraries/IConcreteMaterialEntity.cs
index cd21857..5ce355e 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/IConcreteMaterialEntity.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/IConcreteMaterialEntity.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Models.Materials.Libraries
+namespace StructureHelperCommon.Models.Materials.Libraries
{
public interface IConcreteMaterialEntity : ILibMaterialEntity
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/ILibMaterialEntity.cs b/StructureHelperCommon/Models/Materials/Libraries/ILibMaterialEntity.cs
index fcb35fa..2da6248 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/ILibMaterialEntity.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/ILibMaterialEntity.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/IMaterialPartialFactor.cs b/StructureHelperCommon/Models/Materials/Libraries/IMaterialPartialFactor.cs
index 51aeffa..b52ebbc 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/IMaterialPartialFactor.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/IMaterialPartialFactor.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/IMaterialSafetyFactor.cs b/StructureHelperCommon/Models/Materials/Libraries/IMaterialSafetyFactor.cs
index 4542fa2..40fecef 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/IMaterialSafetyFactor.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/IMaterialSafetyFactor.cs
@@ -1,9 +1,6 @@
-using StructureHelperCommon.Infrastructures.Enums;
-using System;
+using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using StructureHelperCommon.Infrastructures.Enums;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/IPartialFactor.cs b/StructureHelperCommon/Models/Materials/Libraries/IPartialFactor.cs
index 6aaf89c..1f4696f 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/IPartialFactor.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/IPartialFactor.cs
@@ -1,8 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/IReinforcementMaterialEntity.cs b/StructureHelperCommon/Models/Materials/Libraries/IReinforcementMaterialEntity.cs
index 184aba0..ae4be11 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/IReinforcementMaterialEntity.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/IReinforcementMaterialEntity.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Models.Materials.Libraries
+namespace StructureHelperCommon.Models.Materials.Libraries
{
public interface IReinforcementMaterialEntity : ILibMaterialEntity
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/LibMaterialPepository.cs b/StructureHelperCommon/Models/Materials/Libraries/LibMaterialPepository.cs
index 4ba1a3c..36b3551 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/LibMaterialPepository.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/LibMaterialPepository.cs
@@ -1,9 +1,6 @@
-using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using StructureHelperCommon.Infrastructures.Enums;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/MaterialPartialFactor.cs b/StructureHelperCommon/Models/Materials/Libraries/MaterialPartialFactor.cs
index 8e90e1f..a73a227 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/MaterialPartialFactor.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/MaterialPartialFactor.cs
@@ -1,11 +1,6 @@
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Strings;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/MaterialSafetyFactor.cs b/StructureHelperCommon/Models/Materials/Libraries/MaterialSafetyFactor.cs
index c49d904..e8f6a71 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/MaterialSafetyFactor.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/MaterialSafetyFactor.cs
@@ -1,9 +1,6 @@
-using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using StructureHelperCommon.Infrastructures.Enums;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Materials/Libraries/ReinforcementMaterialEntity.cs b/StructureHelperCommon/Models/Materials/Libraries/ReinforcementMaterialEntity.cs
index 3774e4f..07d8cd7 100644
--- a/StructureHelperCommon/Models/Materials/Libraries/ReinforcementMaterialEntity.cs
+++ b/StructureHelperCommon/Models/Materials/Libraries/ReinforcementMaterialEntity.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Materials.Libraries
{
diff --git a/StructureHelperCommon/Models/Sections/CompressedMember.cs b/StructureHelperCommon/Models/Sections/CompressedMember.cs
index 7c2722f..9aaf418 100644
--- a/StructureHelperCommon/Models/Sections/CompressedMember.cs
+++ b/StructureHelperCommon/Models/Sections/CompressedMember.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Services.Sections;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Sections
{
diff --git a/StructureHelperCommon/Models/Sections/ICompressedMember.cs b/StructureHelperCommon/Models/Sections/ICompressedMember.cs
index e3b3cb1..4e399df 100644
--- a/StructureHelperCommon/Models/Sections/ICompressedMember.cs
+++ b/StructureHelperCommon/Models/Sections/ICompressedMember.cs
@@ -1,8 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Sections
{
diff --git a/StructureHelperCommon/Models/Shapes/ILineShape.cs b/StructureHelperCommon/Models/Shapes/ILineShape.cs
index ea29670..ddd7051 100644
--- a/StructureHelperCommon/Models/Shapes/ILineShape.cs
+++ b/StructureHelperCommon/Models/Shapes/ILineShape.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Models.Shapes
+namespace StructureHelperCommon.Models.Shapes
{
public interface ILineShape : IShape
{
diff --git a/StructureHelperCommon/Models/Shapes/LineShape.cs b/StructureHelperCommon/Models/Shapes/LineShape.cs
index a47471d..5034574 100644
--- a/StructureHelperCommon/Models/Shapes/LineShape.cs
+++ b/StructureHelperCommon/Models/Shapes/LineShape.cs
@@ -1,10 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StructureHelperCommon.Models.Shapes
+namespace StructureHelperCommon.Models.Shapes
{
///
public class LineShape : ILineShape
diff --git a/StructureHelperCommon/Properties/AssemblyInfo.cs b/StructureHelperCommon/Properties/AssemblyInfo.cs
index 27e2e0c..7cee17e 100644
--- a/StructureHelperCommon/Properties/AssemblyInfo.cs
+++ b/StructureHelperCommon/Properties/AssemblyInfo.cs
@@ -33,4 +33,4 @@ using System.Runtime.InteropServices;
// используя "*", как показано ниже:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
\ No newline at end of file
diff --git a/StructureHelperCommon/Services/Calculations/AccuracyService.cs b/StructureHelperCommon/Services/Calculations/AccuracyService.cs
index c56bd0c..521fbb4 100644
--- a/StructureHelperCommon/Services/Calculations/AccuracyService.cs
+++ b/StructureHelperCommon/Services/Calculations/AccuracyService.cs
@@ -1,10 +1,4 @@
-using LoaderCalculator;
-using StructureHelperCommon.Models.Calculators;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using StructureHelperCommon.Models.Calculators;
namespace StructureHelperCommon.Services.Calculations
{
diff --git a/StructureHelperCommon/Services/ColorServices/ColorProcessor.cs b/StructureHelperCommon/Services/ColorServices/ColorProcessor.cs
index 67f7980..b21442e 100644
--- a/StructureHelperCommon/Services/ColorServices/ColorProcessor.cs
+++ b/StructureHelperCommon/Services/ColorServices/ColorProcessor.cs
@@ -1,12 +1,7 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
using System.Threading;
-using System.Threading.Tasks;
using System.Windows.Forms;
-using System.Windows.Media;
-using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
+using Color = System.Windows.Media.Color;
namespace StructureHelperCommon.Services.ColorServices
{
diff --git a/StructureHelperCommon/Services/Forces/ForceTupleService.cs b/StructureHelperCommon/Services/Forces/ForceTupleService.cs
index ccf0951..31f0fc8 100644
--- a/StructureHelperCommon/Services/Forces/ForceTupleService.cs
+++ b/StructureHelperCommon/Services/Forces/ForceTupleService.cs
@@ -1,12 +1,8 @@
-using StructureHelperCommon.Infrastructures.Exceptions;
+using System.Collections.Generic;
+using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Strings;
using StructureHelperCommon.Models.Forces;
using StructureHelperCommon.Models.Shapes;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Services.Forces
{
diff --git a/StructureHelperCommon/Services/Forces/StrainTupleService.cs b/StructureHelperCommon/Services/Forces/StrainTupleService.cs
index 6a488bb..ab3c965 100644
--- a/StructureHelperCommon/Services/Forces/StrainTupleService.cs
+++ b/StructureHelperCommon/Services/Forces/StrainTupleService.cs
@@ -1,10 +1,5 @@
using LoaderCalculator.Data.Matrix;
using StructureHelperCommon.Models.Forces;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Services.Forces
{
diff --git a/StructureHelperCommon/Services/Sections/CompressedMemberServices.cs b/StructureHelperCommon/Services/Sections/CompressedMemberServices.cs
index e38a53e..0999535 100644
--- a/StructureHelperCommon/Services/Sections/CompressedMemberServices.cs
+++ b/StructureHelperCommon/Services/Sections/CompressedMemberServices.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Models.Sections;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Services.Sections
{
diff --git a/StructureHelperCommon/Services/ShapeServices/ShapeService.cs b/StructureHelperCommon/Services/ShapeServices/ShapeService.cs
index 7c75825..e198a12 100644
--- a/StructureHelperCommon/Services/ShapeServices/ShapeService.cs
+++ b/StructureHelperCommon/Services/ShapeServices/ShapeService.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Models.Shapes;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Services.ShapeServices
{
diff --git a/StructureHelperCommon/Services/Units/IUnit.cs b/StructureHelperCommon/Services/Units/IUnit.cs
index 7a81584..8074a71 100644
--- a/StructureHelperCommon/Services/Units/IUnit.cs
+++ b/StructureHelperCommon/Services/Units/IUnit.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Services.Units
{
diff --git a/StructureHelperCommon/Services/Units/Unit.cs b/StructureHelperCommon/Services/Units/Unit.cs
index d3e2cf2..4f254dd 100644
--- a/StructureHelperCommon/Services/Units/Unit.cs
+++ b/StructureHelperCommon/Services/Units/Unit.cs
@@ -1,9 +1,4 @@
using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelperCommon.Services.Units
{
diff --git a/StructureHelperCommon/Services/Units/UnitsFactory.cs b/StructureHelperCommon/Services/Units/UnitsFactory.cs
index 8620ad4..53fd969 100644
--- a/StructureHelperCommon/Services/Units/UnitsFactory.cs
+++ b/StructureHelperCommon/Services/Units/UnitsFactory.cs
@@ -1,9 +1,5 @@
-using StructureHelperCommon.Infrastructures.Enums;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Collections.Generic;
+using StructureHelperCommon.Infrastructures.Enums;
namespace StructureHelperCommon.Services.Units
{
diff --git a/StructureHelperCommon/StructureHelperCommon.csproj b/StructureHelperCommon/StructureHelperCommon.csproj
index d5e146a..99d72f0 100644
--- a/StructureHelperCommon/StructureHelperCommon.csproj
+++ b/StructureHelperCommon/StructureHelperCommon.csproj
@@ -1,118 +1,18 @@
-
-
-
+
+
- Debug
- AnyCPU
- {5DFEC3FD-9677-47BB-9E88-EB71828B5913}
- Library
- Properties
- StructureHelperCommon
- StructureHelperCommon
- v4.7.2
- 512
- true
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
+ net6.0-windows
+ disable
+ enable
+ true
+ true
+ false
+
- ..\Libraries\LoaderCalculator.dll
+ ..\StructureHelper\Libraries\LoaderCalculator.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
diff --git a/StructureHelperLogics/StructureHelperLogics.csproj b/StructureHelperLogics/StructureHelperLogics.csproj
index ef0f54a..c221750 100644
--- a/StructureHelperLogics/StructureHelperLogics.csproj
+++ b/StructureHelperLogics/StructureHelperLogics.csproj
@@ -1,8 +1,9 @@
- net472
- Library
+ net6.0-windows
+ enable
+ enable
@@ -11,16 +12,8 @@
- ..\Libraries\LoaderCalculator.dll
+ ..\StructureHelper\Libraries\LoaderCalculator.dll
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
diff --git a/StructureHelperTests/StructureHelperTests.csproj b/StructureHelperTests/StructureHelperTests.csproj
index 7b76be3..371defd 100644
--- a/StructureHelperTests/StructureHelperTests.csproj
+++ b/StructureHelperTests/StructureHelperTests.csproj
@@ -87,24 +87,6 @@
-
-
- {87064b50-3b7c-4a91-af4a-941c6f95d997}
- FieldVisualizer
-
-
- {BAD27E27-4444-4300-ADF8-E21042C0781D}
- StructureHelper
-
-
- {5DFEC3FD-9677-47BB-9E88-EB71828B5913}
- StructureHelperCommon
-
-
- {330bef5b-15be-4d2c-a750-b1ae50fb2be3}
- StructureHelperLogics
-
-
diff --git a/StructureHelper_TemporaryKey.pfx b/StructureHelper_TemporaryKey.pfx
deleted file mode 100644
index b98150c..0000000
Binary files a/StructureHelper_TemporaryKey.pfx and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/Autofac.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/Autofac.dll.deploy
deleted file mode 100644
index e714c37..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/Autofac.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/FieldVisualizer.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/FieldVisualizer.dll.deploy
deleted file mode 100644
index 95dfa8d..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/FieldVisualizer.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/LoaderCalculator.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/LoaderCalculator.dll.deploy
deleted file mode 100644
index 75e5c75..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/LoaderCalculator.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/Microsoft.Bcl.AsyncInterfaces.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/Microsoft.Bcl.AsyncInterfaces.dll.deploy
deleted file mode 100644
index 476f1b1..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/Microsoft.Bcl.AsyncInterfaces.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/Microsoft.Expression.Interactions.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/Microsoft.Expression.Interactions.dll.deploy
deleted file mode 100644
index 979c965..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/Microsoft.Expression.Interactions.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/Newtonsoft.Json.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/Newtonsoft.Json.dll.deploy
deleted file mode 100644
index 7af125a..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/Newtonsoft.Json.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.application b/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.application
deleted file mode 100644
index 4b6ad9f..0000000
--- a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.application
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SHyyPpiu/G7izGrKPX4ZMq35RGjief8+4X75T8JO5f4=
-
-
-
-E1adO37wivdqDVYQ3FJdqUBxIoyoYoFdNAELzYPbBuU=jstl5R6h+8dI94bEy4n2y/7PgG5Rom+bvC3fLkm/yCktU5o91C/ItwnXyN4hXfhdppkoE62mkP0/OW1zEXb4FwpavdtdHWwc+43UJTMeTvCkNdCg7xF9OLjJJAz+ULupVTydzxWTYPStGTVnZz4LtPJe/vFYX3n/AxMC7NFMiJg=634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=AQABCN=EAHOME\UserXMjKJ4t/nikM8DHg6HJIJ3BPIByWkckFtu6nTCUUoN0=VWaDWp9QUuoggLKiadG/ndRKmowvoeC007/3DeuPPAVpZI4UpXa+U5bVIlA8Cv3ftfLG+IAGgpMUa7nR0inH73ifELEvnd+484B5g66ExCNaEYfSVogRUIQmrBTYyCfCQDokGIDdcIUHvonZ2wX1zSD9w/moG5REV5RXVr7k7T8=634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=AQABMIIBxTCCAS6gAwIBAgIQdW4a4i1B6ZpEyHZPHlrayTANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDHhYARQBBAEgATwBNAEUAXABVAHMAZQByMB4XDTIyMTAyMjE1MDY0M1oXDTIzMTAyMjIxMDY0M1owITEfMB0GA1UEAx4WAEUAQQBIAE8ATQBFAFwAVQBzAGUAcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKUCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCmSBRoEJkrYAzHutpnML6GlC5QoBTOBhEtsZk2LeCDob8oDAtVCmI9MwthBMQnEHdGsiCcsnj4D/Orjbdw2ZTqHcNQSvX7aMqvyQQOGguQA3vi49D08p/TL+wKrpWHmOBdpIxj/x5GtKsqQSe3CUAhvkaHPuq+cn+iRyBAHkoTrA==
\ No newline at end of file
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.exe.config.deploy b/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.exe.config.deploy
deleted file mode 100644
index d5dbf25..0000000
--- a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.exe.config.deploy
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.exe.deploy b/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.exe.deploy
deleted file mode 100644
index 84aa147..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.exe.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.exe.manifest b/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.exe.manifest
deleted file mode 100644
index 1d04588..0000000
--- a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelper.exe.manifest
+++ /dev/null
@@ -1,245 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- R6ACRqrKX5Pm39qTeRyqQfJyN4HN7to8/JL96pswMu0=
-
-
-
-
-
-
-
-
-
-
-
- UlD3DiTPy4phiibEHSCCRHF9VpOrvcOT+PthozJQbOM=
-
-
-
-
-
-
-
-
-
-
-
- PS8gJ9hXTUKJj+t7ARGVNofbd6bG7vOlyFm9mY8QXP4=
-
-
-
-
-
-
-
-
-
-
-
- KVryFC2SFPP9hOr+R3jcoRm+fgIp8UtrqNUmnC8eLng=
-
-
-
-
-
-
-
-
-
-
-
- 87FN770FSTuFcwFrCLhuW11TtIawRX/XX2e/i/8Evjg=
-
-
-
-
-
-
-
-
-
-
-
- tiSUnfiw46YVP9+3MKfG9JkLZZLuDZIuF4hDPSdmEPM=
-
-
-
-
-
-
-
-
-
-
-
- 0vbv6pftc2FgDvLoEYF4NLRhEHyorHVGwM7EaMz3ncQ=
-
-
-
-
-
-
-
-
-
-
-
- 2XjfxDPsF5OqDx/eSoF05PNVKULLhmzMxZikCy8r4vg=
-
-
-
-
-
-
-
-
-
-
-
- woG+HEcR/ptJ4ZmmmZz8ScaJL8CfdM0rheZEiESS2AM=
-
-
-
-
-
-
-
-
-
-
-
- rMzPvkXZ8I/+7ZkW43sz6YxlvgEs//bn+ntnIQzh/vs=
-
-
-
-
-
-
-
-
-
-
-
- geZkiABC5FFJWhviJiSrSrXooGgD7tpb3afGnfJDmBU=
-
-
-
-
-
-
-
-
-
-
-
- vz+4RmT0CX8aipvHGlHc+M8akF1AgKTSkNoXMIZuhW8=
-
-
-
-
-
-
-
-
-
-
-
- HT74aYKB589zcdFVSv71hys5+Wwm2nciEKM9oEG6EYM=
-
-
-
-
-
-
-
-
-
-
-
- N3aEiOjvRXKbx9miZ3YzxkUAQpdbuWUW4YbabLnNDc8=
-
-
-
-
-
-
-
-
-
-
-
- T4H/0NxyBNt1r8NepCkXabB8RAWS8oiUJg7qdmJqI8Y=
-
-
-
-
-
-
-
-
-
-
-
- SqzoyKMwroQpzYzBtoBAdtOp/9YzRw+R/Ta90lu1eHY=
-
-
-
-
-
-
-
-
-
- XJ4UTVCHY1fDfJcmuGAB8NgEOj0ea/C98clia7y2xfM=
-
-
-OB2DVefJbT397h8VuZEn1Dj805PagjlGkjvQ+eg2rZ4=blDp7n3tL7B1tDTyhS2pXE7hbjOoSslxxHaYDHdaoZInj6XCPN7cKeMbg4HUGCv11OElENrxDwGjmOJsJpVVZwneCtqvVBLm1kz/Qd/NmLdgSWD0RbUFjz0P1/5CrubPVt1vqv2qlwM+qomMvhkMsXHQUhx+wT2E6sGKM1zfymI=634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=AQABCN=EAHOME\UseruL0dDdGJ5ceym4EDYSov7My9JtKZZg+sFgYtfJPhsbQ=AK6PzCIEn5wVIj5tMRbAFvkEmilmeKKyeQFXYwtcApYq0BH75EeguTu+Od7oKaJPvgpdlIRK6tvtg8VS4TtiYj8Q/g9v+H9e0OZrtk/p790F53Z+HDFVEyf+MmAmlOX/SxA53HZ5TeUwdZJO/qxDzEASwZSESwXcHP76dTiEvRY=634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=AQABMIIBxTCCAS6gAwIBAgIQdW4a4i1B6ZpEyHZPHlrayTANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDHhYARQBBAEgATwBNAEUAXABVAHMAZQByMB4XDTIyMTAyMjE1MDY0M1oXDTIzMTAyMjIxMDY0M1owITEfMB0GA1UEAx4WAEUAQQBIAE8ATQBFAFwAVQBzAGUAcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKUCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCmSBRoEJkrYAzHutpnML6GlC5QoBTOBhEtsZk2LeCDob8oDAtVCmI9MwthBMQnEHdGsiCcsnj4D/Orjbdw2ZTqHcNQSvX7aMqvyQQOGguQA3vi49D08p/TL+wKrpWHmOBdpIxj/x5GtKsqQSe3CUAhvkaHPuq+cn+iRyBAHkoTrA==
\ No newline at end of file
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelperCommon.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/StructureHelperCommon.dll.deploy
deleted file mode 100644
index c4c7059..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelperCommon.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelperLogics.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/StructureHelperLogics.dll.deploy
deleted file mode 100644
index 50d3e7b..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/StructureHelperLogics.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/System.Buffers.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/System.Buffers.dll.deploy
deleted file mode 100644
index f2d83c5..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/System.Buffers.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/System.Diagnostics.DiagnosticSource.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/System.Diagnostics.DiagnosticSource.dll.deploy
deleted file mode 100644
index 0774d46..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/System.Diagnostics.DiagnosticSource.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/System.Memory.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/System.Memory.dll.deploy
deleted file mode 100644
index 4617199..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/System.Memory.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/System.Numerics.Vectors.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/System.Numerics.Vectors.dll.deploy
deleted file mode 100644
index 0865972..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/System.Numerics.Vectors.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/System.Runtime.CompilerServices.Unsafe.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/System.Runtime.CompilerServices.Unsafe.dll.deploy
deleted file mode 100644
index c5ba4e4..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/System.Runtime.CompilerServices.Unsafe.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/System.Threading.Tasks.Extensions.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/System.Threading.Tasks.Extensions.dll.deploy
deleted file mode 100644
index eeec928..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/System.Threading.Tasks.Extensions.dll.deploy and /dev/null differ
diff --git a/publish/Application Files/StructureHelper_1_0_0_0/System.Windows.Interactivity.dll.deploy b/publish/Application Files/StructureHelper_1_0_0_0/System.Windows.Interactivity.dll.deploy
deleted file mode 100644
index 0419e95..0000000
Binary files a/publish/Application Files/StructureHelper_1_0_0_0/System.Windows.Interactivity.dll.deploy and /dev/null differ
diff --git a/publish/StructureHelper.application b/publish/StructureHelper.application
deleted file mode 100644
index 4b6ad9f..0000000
--- a/publish/StructureHelper.application
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SHyyPpiu/G7izGrKPX4ZMq35RGjief8+4X75T8JO5f4=
-
-
-
-E1adO37wivdqDVYQ3FJdqUBxIoyoYoFdNAELzYPbBuU=jstl5R6h+8dI94bEy4n2y/7PgG5Rom+bvC3fLkm/yCktU5o91C/ItwnXyN4hXfhdppkoE62mkP0/OW1zEXb4FwpavdtdHWwc+43UJTMeTvCkNdCg7xF9OLjJJAz+ULupVTydzxWTYPStGTVnZz4LtPJe/vFYX3n/AxMC7NFMiJg=634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=AQABCN=EAHOME\UserXMjKJ4t/nikM8DHg6HJIJ3BPIByWkckFtu6nTCUUoN0=VWaDWp9QUuoggLKiadG/ndRKmowvoeC007/3DeuPPAVpZI4UpXa+U5bVIlA8Cv3ftfLG+IAGgpMUa7nR0inH73ifELEvnd+484B5g66ExCNaEYfSVogRUIQmrBTYyCfCQDokGIDdcIUHvonZ2wX1zSD9w/moG5REV5RXVr7k7T8=634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=AQABMIIBxTCCAS6gAwIBAgIQdW4a4i1B6ZpEyHZPHlrayTANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDHhYARQBBAEgATwBNAEUAXABVAHMAZQByMB4XDTIyMTAyMjE1MDY0M1oXDTIzMTAyMjIxMDY0M1owITEfMB0GA1UEAx4WAEUAQQBIAE8ATQBFAFwAVQBzAGUAcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKUCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCmSBRoEJkrYAzHutpnML6GlC5QoBTOBhEtsZk2LeCDob8oDAtVCmI9MwthBMQnEHdGsiCcsnj4D/Orjbdw2ZTqHcNQSvX7aMqvyQQOGguQA3vi49D08p/TL+wKrpWHmOBdpIxj/x5GtKsqQSe3CUAhvkaHPuq+cn+iRyBAHkoTrA==
\ No newline at end of file
diff --git a/publish/setup.exe b/publish/setup.exe
deleted file mode 100644
index e6603ed..0000000
Binary files a/publish/setup.exe and /dev/null differ