137 lines
5.2 KiB
C#
137 lines
5.2 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
using System.ComponentModel;
|
|||
|
|
using CaeGlobals;
|
|||
|
|
using CaeModel;
|
|||
|
|
using DynamicTypeDescriptor;
|
|||
|
|
using System.Security.Policy;
|
|||
|
|
|
|||
|
|
namespace CPSO
|
|||
|
|
{
|
|||
|
|
[Serializable]
|
|||
|
|
public class ViewDistributionFromEquation : ViewDistribution
|
|||
|
|
{
|
|||
|
|
// Variables
|
|||
|
|
private DistributionFromEquation _distributionFromEquation;
|
|||
|
|
|
|||
|
|
|
|||
|
|
// Properties
|
|||
|
|
public override string Name
|
|||
|
|
{
|
|||
|
|
get { return _distributionFromEquation.Name; }
|
|||
|
|
set { _distributionFromEquation.Name = value; }
|
|||
|
|
}
|
|||
|
|
public override DistributionTypeEnum DistributionType
|
|||
|
|
{
|
|||
|
|
get { return _distributionFromEquation.DistributionType; }
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (_distributionFromEquation.DistributionType != value)
|
|||
|
|
{
|
|||
|
|
_distributionFromEquation.DistributionType = value;
|
|||
|
|
UpdateVisibility();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//
|
|||
|
|
[Category("Distribution magnitude")]
|
|||
|
|
[OrderedDisplayName(0, 10, "Magnitude")]
|
|||
|
|
[Description("Enter magnitude equation. Example equation: =Sin(x+y+z). " +
|
|||
|
|
"To include coordinates into the equation refer to them as x, y and z.")]
|
|||
|
|
[Id(1, 2)]
|
|||
|
|
public string EquationMagnitude
|
|||
|
|
{
|
|||
|
|
get { return _distributionFromEquation.EquationMagnitude; }
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (!value.Trim().StartsWith("=")) value = "=" + value;
|
|||
|
|
_distributionFromEquation.EquationMagnitude = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//
|
|||
|
|
[Category("Distribution components")]
|
|||
|
|
[OrderedDisplayName(0, 10, "D1")]
|
|||
|
|
[Description("Enter distribution equation for the direction of the first axis. Example equation: " +
|
|||
|
|
"=Sin(x+y+z). To include coordinates into the equation refer to them as x, y and z.")]
|
|||
|
|
[Id(2, 2)]
|
|||
|
|
public string EquationD1
|
|||
|
|
{
|
|||
|
|
get { return _distributionFromEquation.EquationD1; }
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (!value.Trim().StartsWith("=")) value = "=" + value;
|
|||
|
|
_distributionFromEquation.EquationD1 = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//
|
|||
|
|
[Category("Distribution components")]
|
|||
|
|
[OrderedDisplayName(1, 10, "D2")]
|
|||
|
|
[Description("Enter distribution equation for the direction of the second axis. Example equation: " +
|
|||
|
|
"=Sin(x+y+z). To include coordinates into the equation refer to them as x, y and z.")]
|
|||
|
|
[Id(3, 2)]
|
|||
|
|
public string EquationD2
|
|||
|
|
{
|
|||
|
|
get { return _distributionFromEquation.EquationD2; }
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (!value.Trim().StartsWith("=")) value = "=" + value;
|
|||
|
|
_distributionFromEquation.EquationD2 = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//
|
|||
|
|
[Category("Distribution components")]
|
|||
|
|
[OrderedDisplayName(2, 10, "D3")]
|
|||
|
|
[Description("Enter distribution equation for the direction of the third axis. Example equation: " +
|
|||
|
|
"=Sin(x+y+z). To include coordinates into the equation refer to them as x, y and z.")]
|
|||
|
|
[Id(4, 2)]
|
|||
|
|
public string EquationD3
|
|||
|
|
{
|
|||
|
|
get { return _distributionFromEquation.EquationD3; }
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
if (!value.Trim().StartsWith("=")) value = "=" + value;
|
|||
|
|
_distributionFromEquation.EquationD3 = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//
|
|||
|
|
public override string CoordinateSystemName
|
|||
|
|
{
|
|||
|
|
get { return _distributionFromEquation.CoordinateSystemName; }
|
|||
|
|
set { _distributionFromEquation.CoordinateSystemName = value; }
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// Constructors
|
|||
|
|
public ViewDistributionFromEquation(DistributionFromEquation distributionFromEquation)
|
|||
|
|
{
|
|||
|
|
_distributionFromEquation = distributionFromEquation;
|
|||
|
|
//
|
|||
|
|
DynamicCustomTypeDescriptor = ProviderInstaller.Install(this);
|
|||
|
|
//
|
|||
|
|
UpdateVisibility();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// Methods
|
|||
|
|
public override Distribution GetBase()
|
|||
|
|
{
|
|||
|
|
return _distributionFromEquation;
|
|||
|
|
}
|
|||
|
|
public void PopulateDropDownLists(string[] coordinateSystemNames)
|
|||
|
|
{
|
|||
|
|
base.PopulateCoordinateSystemNames(coordinateSystemNames);
|
|||
|
|
}
|
|||
|
|
private void UpdateVisibility()
|
|||
|
|
{
|
|||
|
|
bool visible = _distributionFromEquation.DistributionType == DistributionTypeEnum.Scalar;
|
|||
|
|
DynamicCustomTypeDescriptor.GetProperty(nameof(EquationMagnitude)).SetIsBrowsable(visible);
|
|||
|
|
DynamicCustomTypeDescriptor.GetProperty(nameof(EquationD1)).SetIsBrowsable(!visible);
|
|||
|
|
DynamicCustomTypeDescriptor.GetProperty(nameof(EquationD2)).SetIsBrowsable(!visible);
|
|||
|
|
DynamicCustomTypeDescriptor.GetProperty(nameof(EquationD3)).SetIsBrowsable(!visible);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|