Measurements of units were added

This commit is contained in:
Evgeny Redikultsev
2022-11-26 17:33:21 +05:00
parent f849ee024a
commit c5e503252e
25 changed files with 293 additions and 61 deletions

View File

@@ -9,6 +9,7 @@ using StructureHelper.Services.Primitives;
using StructureHelper.UnitSystem;
using StructureHelper.UnitSystem.Systems;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Services.Units;
using StructureHelperLogics.Models.Calculations.CalculationProperties;
using StructureHelperLogics.Models.Materials;
using StructureHelperLogics.Models.Materials.Factories;

View File

@@ -157,25 +157,32 @@
<i:InvokeCommandAction Command="{Binding ScaleCanvasUp}"/>
</mouseEventTriggers:MouseWheelUpEventTrigger>
</i:Interaction.Triggers>
<Canvas.RenderTransform>
<Canvas.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleX="{Binding ScaleValue}" ScaleY="{Binding ScaleValue}"
CenterX="{Binding ScrollPanelX}" CenterY="{Binding ScrollPanelY}"/>
</TransformGroup>
</Canvas.RenderTransform>
</Canvas.LayoutTransform>
<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>
<GeometryDrawing Brush="Black">
<GeometryDrawing.Geometry>
<GeometryGroup FillRule="EvenOdd">
<RectangleGeometry Rect="0,0,50,50"/>
<RectangleGeometry Rect="0,0,49.5,49.5"/>
<RectangleGeometry Rect="0,0,0.050,0.050"/>
<RectangleGeometry Rect="0,0,0.0499,0.0499"/>
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingBrush.Drawing>
</DrawingBrush>
</DrawingBrush>-->
</Canvas.Background>
<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}"/>

View File

@@ -37,10 +37,12 @@ namespace StructureHelper.Windows.MainWindow
{
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 readonly double scaleRate = 1.1;
private readonly double scaleRate = 1.1d;
private IPrimitiveRepository PrimitiveRepository { get; }
public PrimitiveBase SelectedPrimitive { get; set; }
@@ -73,7 +75,7 @@ namespace StructureHelper.Windows.MainWindow
}
public int PrimitivesCount => Primitives.Count;
private double scaleValue = 1.0;
private double scaleValue;
public double ScaleValue
{
@@ -83,13 +85,19 @@ namespace StructureHelper.Windows.MainWindow
OnPropertyChanged(value, ref scaleValue);
axisLineThickness = ConstAxisLineThickness / scaleValue;
OnPropertyChanged(nameof(AxisLineThickness));
gridLineThickness = ConstGridLineThickness / scaleValue;
OnPropertyChanged(nameof(GridLineThickness));
}
}
public double AxisLineThickness
{
get =>axisLineThickness == 0d? ConstAxisLineThickness: axisLineThickness;
set { axisLineThickness = value; }
get => axisLineThickness;
}
public double GridLineThickness
{
get => gridLineThickness;
}
private double canvasWidth, canvasHeight, xX2, xY1, yX1, yY2;
@@ -165,18 +173,22 @@ namespace StructureHelper.Windows.MainWindow
private double delta = 0.0005;
private double axisLineThickness;
private double gridLineThickness;
public MainViewModel(MainModel model, IPrimitiveRepository primitiveRepository, UnitSystemService unitSystemService)
{
PrimitiveRepository = primitiveRepository;
Model = model;
headMaterials = Model.HeadMaterialRepository.HeadMaterials;
CanvasWidth = 1500;
CanvasHeight = 1000;
CanvasWidth = 2d * scale;
CanvasHeight = 1.5d * scale;
XX2 = CanvasWidth;
XY1 = CanvasHeight / 2d;
YX1 = CanvasWidth / 2d;
YY2 = CanvasHeight;
scaleValue = 1000d / scale;
axisLineThickness = ConstAxisLineThickness / scaleValue;
gridLineThickness = ConstGridLineThickness / scaleValue;
calculationProperty = new CalculationProperty();
LeftButtonUp = new RelayCommand(o =>

View File

@@ -35,11 +35,11 @@
</Grid.RowDefinitions>
<TextBlock Text="Elastic material"/>
<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"/>
<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"/>
<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>
</DataTemplate>
</Window.Resources>

View File

@@ -22,8 +22,8 @@
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Text="Width"/>
<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="1" Grid.Column="1" Margin="1" Text="{Binding Height, 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}, ValidatesOnExceptions=True}"/>
</Grid>
</Expander>
</DataTemplate>
@@ -38,7 +38,7 @@
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<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>
</Expander>
</DataTemplate>
@@ -55,8 +55,8 @@
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Text="Minimum element division"/>
<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="1" Grid.Column="1" Margin="1" Text="{Binding MaxElementSize, Converter={StaticResource LengthConverter}, 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}, ValidatesOnExceptions=True}"/>
</Grid>
</Expander>
</DataTemplate>
@@ -106,8 +106,8 @@
<Button Width="50" Content="..." Command="{Binding EditMaterialCommand}">
</Button>
</StackPanel>
<TextBox Grid.Row="2" Grid.Column="1" Margin="1" Text="{Binding CenterX, Converter={StaticResource LengthConverter}, ValidatesOnDataErrors=True}"/>
<TextBox Grid.Row="3" Grid.Column="1" Margin="1" Text="{Binding CenterY, 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}, ValidatesOnExceptions=True}"/>
<TextBox Grid.Row="5" Grid.Column="1" Margin="1" Text="{Binding ZIndex}"/>
<StackPanel Grid.Row="4" Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
<CheckBox IsChecked="{Binding SetMaterialColor}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,20,0"/>