Binding function tree

This commit is contained in:
Иван Ивашкин
2025-03-06 12:49:23 +05:00
parent 0829b9c57e
commit 943f80ad8d
16 changed files with 73 additions and 17 deletions

View File

@@ -21,6 +21,7 @@ namespace StructureHelperCommon.Infrastructures.Interfaces
public FunctionType Type { get; set; }
public FunctionPurpose FunctionPurpose { get; set; }
public string Name { get; set; }
public string FullName { get; set; }
public string Description { get; set; }
public List<GraphPoint> Table { get; set; }
public double MinArg { get; set; }

View File

@@ -22,6 +22,7 @@ namespace StructureHelperCommon.Infrastructures.Interfaces
public FunctionType Type { get; set; }
public FunctionPurpose FunctionPurpose { get; set; }
public string Name { get; set; }
public string FullName { get; set; }
public string Description { get; set; }
public double MinArg { get; set; }
public double MaxArg { get; set; }

View File

@@ -99,6 +99,7 @@ namespace StructureHelperCommon.Infrastructures.Settings
new TableFunction()
{
Name = "Not StressStrain",
FullName = "Not StressStrain",
FunctionPurpose = FunctionPurpose.FireProtection,
Table = new List<GraphPoint>()
{
@@ -115,6 +116,7 @@ namespace StructureHelperCommon.Infrastructures.Settings
new TableFunction()
{
Name = "Табличная системная функция",
FullName = "Табличная системная функция",
FunctionPurpose = FunctionPurpose.StressStrain,
Table = new List<GraphPoint>()
{
@@ -131,6 +133,7 @@ namespace StructureHelperCommon.Infrastructures.Settings
new FormulaFunction()
{
Name = "Формульная системная функция",
FullName = "Формульная системная функция",
FunctionPurpose = FunctionPurpose.StressStrain,
Formula = "x^2",
Step = 100,

View File

@@ -17,6 +17,7 @@ namespace StructureHelperCommon.Models.Functions.Decorator
public LimXDecorator(IOneVariableFunction function, double leftBound, double rightBound) : base(function)
{
Name = $"x\u2208[{leftBound};{rightBound}]";
FullName = $"{function.FullName}/{Name}";
this.leftBound = leftBound;
this.rightBound = rightBound;
}

View File

@@ -16,6 +16,7 @@ namespace StructureHelperCommon.Models.Functions.Decorator
public LimYDecorator(IOneVariableFunction function, double downBound, double upBound) : base(function)
{
Name = $"y\u2208[{downBound};{upBound}]";
FullName = $"{function.FullName}/{Name}";
this.downBound = downBound;
this.upBound = upBound;
}

View File

@@ -16,6 +16,7 @@ namespace StructureHelperCommon.Models.Functions.Decorator
{
this.factor = factor;
Name = $"y=f({factor}x)";
FullName = $"{function.FullName}/{Name}";
}
public override bool Check()
{

View File

@@ -16,6 +16,7 @@ namespace StructureHelperCommon.Models.Functions.Decorator
{
this.factor = factor;
Name = $"y={factor}f(x)";
FullName = $"{function.FullName}/{Name}";
}
public override bool Check()
{

View File

@@ -30,6 +30,7 @@ namespace StructureHelperCommon.Models.Functions
public FunctionPurpose FunctionPurpose { get; set; }
public string Group { get; set; }
public string Name { get; set; }
public string FullName { get; set; }
public string Description { get ; set; }
public int Step { get; set; }
public string Formula
@@ -87,7 +88,8 @@ namespace StructureHelperCommon.Models.Functions
{
var formulaFunction = new FormulaFunction();
formulaFunction.Type = Type;
formulaFunction.Name = $"{Name} {COPY}";
formulaFunction.Name = $"{Name} {COPY}";
formulaFunction.FullName = formulaFunction.Name;
formulaFunction.Description = Description;
formulaFunction.Formula = Formula;
formulaFunction.IsUser = true;

View File

@@ -27,6 +27,7 @@ namespace StructureHelperCommon.Models.Functions
public FunctionPurpose FunctionPurpose { get; set; }
public string Group { get; set; }
public string Name { get; set; }
public string FullName { get; set; }
public string Description { get; set; }
public List<GraphPoint> Table { get; set; }
public Guid Id => throw new NotImplementedException();
@@ -62,6 +63,7 @@ namespace StructureHelperCommon.Models.Functions
var tableFunction = new TableFunction();
tableFunction.Type = Type;
tableFunction.Name = $"{Name} {COPY}";
tableFunction.FullName = tableFunction.Name;
tableFunction.Description = Description;
var newTable = new List<GraphPoint>();
Table.ForEach(x => newTable.Add(x.Clone() as GraphPoint));
@@ -71,7 +73,6 @@ namespace StructureHelperCommon.Models.Functions
tableFunction.FunctionPurpose = FunctionPurpose;
return tableFunction;
}
public double GetByX(double xValue)
{
double yValue = 0;

View File

@@ -1,4 +1,5 @@
using StructureHelperCommon.Infrastructures.Commands;
using LiveCharts.Wpf;
using StructureHelperCommon.Infrastructures.Commands;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Infrastructures.Settings;
using StructureHelperCommon.Models.Functions;
@@ -27,7 +28,7 @@ namespace StructureHelperCommon.Windows
public string SPECIAL { get; } = "Special Limit State";
public string CREATE_MATERIAL { get; } = "Create Function Material";
private const string ERROR_TEXT_1 = "Not all material states have functions ";
public ObservableCollection<IOneVariableFunction> Functions { get; set; }
public ObservableCollection<IOneVariableFunction> Functions { get; set; } = new ObservableCollection<IOneVariableFunction>();
public IOneVariableFunction Func_ST_ULS { get; set; }
public IOneVariableFunction Func_ST_SLS { get; set; }
public IOneVariableFunction Func_ST_Special { get; set; }
@@ -37,8 +38,23 @@ namespace StructureHelperCommon.Windows
public FunctionStorage FunctionStorage { get; set; } = new();
public FunctionSelectionVM()
{
var listFunctions = ProgramSetting.Functions.Where(x => x.FunctionPurpose == Infrastructures.Enums.FunctionPurpose.StressStrain).ToList();
Functions = new ObservableCollection<IOneVariableFunction>();
var stressStrainFunctions = new ObservableCollection<IOneVariableFunction>
(
ProgramSetting.Functions
.Where(x => x.FunctionPurpose == Infrastructures.Enums.FunctionPurpose.StressStrain)
);
GetFunctionsFromTree(stressStrainFunctions);
}
private void GetFunctionsFromTree(ObservableCollection<IOneVariableFunction> stressStrainFunctions)
{
foreach (IOneVariableFunction func in stressStrainFunctions)
{
Functions.Add(func);
if (func.Functions.Count > 0)
{
GetFunctionsFromTree(func.Functions);
}
}
}
private void CreateFunctionMaterial(object parameter)
{

View File

@@ -33,7 +33,7 @@
</Style>
<Style x:Key="FuncComboBox" TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Functions}"/>
<Setter Property="DisplayMemberPath" Value="Name"/>
<Setter Property="DisplayMemberPath" Value="FullName"/>
<Setter Property="Margin" Value="10"/>
</Style>
</Window.Resources>