Measurements of units were added
This commit is contained in:
47
Infrastructure/UI/Converters/CommonOperation.cs
Normal file
47
Infrastructure/UI/Converters/CommonOperation.cs
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||||
|
using StructureHelperCommon.Infrastructures.Strings;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace StructureHelper.Infrastructure.UI.Converters
|
||||||
|
{
|
||||||
|
internal static class CommonOperation
|
||||||
|
{
|
||||||
|
public static double ConvertToDoubleChangeComma(string s)
|
||||||
|
{
|
||||||
|
double result;
|
||||||
|
if (!double.TryParse(s, NumberStyles.Any, CultureInfo.CurrentCulture, out result) &&
|
||||||
|
!double.TryParse(s, NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out result) &&
|
||||||
|
!double.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out result))
|
||||||
|
{
|
||||||
|
throw new StructureHelperException($"{ErrorStrings.IncorrectValue}: {s}");
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IStringDoublePair DivideIntoStringDoublePair(string s)
|
||||||
|
{
|
||||||
|
string digitPattern = @"\d+(\.?|\,?)\d+";
|
||||||
|
string textPattern = @"[0-9]|\.|\,";
|
||||||
|
string caracterPattern = "[a-z]+$";
|
||||||
|
string target = "";
|
||||||
|
Regex regexText = new Regex(textPattern);
|
||||||
|
string textString = regexText.Replace(s, target);
|
||||||
|
var textMatch = Regex.Match(textString, caracterPattern, RegexOptions.IgnoreCase);
|
||||||
|
if (textMatch.Success) {textString = textMatch.Value.ToLower();}
|
||||||
|
var match = Regex.Match(s, digitPattern);
|
||||||
|
if (match.Success)
|
||||||
|
{
|
||||||
|
string digitString = match.Value;
|
||||||
|
double digit = ConvertToDoubleChangeComma(digitString);
|
||||||
|
return new StringDoublePair() { Digit = digit, Text = textString };
|
||||||
|
}
|
||||||
|
throw new StructureHelperException(ErrorStrings.DataIsInCorrect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
14
Infrastructure/UI/Converters/IStringDoublePair.cs
Normal file
14
Infrastructure/UI/Converters/IStringDoublePair.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace StructureHelper.Infrastructure.UI.Converters
|
||||||
|
{
|
||||||
|
internal interface IStringDoublePair
|
||||||
|
{
|
||||||
|
double Digit { get; }
|
||||||
|
string Text { get; }
|
||||||
|
}
|
||||||
|
}
|
||||||
14
Infrastructure/UI/Converters/StringDoublePair.cs
Normal file
14
Infrastructure/UI/Converters/StringDoublePair.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace StructureHelper.Infrastructure.UI.Converters
|
||||||
|
{
|
||||||
|
internal class StringDoublePair : IStringDoublePair
|
||||||
|
{
|
||||||
|
public double Digit { get; set; }
|
||||||
|
public string Text { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,6 +12,9 @@ namespace StructureHelper.Infrastructure.UI.Converters.Units
|
|||||||
internal class Area : UnitBase
|
internal class Area : UnitBase
|
||||||
{
|
{
|
||||||
public override string unitName { get => "Area"; }
|
public override string unitName { get => "Area"; }
|
||||||
|
|
||||||
|
public override string MeasureUnit => throw new NotImplementedException();
|
||||||
|
|
||||||
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
double val;
|
double val;
|
||||||
@@ -24,12 +27,15 @@ namespace StructureHelper.Infrastructure.UI.Converters.Units
|
|||||||
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
double val;
|
double val;
|
||||||
if (value != null)
|
try
|
||||||
{
|
{
|
||||||
var strVal = value as string;
|
var strVal = value as string;
|
||||||
double.TryParse(strVal, out val);
|
val = CommonOperation.ConvertToDoubleChangeComma(strVal);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
else { throw new Exception($"{unitName} value is null"); }
|
|
||||||
val /= (UnitConstatnts.Length * UnitConstatnts.Length);
|
val /= (UnitConstatnts.Length * UnitConstatnts.Length);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ namespace StructureHelper.Infrastructure.UI.Converters.Units
|
|||||||
|
|
||||||
public override string unitName { get => "Force"; }
|
public override string unitName { get => "Force"; }
|
||||||
|
|
||||||
|
public override string MeasureUnit => throw new NotImplementedException();
|
||||||
|
|
||||||
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
double val;
|
double val;
|
||||||
@@ -26,12 +28,15 @@ namespace StructureHelper.Infrastructure.UI.Converters.Units
|
|||||||
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
double val;
|
double val;
|
||||||
if (value != null)
|
try
|
||||||
{
|
{
|
||||||
var strVal = value as string;
|
var strVal = value as string;
|
||||||
double.TryParse(strVal, out val);
|
val = CommonOperation.ConvertToDoubleChangeComma(strVal);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
else { throw new Exception($"{unitName} value is null"); }
|
|
||||||
val /= coeffficient;
|
val /= coeffficient;
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
using System;
|
using StructureHelperCommon.Infrastructures.Enums;
|
||||||
|
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||||
|
using StructureHelperCommon.Infrastructures.Strings;
|
||||||
|
using StructureHelperCommon.Services.Units;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -10,6 +14,12 @@ namespace StructureHelper.Infrastructure.UI.Converters.Units
|
|||||||
{
|
{
|
||||||
internal class Length : UnitBase
|
internal class Length : UnitBase
|
||||||
{
|
{
|
||||||
|
private IEnumerable<IUnit> units = UnitsFactory.GetUnitCollection();
|
||||||
|
private UnitTypes type = UnitTypes.Length;
|
||||||
|
private IUnit currentUnit => units.Where(u => u.UnitType == type & u.Name == "mm").Single();
|
||||||
|
public override string MeasureUnit => currentUnit.Name;
|
||||||
|
private double coeffficient => currentUnit.Multiplyer;
|
||||||
|
|
||||||
public override string unitName { get => "Length"; }
|
public override string unitName { get => "Length"; }
|
||||||
|
|
||||||
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
@@ -17,21 +27,47 @@ namespace StructureHelper.Infrastructure.UI.Converters.Units
|
|||||||
double val;
|
double val;
|
||||||
if (value != null) { val = (double)value; }
|
if (value != null) { val = (double)value; }
|
||||||
else { throw new Exception($"{unitName} value is null"); }
|
else { throw new Exception($"{unitName} value is null"); }
|
||||||
val *= UnitConstatnts.Length;
|
val *= coeffficient;
|
||||||
return val;
|
string strValue = $"{val} {MeasureUnit}";
|
||||||
|
return strValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
double val;
|
double val;
|
||||||
if (value != null)
|
try
|
||||||
{
|
{
|
||||||
var strVal = value as string;
|
var strVal = value as string;
|
||||||
double.TryParse(strVal, out val);
|
IStringDoublePair pair = CommonOperation.DivideIntoStringDoublePair(strVal);
|
||||||
|
double multy;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
multy = coeffficient / GetMultiplyer(units, type, pair.Text);
|
||||||
}
|
}
|
||||||
else { throw new Exception($"{unitName} value is null"); }
|
catch (Exception ex)
|
||||||
val /= UnitConstatnts.Length;
|
{
|
||||||
|
multy = 1d;
|
||||||
|
}
|
||||||
|
val = pair.Digit * multy;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
val /= coeffficient;
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private double GetMultiplyer(IEnumerable<IUnit> units, UnitTypes unitType, string unitName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return units.Where(u => u.UnitType == unitType & u.Name == unitName).Single().Multiplyer;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw new StructureHelperException(ErrorStrings.DataIsInCorrect + ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ namespace StructureHelper.Infrastructure.UI.Converters.Units
|
|||||||
|
|
||||||
public override string unitName { get => "Stress"; }
|
public override string unitName { get => "Stress"; }
|
||||||
|
|
||||||
|
public override string MeasureUnit => throw new NotImplementedException();
|
||||||
|
|
||||||
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
double val;
|
double val;
|
||||||
@@ -26,12 +28,15 @@ namespace StructureHelper.Infrastructure.UI.Converters.Units
|
|||||||
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
double val;
|
double val;
|
||||||
if (value != null)
|
try
|
||||||
{
|
{
|
||||||
var strVal = value as string;
|
var strVal = value as string;
|
||||||
double.TryParse(strVal, out val);
|
val = CommonOperation.ConvertToDoubleChangeComma(strVal);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
else { throw new Exception($"{unitName} value is null"); }
|
|
||||||
val /= coeffficient;
|
val /= coeffficient;
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ namespace StructureHelper.Infrastructure.UI.Converters.Units
|
|||||||
internal abstract class UnitBase : IValueConverter
|
internal abstract class UnitBase : IValueConverter
|
||||||
{
|
{
|
||||||
public abstract string unitName { get;}
|
public abstract string unitName { get;}
|
||||||
|
public abstract string MeasureUnit { get; }
|
||||||
public abstract object Convert(object value, Type targetType, object parameter, CultureInfo culture);
|
public abstract object Convert(object value, Type targetType, object parameter, CultureInfo culture);
|
||||||
public abstract object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture);
|
public abstract object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,6 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
|
|||||||
{
|
{
|
||||||
public class PointViewPrimitive : PrimitiveBase, IHasCenter
|
public class PointViewPrimitive : PrimitiveBase, IHasCenter
|
||||||
{
|
{
|
||||||
const double lengthUnit = 1000d;
|
|
||||||
|
|
||||||
IPointPrimitive primitive;
|
IPointPrimitive primitive;
|
||||||
|
|
||||||
public double Area
|
public double Area
|
||||||
@@ -27,11 +25,11 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
|
|||||||
|
|
||||||
public double PrimitiveLeft
|
public double PrimitiveLeft
|
||||||
{
|
{
|
||||||
get => DeltaX - Diameter / 2d * lengthUnit;
|
get => DeltaX - Diameter / 2d;
|
||||||
}
|
}
|
||||||
public double PrimitiveTop
|
public double PrimitiveTop
|
||||||
{
|
{
|
||||||
get => DeltaY - Diameter / 2d * lengthUnit;
|
get => DeltaY - Diameter / 2d;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PointViewPrimitive(IPointPrimitive _primitive) : base(_primitive)
|
public PointViewPrimitive(IPointPrimitive _primitive) : base(_primitive)
|
||||||
|
|||||||
@@ -11,8 +11,6 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
|
|||||||
{
|
{
|
||||||
public class RectangleViewPrimitive : PrimitiveBase, IHasDivision, IHasCenter
|
public class RectangleViewPrimitive : PrimitiveBase, IHasDivision, IHasCenter
|
||||||
{
|
{
|
||||||
const double lengthUnit = 1000d;
|
|
||||||
|
|
||||||
private IRectanglePrimitive primitive;
|
private IRectanglePrimitive primitive;
|
||||||
|
|
||||||
public override double PrimitiveWidth
|
public override double PrimitiveWidth
|
||||||
@@ -38,11 +36,11 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
|
|||||||
|
|
||||||
public double PrimitiveLeft
|
public double PrimitiveLeft
|
||||||
{
|
{
|
||||||
get => DeltaX - primitive.Width / 2 * lengthUnit;
|
get => DeltaX - primitive.Width / 2d;
|
||||||
}
|
}
|
||||||
public double PrimitiveTop
|
public double PrimitiveTop
|
||||||
{
|
{
|
||||||
get => DeltaY - primitive.Height / 2 * lengthUnit;
|
get => DeltaY - primitive.Height / 2d;
|
||||||
}
|
}
|
||||||
public int NdmMinDivision
|
public int NdmMinDivision
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -32,13 +32,13 @@
|
|||||||
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding CenterX, Converter={StaticResource LengthConverter}}"/>
|
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding CenterX, Converter={StaticResource LengthConverter}}"/>
|
||||||
<TextBlock Grid.Row="3" Text="Center Y: "/>
|
<TextBlock Grid.Row="3" Text="Center Y: "/>
|
||||||
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding CenterY, Converter={StaticResource LengthConverter}}"/>
|
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding CenterY, Converter={StaticResource LengthConverter}}"/>
|
||||||
<TextBlock Grid.Row="4" Text="Diameter: "/>
|
<TextBlock Grid.Row="4" Text="Area: "/>
|
||||||
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding Diameter, Converter={StaticResource LengthConverter}}"/>
|
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding Area, Converter={StaticResource AreaConverter}}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Ellipse.ToolTip>
|
</Ellipse.ToolTip>
|
||||||
<Ellipse.RenderTransform>
|
<Ellipse.RenderTransform>
|
||||||
<TransformGroup>
|
<TransformGroup>
|
||||||
<TranslateTransform X="{Binding CenterX, Converter={StaticResource LengthConverter}}" Y="{Binding InvertedCenterY, Converter={StaticResource LengthConverter}}"/>
|
<TranslateTransform X="{Binding CenterX}" Y="{Binding InvertedCenterY}"/>
|
||||||
<RotateTransform/>
|
<RotateTransform/>
|
||||||
</TransformGroup>
|
</TransformGroup>
|
||||||
</Ellipse.RenderTransform>
|
</Ellipse.RenderTransform>
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
</Rectangle.ToolTip>
|
</Rectangle.ToolTip>
|
||||||
<Rectangle.RenderTransform>
|
<Rectangle.RenderTransform>
|
||||||
<TransformGroup>
|
<TransformGroup>
|
||||||
<TranslateTransform X="{Binding CenterX, Converter={StaticResource LengthConverter}}" Y="{Binding InvertedCenterY, Converter={StaticResource LengthConverter}}"/>
|
<TranslateTransform X="{Binding CenterX}" Y="{Binding InvertedCenterY}"/>
|
||||||
<RotateTransform/>
|
<RotateTransform/>
|
||||||
</TransformGroup>
|
</TransformGroup>
|
||||||
</Rectangle.RenderTransform>
|
</Rectangle.RenderTransform>
|
||||||
|
|||||||
@@ -30,20 +30,20 @@
|
|||||||
|
|
||||||
<Style x:Key="EllipseStyle" TargetType="Ellipse" BasedOn="{StaticResource ShapeStyle}">
|
<Style x:Key="EllipseStyle" TargetType="Ellipse" BasedOn="{StaticResource ShapeStyle}">
|
||||||
<Style.Setters>
|
<Style.Setters>
|
||||||
<Setter Property="Width" Value="{Binding Diameter, Converter={StaticResource LengthConverter}}"/>
|
<Setter Property="Width" Value="{Binding Diameter}"/>
|
||||||
<Setter Property="Height" Value="{Binding Diameter, Converter={StaticResource LengthConverter}}"/>
|
<Setter Property="Height" Value="{Binding Diameter}"/>
|
||||||
</Style.Setters>
|
</Style.Setters>
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<Style x:Key="RectangleStyle" TargetType="Rectangle" BasedOn="{StaticResource ShapeStyle}">
|
<Style x:Key="RectangleStyle" TargetType="Rectangle" BasedOn="{StaticResource ShapeStyle}">
|
||||||
<Setter Property="Width" Value="{Binding PrimitiveWidth, Converter={StaticResource LengthConverter}}"/>
|
<Setter Property="Width" Value="{Binding PrimitiveWidth}"/>
|
||||||
<Setter Property="Height" Value="{Binding PrimitiveHeight, Converter={StaticResource LengthConverter}}"/>
|
<Setter Property="Height" Value="{Binding PrimitiveHeight}"/>
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<Style x:Key="LinePrimitiveStyle" TargetType="Line" BasedOn="{StaticResource ShapeStyle}">
|
<Style x:Key="LinePrimitiveStyle" TargetType="Line" BasedOn="{StaticResource ShapeStyle}">
|
||||||
<Setter Property="X1" Value="{Binding StartPoinX, Converter={StaticResource LengthConverter}}"/>
|
<Setter Property="X1" Value="{Binding StartPoinX}"/>
|
||||||
<Setter Property="Y1" Value="{Binding StartPoinY, Converter={StaticResource LengthConverter}}"/>
|
<Setter Property="Y1" Value="{Binding StartPoinY}"/>
|
||||||
<Setter Property="X2" Value="{Binding EndPoinX, Converter={StaticResource LengthConverter}}"/>
|
<Setter Property="X2" Value="{Binding EndPoinX}"/>
|
||||||
<Setter Property="Y2" Value="{Binding EndPoinY, Converter={StaticResource LengthConverter}}"/>
|
<Setter Property="Y2" Value="{Binding EndPoinY}"/>
|
||||||
</Style>
|
</Style>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
@@ -133,7 +133,10 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</ApplicationDefinition>
|
</ApplicationDefinition>
|
||||||
<Compile Include="Infrastructure\Enums\PrimitiveType.cs" />
|
<Compile Include="Infrastructure\Enums\PrimitiveType.cs" />
|
||||||
|
<Compile Include="Infrastructure\UI\Converters\CommonOperation.cs" />
|
||||||
<Compile Include="Infrastructure\UI\Converters\Common\InvertBoolConverter.cs" />
|
<Compile Include="Infrastructure\UI\Converters\Common\InvertBoolConverter.cs" />
|
||||||
|
<Compile Include="Infrastructure\UI\Converters\IStringDoublePair.cs" />
|
||||||
|
<Compile Include="Infrastructure\UI\Converters\StringDoublePair.cs" />
|
||||||
<Compile Include="Infrastructure\UI\Converters\Units\Area.cs" />
|
<Compile Include="Infrastructure\UI\Converters\Units\Area.cs" />
|
||||||
<Compile Include="Infrastructure\UI\Converters\Units\Stress.cs" />
|
<Compile Include="Infrastructure\UI\Converters\Units\Stress.cs" />
|
||||||
<Compile Include="Infrastructure\UI\Converters\Units\Force.cs" />
|
<Compile Include="Infrastructure\UI\Converters\Units\Force.cs" />
|
||||||
|
|||||||
17
StructureHelperCommon/Infrastructures/Enums/UnitTypes.cs
Normal file
17
StructureHelperCommon/Infrastructures/Enums/UnitTypes.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,5 +15,6 @@ namespace StructureHelperCommon.Infrastructures.Strings
|
|||||||
public static string ShapeIsNotCorrect => "#0004: Shape is not valid";
|
public static string ShapeIsNotCorrect => "#0004: Shape is not valid";
|
||||||
public static string LimitStatesIsNotValid => "#0005: Type of limite state 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 LoadTermIsNotValid => "#0006: Load term is not valid";
|
||||||
|
public static string IncorrectValue => "#0007: value is not valid";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
20
StructureHelperCommon/Services/Units/IUnit.cs
Normal file
20
StructureHelperCommon/Services/Units/IUnit.cs
Normal file
@@ -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
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interface for measurements Unit
|
||||||
|
/// </summary>
|
||||||
|
public interface IUnit
|
||||||
|
{
|
||||||
|
|
||||||
|
UnitTypes UnitType { get; }
|
||||||
|
string Name { get; }
|
||||||
|
double Multiplyer { get; }
|
||||||
|
}
|
||||||
|
}
|
||||||
16
StructureHelperCommon/Services/Units/Unit.cs
Normal file
16
StructureHelperCommon/Services/Units/Unit.cs
Normal file
@@ -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; }
|
||||||
|
}
|
||||||
|
}
|
||||||
27
StructureHelperCommon/Services/Units/UnitsFactory.cs
Normal file
27
StructureHelperCommon/Services/Units/UnitsFactory.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
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<IUnit> GetUnitCollection()
|
||||||
|
{
|
||||||
|
List<IUnit> units = new List<IUnit>();
|
||||||
|
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.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 });
|
||||||
|
return units;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -49,6 +49,7 @@
|
|||||||
<Compile Include="Infrastructures\Enums\CalcTerms.cs" />
|
<Compile Include="Infrastructures\Enums\CalcTerms.cs" />
|
||||||
<Compile Include="Infrastructures\Enums\CodeTypes.cs" />
|
<Compile Include="Infrastructures\Enums\CodeTypes.cs" />
|
||||||
<Compile Include="Infrastructures\Enums\LimitStates.cs" />
|
<Compile Include="Infrastructures\Enums\LimitStates.cs" />
|
||||||
|
<Compile Include="Infrastructures\Enums\UnitTypes.cs" />
|
||||||
<Compile Include="Infrastructures\Exceptions\StructureHelperException.cs" />
|
<Compile Include="Infrastructures\Exceptions\StructureHelperException.cs" />
|
||||||
<Compile Include="Infrastructures\Interfaces\IHasParent.cs" />
|
<Compile Include="Infrastructures\Interfaces\IHasParent.cs" />
|
||||||
<Compile Include="Infrastructures\Interfaces\ISaveable.cs" />
|
<Compile Include="Infrastructures\Interfaces\ISaveable.cs" />
|
||||||
@@ -68,6 +69,9 @@
|
|||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Services\ColorServices\ColorProcessor.cs" />
|
<Compile Include="Services\ColorServices\ColorProcessor.cs" />
|
||||||
<Compile Include="Services\ShapeServices\ShapeService.cs" />
|
<Compile Include="Services\ShapeServices\ShapeService.cs" />
|
||||||
|
<Compile Include="Services\Units\IUnit.cs" />
|
||||||
|
<Compile Include="Services\Units\Unit.cs" />
|
||||||
|
<Compile Include="Services\Units\UnitsFactory.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
@@ -9,6 +9,7 @@ using StructureHelper.Services.Primitives;
|
|||||||
using StructureHelper.UnitSystem;
|
using StructureHelper.UnitSystem;
|
||||||
using StructureHelper.UnitSystem.Systems;
|
using StructureHelper.UnitSystem.Systems;
|
||||||
using StructureHelperCommon.Infrastructures.Enums;
|
using StructureHelperCommon.Infrastructures.Enums;
|
||||||
|
using StructureHelperCommon.Services.Units;
|
||||||
using StructureHelperLogics.Models.Calculations.CalculationProperties;
|
using StructureHelperLogics.Models.Calculations.CalculationProperties;
|
||||||
using StructureHelperLogics.Models.Materials;
|
using StructureHelperLogics.Models.Materials;
|
||||||
using StructureHelperLogics.Models.Materials.Factories;
|
using StructureHelperLogics.Models.Materials.Factories;
|
||||||
|
|||||||
@@ -157,25 +157,32 @@
|
|||||||
<i:InvokeCommandAction Command="{Binding ScaleCanvasUp}"/>
|
<i:InvokeCommandAction Command="{Binding ScaleCanvasUp}"/>
|
||||||
</mouseEventTriggers:MouseWheelUpEventTrigger>
|
</mouseEventTriggers:MouseWheelUpEventTrigger>
|
||||||
</i:Interaction.Triggers>
|
</i:Interaction.Triggers>
|
||||||
<Canvas.RenderTransform>
|
<Canvas.LayoutTransform>
|
||||||
<TransformGroup>
|
<TransformGroup>
|
||||||
<ScaleTransform ScaleX="{Binding ScaleValue}" ScaleY="{Binding ScaleValue}"
|
<ScaleTransform ScaleX="{Binding ScaleValue}" ScaleY="{Binding ScaleValue}"
|
||||||
CenterX="{Binding ScrollPanelX}" CenterY="{Binding ScrollPanelY}"/>
|
CenterX="{Binding ScrollPanelX}" CenterY="{Binding ScrollPanelY}"/>
|
||||||
</TransformGroup>
|
</TransformGroup>
|
||||||
</Canvas.RenderTransform>
|
</Canvas.LayoutTransform>
|
||||||
<Canvas.Background>
|
<Canvas.Background>
|
||||||
<DrawingBrush Viewport="0,0,10,10" ViewportUnits="Absolute" TileMode="Tile">
|
<VisualBrush TileMode="Tile"
|
||||||
|
Viewport="0,0,0.050,0.050" ViewportUnits="Absolute"
|
||||||
|
Viewbox="0,0,0.050,0.050" ViewboxUnits="Absolute">
|
||||||
|
<VisualBrush.Visual>
|
||||||
|
<Rectangle StrokeThickness="{Binding GridLineThickness}" Height="0.050" Width="0.050" Stroke="Darkgray"/>
|
||||||
|
</VisualBrush.Visual>
|
||||||
|
</VisualBrush>
|
||||||
|
<!--<DrawingBrush Viewport="0,0,0.05,0.05" ViewportUnits="Absolute" TileMode="Tile">
|
||||||
<DrawingBrush.Drawing>
|
<DrawingBrush.Drawing>
|
||||||
<GeometryDrawing Brush="Black">
|
<GeometryDrawing Brush="Black">
|
||||||
<GeometryDrawing.Geometry>
|
<GeometryDrawing.Geometry>
|
||||||
<GeometryGroup FillRule="EvenOdd">
|
<GeometryGroup FillRule="EvenOdd">
|
||||||
<RectangleGeometry Rect="0,0,50,50"/>
|
<RectangleGeometry Rect="0,0,0.050,0.050"/>
|
||||||
<RectangleGeometry Rect="0,0,49.5,49.5"/>
|
<RectangleGeometry Rect="0,0,0.0499,0.0499"/>
|
||||||
</GeometryGroup>
|
</GeometryGroup>
|
||||||
</GeometryDrawing.Geometry>
|
</GeometryDrawing.Geometry>
|
||||||
</GeometryDrawing>
|
</GeometryDrawing>
|
||||||
</DrawingBrush.Drawing>
|
</DrawingBrush.Drawing>
|
||||||
</DrawingBrush>
|
</DrawingBrush>-->
|
||||||
</Canvas.Background>
|
</Canvas.Background>
|
||||||
<Line X1="0" X2="{Binding XX2}" Y1="{Binding XY1}" Y2="{Binding XY1}" Stroke="Red" StrokeThickness="{Binding AxisLineThickness}"/>
|
<Line X1="0" X2="{Binding XX2}" Y1="{Binding XY1}" Y2="{Binding XY1}" Stroke="Red" StrokeThickness="{Binding AxisLineThickness}"/>
|
||||||
<Line X1="{Binding YX1}" X2="{Binding YX1}" Y1="0" Y2="{Binding YY2}" Stroke="ForestGreen" StrokeThickness="{Binding AxisLineThickness}"/>
|
<Line X1="{Binding YX1}" X2="{Binding YX1}" Y1="0" Y2="{Binding YY2}" Stroke="ForestGreen" StrokeThickness="{Binding AxisLineThickness}"/>
|
||||||
|
|||||||
@@ -37,10 +37,12 @@ namespace StructureHelper.Windows.MainWindow
|
|||||||
{
|
{
|
||||||
public class MainViewModel : ViewModelBase
|
public class MainViewModel : ViewModelBase
|
||||||
{
|
{
|
||||||
const double ConstAxisLineThickness = 2d;
|
const double scale = 1d;
|
||||||
|
private double ConstAxisLineThickness = 2d * scale;
|
||||||
|
private double ConstGridLineThickness = 0.25d * scale;
|
||||||
|
|
||||||
private List<IHeadMaterial> headMaterials;
|
private List<IHeadMaterial> headMaterials;
|
||||||
private readonly double scaleRate = 1.1;
|
private readonly double scaleRate = 1.1d;
|
||||||
|
|
||||||
private IPrimitiveRepository PrimitiveRepository { get; }
|
private IPrimitiveRepository PrimitiveRepository { get; }
|
||||||
public PrimitiveBase SelectedPrimitive { get; set; }
|
public PrimitiveBase SelectedPrimitive { get; set; }
|
||||||
@@ -73,7 +75,7 @@ namespace StructureHelper.Windows.MainWindow
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int PrimitivesCount => Primitives.Count;
|
public int PrimitivesCount => Primitives.Count;
|
||||||
private double scaleValue = 1.0;
|
private double scaleValue;
|
||||||
|
|
||||||
public double ScaleValue
|
public double ScaleValue
|
||||||
{
|
{
|
||||||
@@ -83,13 +85,19 @@ namespace StructureHelper.Windows.MainWindow
|
|||||||
OnPropertyChanged(value, ref scaleValue);
|
OnPropertyChanged(value, ref scaleValue);
|
||||||
axisLineThickness = ConstAxisLineThickness / scaleValue;
|
axisLineThickness = ConstAxisLineThickness / scaleValue;
|
||||||
OnPropertyChanged(nameof(AxisLineThickness));
|
OnPropertyChanged(nameof(AxisLineThickness));
|
||||||
|
gridLineThickness = ConstGridLineThickness / scaleValue;
|
||||||
|
OnPropertyChanged(nameof(GridLineThickness));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public double AxisLineThickness
|
public double AxisLineThickness
|
||||||
{
|
{
|
||||||
get =>axisLineThickness == 0d? ConstAxisLineThickness: axisLineThickness;
|
get => axisLineThickness;
|
||||||
set { axisLineThickness = value; }
|
}
|
||||||
|
|
||||||
|
public double GridLineThickness
|
||||||
|
{
|
||||||
|
get => gridLineThickness;
|
||||||
}
|
}
|
||||||
|
|
||||||
private double canvasWidth, canvasHeight, xX2, xY1, yX1, yY2;
|
private double canvasWidth, canvasHeight, xX2, xY1, yX1, yY2;
|
||||||
@@ -165,18 +173,22 @@ namespace StructureHelper.Windows.MainWindow
|
|||||||
|
|
||||||
private double delta = 0.0005;
|
private double delta = 0.0005;
|
||||||
private double axisLineThickness;
|
private double axisLineThickness;
|
||||||
|
private double gridLineThickness;
|
||||||
|
|
||||||
public MainViewModel(MainModel model, IPrimitiveRepository primitiveRepository, UnitSystemService unitSystemService)
|
public MainViewModel(MainModel model, IPrimitiveRepository primitiveRepository, UnitSystemService unitSystemService)
|
||||||
{
|
{
|
||||||
PrimitiveRepository = primitiveRepository;
|
PrimitiveRepository = primitiveRepository;
|
||||||
Model = model;
|
Model = model;
|
||||||
headMaterials = Model.HeadMaterialRepository.HeadMaterials;
|
headMaterials = Model.HeadMaterialRepository.HeadMaterials;
|
||||||
CanvasWidth = 1500;
|
CanvasWidth = 2d * scale;
|
||||||
CanvasHeight = 1000;
|
CanvasHeight = 1.5d * scale;
|
||||||
XX2 = CanvasWidth;
|
XX2 = CanvasWidth;
|
||||||
XY1 = CanvasHeight / 2d;
|
XY1 = CanvasHeight / 2d;
|
||||||
YX1 = CanvasWidth / 2d;
|
YX1 = CanvasWidth / 2d;
|
||||||
YY2 = CanvasHeight;
|
YY2 = CanvasHeight;
|
||||||
|
scaleValue = 1000d / scale;
|
||||||
|
axisLineThickness = ConstAxisLineThickness / scaleValue;
|
||||||
|
gridLineThickness = ConstGridLineThickness / scaleValue;
|
||||||
calculationProperty = new CalculationProperty();
|
calculationProperty = new CalculationProperty();
|
||||||
|
|
||||||
LeftButtonUp = new RelayCommand(o =>
|
LeftButtonUp = new RelayCommand(o =>
|
||||||
|
|||||||
@@ -35,11 +35,11 @@
|
|||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBlock Text="Elastic material"/>
|
<TextBlock Text="Elastic material"/>
|
||||||
<TextBlock Grid.Row="1" Text="Young's modulus"/>
|
<TextBlock Grid.Row="1" Text="Young's modulus"/>
|
||||||
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Modulus, Converter={StaticResource StressConverter}, ValidatesOnDataErrors=True}"/>
|
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Modulus, Converter={StaticResource StressConverter}, ValidatesOnExceptions=True}"/>
|
||||||
<TextBlock Grid.Row="2" Text="Compressive strength"/>
|
<TextBlock Grid.Row="2" Text="Compressive strength"/>
|
||||||
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding CompressiveStrength, Converter={StaticResource StressConverter}, ValidatesOnDataErrors=True}"/>
|
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding CompressiveStrength, Converter={StaticResource StressConverter}, ValidatesOnExceptions=True}"/>
|
||||||
<TextBlock Grid.Row="3" Text="Tensile strength"/>
|
<TextBlock Grid.Row="3" Text="Tensile strength"/>
|
||||||
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding TensileStrength, Converter={StaticResource StressConverter}, ValidatesOnDataErrors=True}"/>
|
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding TensileStrength, Converter={StaticResource StressConverter}, ValidatesOnExceptions=True}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</Window.Resources>
|
</Window.Resources>
|
||||||
|
|||||||
@@ -22,8 +22,8 @@
|
|||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock Grid.Row="0" Text="Width"/>
|
<TextBlock Grid.Row="0" Text="Width"/>
|
||||||
<TextBlock Grid.Row="1" Text="Height"/>
|
<TextBlock Grid.Row="1" Text="Height"/>
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding Width, Converter={StaticResource LengthConverter}, ValidatesOnDataErrors=True}"/>
|
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding Width, Converter={StaticResource LengthConverter}, ValidatesOnExceptions=True}"/>
|
||||||
<TextBox Grid.Row="1" Grid.Column="1" Margin="1" Text="{Binding Height, Converter={StaticResource LengthConverter}, ValidatesOnDataErrors=True}"/>
|
<TextBox Grid.Row="1" Grid.Column="1" Margin="1" Text="{Binding Height, Converter={StaticResource LengthConverter}, ValidatesOnExceptions=True}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Expander>
|
</Expander>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<ColumnDefinition/>
|
<ColumnDefinition/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock Grid.Row="0" Text="Area"/>
|
<TextBlock Grid.Row="0" Text="Area"/>
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding Area, Converter={StaticResource AreaConverter}, ValidatesOnDataErrors=True}"/>
|
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding Area, Converter={StaticResource AreaConverter}, ValidatesOnExceptions=True}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Expander>
|
</Expander>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
@@ -55,8 +55,8 @@
|
|||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock Grid.Row="0" Text="Minimum element division"/>
|
<TextBlock Grid.Row="0" Text="Minimum element division"/>
|
||||||
<TextBlock Grid.Row="1" Text="Maximum element size"/>
|
<TextBlock Grid.Row="1" Text="Maximum element size"/>
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding MinElementDivision, ValidatesOnDataErrors=True}"/>
|
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding MinElementDivision, ValidatesOnExceptions=True}"/>
|
||||||
<TextBox Grid.Row="1" Grid.Column="1" Margin="1" Text="{Binding MaxElementSize, Converter={StaticResource LengthConverter}, ValidatesOnDataErrors=True}"/>
|
<TextBox Grid.Row="1" Grid.Column="1" Margin="1" Text="{Binding MaxElementSize, Converter={StaticResource LengthConverter}, ValidatesOnExceptions=True}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Expander>
|
</Expander>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
@@ -106,8 +106,8 @@
|
|||||||
<Button Width="50" Content="..." Command="{Binding EditMaterialCommand}">
|
<Button Width="50" Content="..." Command="{Binding EditMaterialCommand}">
|
||||||
</Button>
|
</Button>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<TextBox Grid.Row="2" Grid.Column="1" Margin="1" Text="{Binding CenterX, Converter={StaticResource LengthConverter}, ValidatesOnDataErrors=True}"/>
|
<TextBox Grid.Row="2" Grid.Column="1" Margin="1" Text="{Binding CenterX, Converter={StaticResource LengthConverter}, ValidatesOnExceptions=True}"/>
|
||||||
<TextBox Grid.Row="3" Grid.Column="1" Margin="1" Text="{Binding CenterY, Converter={StaticResource LengthConverter}, ValidatesOnDataErrors=True}"/>
|
<TextBox Grid.Row="3" Grid.Column="1" Margin="1" Text="{Binding CenterY, Converter={StaticResource LengthConverter}, ValidatesOnExceptions=True}"/>
|
||||||
<TextBox Grid.Row="5" Grid.Column="1" Margin="1" Text="{Binding ZIndex}"/>
|
<TextBox Grid.Row="5" Grid.Column="1" Margin="1" Text="{Binding ZIndex}"/>
|
||||||
<StackPanel Grid.Row="4" Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
|
<StackPanel Grid.Row="4" Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||||
<CheckBox IsChecked="{Binding SetMaterialColor}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,20,0"/>
|
<CheckBox IsChecked="{Binding SetMaterialColor}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,20,0"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user