diff --git a/StructureHelper/Infrastructure/Enums/MaterialType.cs b/StructureHelper/Infrastructure/Enums/MaterialType.cs
index 19b6550..e799925 100644
--- a/StructureHelper/Infrastructure/Enums/MaterialType.cs
+++ b/StructureHelper/Infrastructure/Enums/MaterialType.cs
@@ -12,6 +12,7 @@ namespace StructureHelper.Infrastructure.Enums
Reinforcement,
Elastic,
CarbonFiber,
- GlassFiber
+ GlassFiber,
+ Function,
}
}
diff --git a/StructureHelper/Windows/MainWindow/CrossSectionView.xaml b/StructureHelper/Windows/MainWindow/CrossSectionView.xaml
index 8f9e094..949fabb 100644
--- a/StructureHelper/Windows/MainWindow/CrossSectionView.xaml
+++ b/StructureHelper/Windows/MainWindow/CrossSectionView.xaml
@@ -160,6 +160,9 @@
+
diff --git a/StructureHelper/Windows/ViewModels/Materials/MaterialsViewModel.cs b/StructureHelper/Windows/ViewModels/Materials/MaterialsViewModel.cs
index 1e4bb33..56a34f4 100644
--- a/StructureHelper/Windows/ViewModels/Materials/MaterialsViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/Materials/MaterialsViewModel.cs
@@ -41,6 +41,7 @@ namespace StructureHelper.Windows.ViewModels.Materials
else if (parameterType == MaterialType.Elastic) { AddElastic(); }
else if (parameterType == MaterialType.CarbonFiber) { AddCarbonFiber(); }
else if (parameterType == MaterialType.GlassFiber) { AddGlassFiber(); }
+ else if (parameterType == MaterialType.Function) { AddFunctionMaterial(); }
else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + $". Expected: {typeof(MaterialType)}, Actual type: {nameof(parameterType)}");
GlobalRepository.Materials.Create(NewItem);
base.AddMethod(parameter);
@@ -118,6 +119,12 @@ namespace StructureHelper.Windows.ViewModels.Materials
material.Name = "New Concrete";
NewItem = material;
}
+ private void AddFunctionMaterial()
+ {
+ var material = HeadMaterialFactory.GetHeadMaterial(HeadmaterialType.Function);
+ material.Name = "New Function Material";
+ NewItem = material;
+ }
private void CheckParameters(object parameter)
{
if (parameter is null) { throw new StructureHelperException(ErrorStrings.ParameterIsNull); }
diff --git a/StructureHelperLogics/Models/Materials/Factories/HeadMaterialFactory.cs b/StructureHelperLogics/Models/Materials/Factories/HeadMaterialFactory.cs
index f64d469..78a289f 100644
--- a/StructureHelperLogics/Models/Materials/Factories/HeadMaterialFactory.cs
+++ b/StructureHelperLogics/Models/Materials/Factories/HeadMaterialFactory.cs
@@ -1,4 +1,5 @@
-using StructureHelper.Models.Materials;
+using NLog.MessageTemplates;
+using StructureHelper.Models.Materials;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Settings;
@@ -20,7 +21,8 @@ namespace StructureHelperLogics.Models.Materials
Reinforecement500,
Elastic200,
Carbon1400,
- Glass1200
+ Glass1200,
+ Function,
}
public static class HeadMaterialFactory
@@ -37,6 +39,7 @@ namespace StructureHelperLogics.Models.Materials
if (type == HeadmaterialType.Elastic200) { return GetElastic200(); }
if (type == HeadmaterialType.Carbon1400) { return GetCarbon1400(); }
if (type == HeadmaterialType.Glass1200) { return GetGlass1200(); }
+ if (type == HeadmaterialType.Function) { return GetFunction(); }
else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + nameof(type));
}
@@ -102,5 +105,11 @@ namespace StructureHelperLogics.Models.Materials
material.HelperMaterial = libMat;
return material;
}
+ private static IHeadMaterial GetFunction()
+ {
+ var material = new HeadMaterial();
+ material.HelperMaterial = new
+ return material;
+ }
}
}
diff --git a/StructureHelperLogics/Models/Materials/FunctionMaterial.cs b/StructureHelperLogics/Models/Materials/FunctionMaterial.cs
new file mode 100644
index 0000000..5270363
--- /dev/null
+++ b/StructureHelperLogics/Models/Materials/FunctionMaterial.cs
@@ -0,0 +1,49 @@
+using LoaderCalculator.Data.Materials;
+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;
+
+namespace StructureHelperLogics.Models.Materials
+{
+ public class FunctionMaterial
+ {
+ private IElasticMaterialLogic elasticMaterialLogic => new ElasticMaterialLogic();
+ public double Modulus { get; set; }
+ public double CompressiveStrength { get; set; }
+ public double TensileStrength { get; set; }
+ public List SafetyFactors { get; } = new();
+
+ public Guid Id { get; }
+
+ public FunctionMaterial(Guid id)
+ {
+ Id = id;
+ }
+ public FunctionMaterial() : this(Guid.NewGuid())
+ {
+
+ }
+ public IMaterial GetLoaderMaterial(LimitStates limitState, CalcTerms calcTerm)
+ {
+ var material = elasticMaterialLogic.GetLoaderMaterial(this, limitState, calcTerm);
+ return material;
+ }
+
+ public object Clone()
+ {
+ var newItem = new ElasticMaterial();
+ var updateStrategy = new ElasticUpdateStrategy();
+ updateStrategy.Update(newItem, this);
+ return newItem;
+ }
+
+ public IMaterial GetCrackedLoaderMaterial(LimitStates limitState, CalcTerms calcTerm)
+ {
+ return GetLoaderMaterial(limitState, calcTerm);
+ }
+ }
+}
diff --git a/StructureHelperLogics/Models/Materials/HeadMaterialRepository.cs b/StructureHelperLogics/Models/Materials/HeadMaterialRepository.cs
index 3afd932..e9c3885 100644
--- a/StructureHelperLogics/Models/Materials/HeadMaterialRepository.cs
+++ b/StructureHelperLogics/Models/Materials/HeadMaterialRepository.cs
@@ -10,20 +10,16 @@ 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/StructureHelperLogics/Models/Materials/IFunctionMaterial.cs b/StructureHelperLogics/Models/Materials/IFunctionMaterial.cs
new file mode 100644
index 0000000..cdd4287
--- /dev/null
+++ b/StructureHelperLogics/Models/Materials/IFunctionMaterial.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
+{
+ internal interface IFunctionMaterial : IHelperMaterial
+ {
+
+ }
+}
diff --git a/StructureHelperLogics/Models/Materials/MaterialDC.cd b/StructureHelperLogics/Models/Materials/MaterialDC.cd
new file mode 100644
index 0000000..34c9afd
--- /dev/null
+++ b/StructureHelperLogics/Models/Materials/MaterialDC.cd
@@ -0,0 +1,114 @@
+
+
+
+
+
+ BAACAgAQAQEBAAADEQAiBQAAAgQAAgAAAAAACAAAAhA=
+ Models\Materials\ConcreteLibMaterial.cs
+
+
+
+
+
+
+ AAACAAAQgAEBAAAAAQAAAAAQAAAAAAAAAAAAAAAAABA=
+ Models\Materials\ElasticMaterial.cs
+
+
+
+
+
+
+ AAAAAAAAAAAAEAAAAAIAQAAAAAAAAAAAAAAAAAAAAAA=
+ Models\Materials\HeadMaterialRepository.cs
+
+
+
+
+
+
+ AAACAIBQCAMBAQIAAAAABAQAAAAAAgAEAgAEAAAAAhA=
+ Models\Materials\LibMaterial.cs
+
+
+
+
+
+
+ AAACAIAUAAABAAAAEAAAAAQAgAAAAACAAAAAgAAAABA=
+ Models\Materials\HeadMaterial.cs
+
+
+
+
+
+
+ AAAAAAAAAAAAAAAAAQAAAQAAAgAAAAAAAAAAAAAAAAA=
+ Models\Materials\IConcreteLibMaterial.cs
+
+
+
+
+
+ AAAAAAAAgAEAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAA=
+ Models\Materials\IElasticMaterial.cs
+
+
+
+
+
+ AAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+ Models\Materials\IHasHeadMaterials.cs
+
+
+
+
+
+ AAAAAAAAAAAAEAAAAAIAQAAAAAAAAAAAAAAAAAAAAAA=
+ Models\Materials\IHeadMaterialRepository.cs
+
+
+
+
+
+ AAAAAAAQAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+ Models\Materials\IHelperMaterial.cs
+
+
+
+
+
+ AAAAAAAAAAEAAAAAAAAABAAAAAAAAgAAAAAAAAAAAgA=
+ Models\Materials\ILibMaterial.cs
+
+
+
+
+
+ AAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+ Models\Materials\IMaterialOptionLogic.cs
+
+
+
+
+
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+ Models\Materials\IReinforcementLibMaterial.cs
+
+
+
+
+
+ AAAAAAAUAAABAAAAAAAAAAQAAAAAAAAAAAAAgAAAAAA=
+ Models\Materials\IHeadMaterial.cs
+
+
+
+
+
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+ Models\Materials\IFunctionMaterial.cs
+
+
+
+
\ No newline at end of file