Edition of primitives is changed

This commit is contained in:
Evgeny Redikultsev
2022-10-30 18:58:51 +05:00
parent 87a42efc24
commit e1af4d5e07
48 changed files with 1198 additions and 146 deletions

View File

@@ -1,6 +1,7 @@
using System.Windows; using System.Windows;
using Autofac; using Autofac;
using StructureHelper.Services; using StructureHelper.Services;
using StructureHelper.Services.Primitives;
using StructureHelper.UnitSystem; using StructureHelper.UnitSystem;
using StructureHelper.Windows.MainWindow; using StructureHelper.Windows.MainWindow;
using StructureHelperLogics.Services; using StructureHelperLogics.Services;

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelper.Infrastructure.Exceptions
{
internal class StructureHelperException : Exception
{
public StructureHelperException(string errorString) : base(errorString)
{
}
}
}

View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelper.Infrastructure.Strings
{
internal static class ErrorStrings
{
public static string ObjectTypeIsUnknown => "#0001: Object type is unknown";
public static string MaterialTypeIsUnknown => "#0002: Material type is unknown";
}
}

View File

@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace StructureHelper.Infrastructure.UI.Converters.Units
{
internal class Area : UnitBase
{
public override string unitName { get => "Area"; }
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double val;
if (value != null) { val = (double)value; }
else { throw new Exception($"{unitName} value is null"); }
val *= UnitConstatnts.LengthConstant * UnitConstatnts.LengthConstant;
return val;
}
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
double val;
if (value != null)
{
var strVal = value as string;
double.TryParse(strVal, out val);
}
else { throw new Exception($"{unitName} value is null"); }
val /= (UnitConstatnts.LengthConstant * UnitConstatnts.LengthConstant);
return val;
}
}
}

View File

@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace StructureHelper.Infrastructure.UI.Converters.Units
{
internal class Length : UnitBase
{
public override string unitName { get => "Length"; }
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
double val;
if (value != null) { val = (double)value; }
else { throw new Exception($"{unitName} value is null"); }
val *= UnitConstatnts.LengthConstant;
return val;
}
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
double val;
if (value != null)
{
var strVal = value as string;
double.TryParse(strVal, out val);
}
else { throw new Exception($"{unitName} value is null"); }
val /= UnitConstatnts.LengthConstant;
return val;
}
}
}

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace StructureHelper.Infrastructure.UI.Converters.Units
{
internal abstract class UnitBase : IValueConverter
{
public abstract string unitName { get;}
public abstract object Convert(object value, Type targetType, object parameter, CultureInfo culture);
public abstract object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture);
}
}

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelper.Infrastructure.UI.Converters.Units
{
internal static class UnitConstatnts
{
public static double LengthConstant = 1000d;
}
}

View File

@@ -10,10 +10,11 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
{ {
public class Point : PrimitiveBase public class Point : PrimitiveBase
{ {
public Point(double d, double x, double y, MainViewModel ownerVm) : base(PrimitiveType.Point, x, y, ownerVm) public double Area { get; set; }
public Point(double area, double x, double y, MainViewModel ownerVm) : base(PrimitiveType.Point, x, y, ownerVm)
{ {
PrimitiveWidth = d; Name = "New point";
PrimitiveHeight = d; Area = area;
PreviewMouseMove = new RelayCommand(o => PreviewMouseMove = new RelayCommand(o =>
{ {
if (!(o is Point point)) return; if (!(o is Point point)) return;
@@ -32,17 +33,17 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
point.ShowedY = -(ownerVm.PanelY - pointDelta - OwnerVm.XY1); point.ShowedY = -(ownerVm.PanelY - pointDelta - OwnerVm.XY1);
} }
}); });
ShowedX = x; CenterX = x;
ShowedY = y; CenterY = y;
} }
public double Diameter { get => Math.Sqrt(Area / Math.PI) * 2; }
public override INdmPrimitive GetNdmPrimitive(IUnitSystem unitSystem) public override INdmPrimitive GetNdmPrimitive(IUnitSystem unitSystem)
{ {
var diam = unitSystem.ConvertLength(PrimitiveWidth);
double area = diam * diam * Math.PI / 4;
string materialName = MaterialName; string materialName = MaterialName;
ICenter center = new Center { X = unitSystem.ConvertLength(ShowedX), Y = unitSystem.ConvertLength(ShowedY) }; ICenter center = new Center { X = CenterX, Y = CenterY };
IShape shape = new StructureHelperCommon.Models.Shapes.Point { Area = area }; IShape shape = new StructureHelperCommon.Models.Shapes.Point { Area = this.Area };
IPrimitiveMaterial primitiveMaterial = new PrimitiveMaterial { MaterialType = GetMaterialTypes(), ClassName = materialName, Strength = Material.DesignCompressiveStrength }; IPrimitiveMaterial primitiveMaterial = new PrimitiveMaterial { MaterialType = GetMaterialTypes(), ClassName = materialName, Strength = Material.DesignCompressiveStrength };
INdmPrimitive ndmPrimitive = new NdmPrimitive { Center = center, Shape = shape, PrimitiveMaterial = primitiveMaterial }; INdmPrimitive ndmPrimitive = new NdmPrimitive { Center = center, Shape = shape, PrimitiveMaterial = primitiveMaterial };
return ndmPrimitive; return ndmPrimitive;

View File

@@ -3,6 +3,9 @@ using System.Windows;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using StructureHelper.Infrastructure.Enums; using StructureHelper.Infrastructure.Enums;
using StructureHelper.Infrastructure.Exceptions;
using StructureHelper.Infrastructure.Strings;
using StructureHelper.Infrastructure.UI.Converters.Units;
using StructureHelper.Models.Materials; using StructureHelper.Models.Materials;
using StructureHelper.UnitSystem.Systems; using StructureHelper.UnitSystem.Systems;
using StructureHelper.Windows.MainWindow; using StructureHelper.Windows.MainWindow;
@@ -16,9 +19,14 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
#region Поля #region Поля
private readonly PrimitiveType type; private readonly PrimitiveType type;
private string name;
private double centerX, centerY;
private int minElementDivision;
private double maxElementSize;
private bool captured, parameterCaptured, elementLock, paramsPanelVisibilty, popupCanBeClosed = true, borderCaptured; private bool captured, parameterCaptured, elementLock, paramsPanelVisibilty, popupCanBeClosed = true, borderCaptured;
private Brush brush; private Brush brush;
private MaterialDefinitionBase material; private MaterialDefinitionBase material;
private double prestrain_kx, prestrain_ky, prestrain_epsz;
private double opacity = 1, showedOpacity = 0, x, y, xY1, yX1, primitiveWidth, primitiveHeight, showedX, showedY; private double opacity = 1, showedOpacity = 0, x, y, xY1, yX1, primitiveWidth, primitiveHeight, showedX, showedY;
protected double delta = 0.5; protected double delta = 0.5;
private int showedZIndex = 1, zIndex; private int showedZIndex = 1, zIndex;
@@ -39,6 +47,61 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
} }
} }
public string Name
{
get => name;
set
{
OnPropertyChanged(value, ref name);
}
}
public double CenterX
{
get => centerX;
set
{
if (this is Rectangle)
{
ShowedX = value - primitiveWidth / 2d;
}
else if (this is Point)
{
Point point = this as Point;
ShowedX = value - point.Diameter / 2;
}
else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown); }
OnPropertyChanged(value, ref centerX);
}
}
public double CenterY
{
get => centerY;
set
{
if (this is Rectangle)
{
ShowedY = value - primitiveHeight / 2d;
}
else if (this is Point)
{
Point point = this as Point;
ShowedY = value - point.Diameter / 2;
}
else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown); }
OnPropertyChanged(value, ref centerY);
}
}
public int MinElementDivision
{
get => minElementDivision;
set { OnPropertyChanged(value, ref minElementDivision); }
}
public double MaxElementSize
{
get => maxElementSize;
set { OnPropertyChanged(value, ref maxElementSize); }
}
public bool Captured public bool Captured
{ {
set => OnPropertyChanged(value, ref captured); set => OnPropertyChanged(value, ref captured);
@@ -203,10 +266,11 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
PrimitiveDoubleClick = new RelayCommand(o => PrimitiveDoubleClick = new RelayCommand(o =>
{ {
PopupCanBeClosed = false; //PopupCanBeClosed = false;
Captured = false; //Captured = false;
ParamsPanelVisibilty = true; //ParamsPanelVisibilty = true;
ParameterCaptured = true; //ParameterCaptured = true;
}); });
OwnerVm = ownerVM; OwnerVm = ownerVM;
} }
@@ -215,13 +279,29 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
private void UpdateCoordinatesX(double showedX) private void UpdateCoordinatesX(double showedX)
{ {
if (Type == PrimitiveType.Rectangle) X = showedX + OwnerVm.YX1; if (this is Rectangle)
if (Type == PrimitiveType.Point) X = showedX + OwnerVm.YX1 - PrimitiveWidth / 2; {
X = showedX + OwnerVm.YX1 / UnitConstatnts.LengthConstant;
}
else if (this is Point)
{
Point point = this as Point;
X = showedX + OwnerVm.YX1 / UnitConstatnts.LengthConstant;
}
else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown); }
} }
private void UpdateCoordinatesY(double showedY) private void UpdateCoordinatesY(double showedY)
{ {
if (Type == PrimitiveType.Rectangle) Y = -showedY + OwnerVm.XY1 - PrimitiveHeight; if (this is Rectangle)
if (Type == PrimitiveType.Point) Y = -showedY + OwnerVm.XY1 - PrimitiveWidth / 2; {
Y = -showedY + OwnerVm.XY1 / UnitConstatnts.LengthConstant - PrimitiveHeight;
}
else if (this is Point)
{
Point point = this as Point;
Y = -showedY + OwnerVm.XY1 / UnitConstatnts.LengthConstant - point.Diameter;
}
else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown); }
} }
public abstract INdmPrimitive GetNdmPrimitive(IUnitSystem unitSystem); public abstract INdmPrimitive GetNdmPrimitive(IUnitSystem unitSystem);
@@ -230,7 +310,7 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
MaterialTypes materialTypes; MaterialTypes materialTypes;
if (Material is ConcreteDefinition) { materialTypes = MaterialTypes.Concrete; } if (Material is ConcreteDefinition) { materialTypes = MaterialTypes.Concrete; }
else if (Material is RebarDefinition) { materialTypes = MaterialTypes.Reinforcement; } else if (Material is RebarDefinition) { materialTypes = MaterialTypes.Reinforcement; }
else { throw new Exception("MaterialType is unknown"); } else { throw new StructureHelperException(ErrorStrings.MaterialTypeIsUnknown); }
return materialTypes; return materialTypes;
} }
} }

View File

@@ -13,6 +13,7 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
public Rectangle(double primitiveWidth, double primitiveHeight, double x, double y, MainViewModel ownerVm) : base(PrimitiveType.Rectangle, x, y, ownerVm) public Rectangle(double primitiveWidth, double primitiveHeight, double x, double y, MainViewModel ownerVm) : base(PrimitiveType.Rectangle, x, y, ownerVm)
{ {
Type = PrimitiveType.Rectangle; Type = PrimitiveType.Rectangle;
Name = "New rectangle";
PrimitiveWidth = primitiveWidth; PrimitiveWidth = primitiveWidth;
PrimitiveHeight = primitiveHeight; PrimitiveHeight = primitiveHeight;
PreviewMouseMove = new RelayCommand(o => PreviewMouseMove = new RelayCommand(o =>
@@ -34,22 +35,23 @@ namespace StructureHelper.Infrastructure.UI.DataContexts
rect.ShowedY = -(OwnerVm.PanelY - deltaY - OwnerVm.XY1 + rect.PrimitiveHeight); rect.ShowedY = -(OwnerVm.PanelY - deltaY - OwnerVm.XY1 + rect.PrimitiveHeight);
} }
}); });
CenterX = x;
ShowedX = x; CenterY = y;
ShowedY = y; MinElementDivision = 10;
MaxElementSize = Math.Min(Math.Min(PrimitiveWidth, PrimitiveHeight) / MinElementDivision, 0.01);
} }
public override INdmPrimitive GetNdmPrimitive(IUnitSystem unitSystem) public override INdmPrimitive GetNdmPrimitive(IUnitSystem unitSystem)
{ {
var width = unitSystem.ConvertLength(PrimitiveWidth); var width = PrimitiveWidth;
var height = unitSystem.ConvertLength(PrimitiveHeight); var height = PrimitiveHeight;
double centerX = unitSystem.ConvertLength(ShowedX) + width / 2; double centerX = CenterX;
double centerY = unitSystem.ConvertLength(ShowedY) + height / 2; double centerY = CenterY;
string materialName = MaterialName; string materialName = MaterialName;
ICenter center = new Center { X = centerX, Y = centerY }; ICenter center = new Center { X = centerX, Y = centerY };
IShape shape = new StructureHelperCommon.Models.Shapes.Rectangle { Height = height, Width = width, Angle = 0 }; IShape shape = new StructureHelperCommon.Models.Shapes.Rectangle { Height = height, Width = width, Angle = 0 };
IPrimitiveMaterial primitiveMaterial = new PrimitiveMaterial { MaterialType = GetMaterialTypes(), ClassName = materialName, Strength = Material.DesignCompressiveStrength }; IPrimitiveMaterial primitiveMaterial = new PrimitiveMaterial { MaterialType = GetMaterialTypes(), ClassName = materialName, Strength = Material.DesignCompressiveStrength };
INdmPrimitive ndmPrimitive = new NdmPrimitive { Center = center, Shape = shape, PrimitiveMaterial = primitiveMaterial, NdmMaxSize = 0.01, NdmMinDivision = 20 }; INdmPrimitive ndmPrimitive = new NdmPrimitive { Center = center, Shape = shape, PrimitiveMaterial = primitiveMaterial, NdmMaxSize = MaxElementSize, NdmMinDivision = MinElementDivision };
return ndmPrimitive; return ndmPrimitive;
} }
} }

View File

@@ -12,7 +12,7 @@
<StackPanel> <StackPanel>
<Ellipse Style="{StaticResource EllipseStyle}" d:DataContext="{d:DesignInstance dataContexts:Point}"> <Ellipse Style="{StaticResource EllipseStyle}" d:DataContext="{d:DesignInstance dataContexts:Point}">
<i:Interaction.Triggers> <i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseDown"> <!--<i:EventTrigger EventName="PreviewMouseDown">
<i:InvokeCommandAction Command="{Binding PrimitiveLeftButtonDown}" CommandParameter="{Binding}"/> <i:InvokeCommandAction Command="{Binding PrimitiveLeftButtonDown}" CommandParameter="{Binding}"/>
</i:EventTrigger> </i:EventTrigger>
<i:EventTrigger EventName="PreviewMouseUp"> <i:EventTrigger EventName="PreviewMouseUp">
@@ -20,10 +20,10 @@
</i:EventTrigger> </i:EventTrigger>
<i:EventTrigger EventName="PreviewMouseMove"> <i:EventTrigger EventName="PreviewMouseMove">
<i:InvokeCommandAction Command="{Binding PreviewMouseMove}" CommandParameter="{Binding}"/> <i:InvokeCommandAction Command="{Binding PreviewMouseMove}" CommandParameter="{Binding}"/>
</i:EventTrigger> </i:EventTrigger>-->
<mouseEventTriggers:DoubleClickEventTrigger EventName="MouseDown"> <!--<mouseEventTriggers:DoubleClickEventTrigger EventName="MouseDown">
<i:InvokeCommandAction Command="{Binding PrimitiveDoubleClick}" CommandParameter="{Binding}"/> <i:InvokeCommandAction Command="{Binding PrimitiveDoubleClick}" CommandParameter="{Binding}"/>
</mouseEventTriggers:DoubleClickEventTrigger> </mouseEventTriggers:DoubleClickEventTrigger>-->
</i:Interaction.Triggers> </i:Interaction.Triggers>
</Ellipse> </Ellipse>
<userControls:PrimitivePopup Type="Rectangle" IsOpen="{Binding ParamsPanelVisibilty}" d:DataContext="{d:DesignInstance dataContexts:PrimitiveBase}"/> <userControls:PrimitivePopup Type="Rectangle" IsOpen="{Binding ParamsPanelVisibilty}" d:DataContext="{d:DesignInstance dataContexts:PrimitiveBase}"/>

View File

@@ -15,7 +15,7 @@
<Grid> <Grid>
<Rectangle Style="{StaticResource RectangleStyle}"> <Rectangle Style="{StaticResource RectangleStyle}">
<i:Interaction.Triggers> <i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseDown"> <!--<i:EventTrigger EventName="PreviewMouseDown">
<i:InvokeCommandAction Command="{Binding PrimitiveLeftButtonDown}" CommandParameter="{Binding}"/> <i:InvokeCommandAction Command="{Binding PrimitiveLeftButtonDown}" CommandParameter="{Binding}"/>
</i:EventTrigger> </i:EventTrigger>
<i:EventTrigger EventName="PreviewMouseUp"> <i:EventTrigger EventName="PreviewMouseUp">
@@ -23,13 +23,13 @@
</i:EventTrigger> </i:EventTrigger>
<i:EventTrigger EventName="PreviewMouseMove"> <i:EventTrigger EventName="PreviewMouseMove">
<i:InvokeCommandAction Command="{Binding PreviewMouseMove}" CommandParameter="{Binding}"/> <i:InvokeCommandAction Command="{Binding PreviewMouseMove}" CommandParameter="{Binding}"/>
</i:EventTrigger> </i:EventTrigger>-->
<mouseEventTriggers:DoubleClickEventTrigger EventName="MouseDown"> <!--<mouseEventTriggers:DoubleClickEventTrigger EventName="MouseDown">
<i:InvokeCommandAction Command="{Binding PrimitiveDoubleClick}" CommandParameter="{Binding}"/> <i:InvokeCommandAction Command="{Binding PrimitiveDoubleClick}" CommandParameter="{Binding}"/>
</mouseEventTriggers:DoubleClickEventTrigger> </mouseEventTriggers:DoubleClickEventTrigger>-->
</i:Interaction.Triggers> </i:Interaction.Triggers>
</Rectangle> </Rectangle>
<Rectangle Cursor="SizeNWSE" Width="20" Height="20" Fill="{Binding Brush}" VerticalAlignment="Bottom" HorizontalAlignment="Right"> <Rectangle Cursor="SizeNWSE" Fill="{Binding Brush}" VerticalAlignment="Bottom" HorizontalAlignment="Right">
<i:Interaction.Triggers> <i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseDown"> <i:EventTrigger EventName="PreviewMouseDown">
<i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.LeftButtonDown}" CommandParameter="{Binding}"/> <i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.LeftButtonDown}" CommandParameter="{Binding}"/>

View File

@@ -5,12 +5,16 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dataContexts="clr-namespace:StructureHelper.Infrastructure.UI.DataContexts" xmlns:dataContexts="clr-namespace:StructureHelper.Infrastructure.UI.DataContexts"
xmlns:converters ="clr-namespace:StructureHelper.Infrastructure.UI.Converters.Units"
mc:Ignorable="d" > mc:Ignorable="d" >
<converters:Length x:Key="LengthConverter"/>
<converters:Area x:Key="AreaConverter"/>
<Style TargetType="Shape" x:Key="ShapeStyle"> <Style TargetType="Shape" x:Key="ShapeStyle">
<Setter Property="Fill" Value="{Binding Brush, Mode=TwoWay}"/> <Setter Property="Fill" Value="{Binding Brush, Mode=TwoWay}"/>
<Setter Property="Opacity" Value="{Binding Opacity, Mode=TwoWay}"/> <Setter Property="Opacity" Value="{Binding Opacity, Mode=TwoWay}"/>
<Setter Property="ToolTip"> <!--<Setter Property="ToolTip">
<Setter.Value> <Setter.Value>
<ToolTip Background="White" BorderBrush="Black" BorderThickness="1"> <ToolTip Background="White" BorderBrush="Black" BorderThickness="1">
<Grid> <Grid>
@@ -38,18 +42,18 @@
</Grid> </Grid>
</ToolTip> </ToolTip>
</Setter.Value> </Setter.Value>
</Setter> </Setter>-->
</Style> </Style>
<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 PrimitiveWidth}"/> <Setter Property="Width" Value="{Binding Diameter, Converter={StaticResource LengthConverter}}"/>
<Setter Property="Height" Value="{Binding PrimitiveWidth}"/> <Setter Property="Height" Value="{Binding Diameter, Converter={StaticResource LengthConverter}}"/>
</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}"/> <Setter Property="Width" Value="{Binding PrimitiveWidth, Converter={StaticResource LengthConverter}}"/>
<Setter Property="Height" Value="{Binding PrimitiveHeight}"/> <Setter Property="Height" Value="{Binding PrimitiveHeight, Converter={StaticResource LengthConverter}}"/>
</Style> </Style>
</ResourceDictionary> </ResourceDictionary>

View File

@@ -1,55 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StructureHelper.Infrastructure.UI.DataContexts;
using StructureHelperCommon.Models.NdmPrimitives;
using StructureHelperCommon.Models.Shapes;
using Point = StructureHelper.Infrastructure.UI.DataContexts.Point;
using Rectangle = StructureHelper.Infrastructure.UI.DataContexts.Rectangle;
namespace StructureHelper.Services
{
public interface IPrimitiveRepository
{
void Add(PrimitiveBase primitive);
void Delete(PrimitiveBase primitive);
IEnumerable<Point> GetPoints();
IEnumerable<Rectangle> GetRectangles();
}
class PrimitiveRepository : IPrimitiveRepository
{
List<Point> points = new List<Point>();
List<Rectangle> rectangles = new List<Rectangle>();
public void Add(PrimitiveBase primitive)
{
switch (primitive)
{
case Point point:
points.Add(point);
break;
case Rectangle rectangle:
rectangles.Add(rectangle);
break;
}
}
public void Delete(PrimitiveBase primitive)
{
switch (primitive)
{
case Point point:
points.Remove(point);
break;
case Rectangle rectangle:
rectangles.Remove(rectangle);
break;
}
}
public IEnumerable<Point> GetPoints() => points;
public IEnumerable<Rectangle> GetRectangles() => rectangles;
}
}

View File

@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StructureHelper.Infrastructure.UI.DataContexts;
using StructureHelperCommon.Models.NdmPrimitives;
using StructureHelperCommon.Models.Shapes;
using Point = StructureHelper.Infrastructure.UI.DataContexts.Point;
using Rectangle = StructureHelper.Infrastructure.UI.DataContexts.Rectangle;
namespace StructureHelper.Services.Primitives
{
public interface IPrimitiveRepository
{
IEnumerable<PrimitiveBase> Primitives { get; }
void Add(PrimitiveBase primitive);
void Delete(PrimitiveBase primitive);
void Clear();
}
}

View File

@@ -0,0 +1,36 @@
using StructureHelper.Infrastructure.UI.DataContexts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelper.Services.Primitives
{
public class PrimitiveRepository : IPrimitiveRepository
{
List<PrimitiveBase> primitives;
public IEnumerable<PrimitiveBase> Primitives { get => primitives; }
public PrimitiveRepository()
{
primitives = new List<PrimitiveBase>();
}
public void Add(PrimitiveBase primitive)
{
primitives.Add(primitive);
}
public void Clear()
{
primitives = new List<PrimitiveBase>();
}
public void Delete(PrimitiveBase primitive)
{
primitives.Remove(primitive);
}
}
}

View File

@@ -15,6 +15,22 @@
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>1</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@@ -34,6 +50,20 @@
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>485E3BCF396A57578712F0EAAD11D48E4FE19BD6</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>StructureHelper_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>true</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Autofac, Version=6.4.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL"> <Reference Include="Autofac, Version=6.4.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
@@ -102,10 +132,17 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
</ApplicationDefinition> </ApplicationDefinition>
<Compile Include="Infrastructure\Enums\PrimitiveType.cs" /> <Compile Include="Infrastructure\Enums\PrimitiveType.cs" />
<Compile Include="Infrastructure\Exceptions\StructureHelperException.cs" />
<Compile Include="Infrastructure\Strings\ErrorStrings.cs" />
<Compile Include="Infrastructure\UI\Converters\Units\Area.cs" />
<Compile Include="Infrastructure\UI\Converters\Units\Length.cs" />
<Compile Include="Infrastructure\UI\Converters\Units\UnitBase.cs" />
<Compile Include="Infrastructure\UI\Converters\Units\UnitConstatnts.cs" />
<Compile Include="Infrastructure\UI\UserControls\PrimitivePopup.xaml.cs"> <Compile Include="Infrastructure\UI\UserControls\PrimitivePopup.xaml.cs">
<DependentUpon>PrimitivePopup.xaml</DependentUpon> <DependentUpon>PrimitivePopup.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Services\PrimitiveService.cs" /> <Compile Include="Services\Primitives\PrimitiveRepository.cs" />
<Compile Include="Services\Primitives\IPrimitiveRepository.cs" />
<Compile Include="Services\Reports\CalculationReports\IIsoFieldReport.cs" /> <Compile Include="Services\Reports\CalculationReports\IIsoFieldReport.cs" />
<Compile Include="Services\Reports\CalculationReports\IsoFieldReport.cs" /> <Compile Include="Services\Reports\CalculationReports\IsoFieldReport.cs" />
<Compile Include="Services\Reports\IReport.cs" /> <Compile Include="Services\Reports\IReport.cs" />
@@ -158,8 +195,12 @@
<Compile Include="Infrastructure\UI\DataTemplates\RectangleTemplate.xaml.cs"> <Compile Include="Infrastructure\UI\DataTemplates\RectangleTemplate.xaml.cs">
<DependentUpon>RectangleTemplate.xaml</DependentUpon> <DependentUpon>RectangleTemplate.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Windows\PrimitiveProperiesWindow\PrimitivePropertiesView.xaml.cs">
<DependentUpon>PrimitivePropertiesView.xaml</DependentUpon>
</Compile>
<Compile Include="Windows\ViewModels\Calculations\CalculationProperies\CalculationPropertyViewModel.cs" /> <Compile Include="Windows\ViewModels\Calculations\CalculationProperies\CalculationPropertyViewModel.cs" />
<Compile Include="Windows\ViewModels\Calculations\CalculationResult\CalculationResultViewModel.cs" /> <Compile Include="Windows\ViewModels\Calculations\CalculationResult\CalculationResultViewModel.cs" />
<Compile Include="Windows\ViewModels\PrimitiveProperties\PrimitivePropertiesViewModel.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Infrastructure\UI\Triggers\MouseEventTriggers\DoubleClickEventTrigger.cs" /> <Compile Include="Infrastructure\UI\Triggers\MouseEventTriggers\DoubleClickEventTrigger.cs" />
@@ -172,6 +213,7 @@
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<None Include="packages.config" /> <None Include="packages.config" />
<None Include="StructureHelper_TemporaryKey.pfx" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />
@@ -217,6 +259,10 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="Windows\PrimitiveProperiesWindow\PrimitivePropertiesView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Logics\" /> <Folder Include="Logics\" />
@@ -235,5 +281,17 @@
<Name>StructureHelperLogics</Name> <Name>StructureHelperLogics</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 и x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>publish\</PublishUrlHistory>
<InstallUrlHistory />
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>ru-RU</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>
</PropertyGroup>
</Project>

Binary file not shown.

View File

@@ -4,6 +4,7 @@ using LoaderCalculator.Data.Ndms;
using LoaderCalculator.Data.ResultData; using LoaderCalculator.Data.ResultData;
using LoaderCalculator.Data.SourceData; using LoaderCalculator.Data.SourceData;
using StructureHelper.Services; using StructureHelper.Services;
using StructureHelper.Services.Primitives;
using StructureHelper.UnitSystem; using StructureHelper.UnitSystem;
using StructureHelper.UnitSystem.Systems; using StructureHelper.UnitSystem.Systems;
using StructureHelperLogics.Infrastructures.CommonEnums; using StructureHelperLogics.Infrastructures.CommonEnums;
@@ -37,17 +38,13 @@ namespace StructureHelper.Windows.MainWindow
public IStrainMatrix Calculate(double mx, double my, double nz) public IStrainMatrix Calculate(double mx, double my, double nz)
{ {
var unitSystem = unitSystemService.GetCurrentSystem(); var unitSystem = unitSystemService.GetCurrentSystem();
return calculationService.GetPrimitiveStrainMatrix(primitiveRepository.GetRectangles() return calculationService.GetPrimitiveStrainMatrix(primitiveRepository.Primitives.Select(x => x.GetNdmPrimitive(unitSystem)).ToArray(), mx, my, nz);
.Select(x => x.GetNdmPrimitive(unitSystem))
.Concat(primitiveRepository.GetPoints().Select(x => x.GetNdmPrimitive(unitSystem))).ToArray(), mx, my, nz);
} }
public IEnumerable<INdm> GetNdms() public IEnumerable<INdm> GetNdms()
{ {
var unitSystem = unitSystemService.GetCurrentSystem(); var unitSystem = unitSystemService.GetCurrentSystem();
var ndmPrimitives = primitiveRepository.GetRectangles() var ndmPrimitives = primitiveRepository.Primitives.Select(x => x.GetNdmPrimitive(unitSystem)).ToArray();
.Select(x => x.GetNdmPrimitive(unitSystem))
.Concat(primitiveRepository.GetPoints().Select(x => x.GetNdmPrimitive(unitSystem))).ToArray();
//Настройки триангуляции, пока опции могут быть только такие //Настройки триангуляции, пока опции могут быть только такие
ITriangulationOptions options = new TriangulationOptions { LimiteState = LimitStates.Collapse, CalcTerm = CalcTerms.ShortTerm }; ITriangulationOptions options = new TriangulationOptions { LimiteState = LimitStates.Collapse, CalcTerm = CalcTerms.ShortTerm };

View File

@@ -10,10 +10,14 @@
xmlns:mouseEventTriggers="clr-namespace:StructureHelper.Infrastructure.UI.Triggers.MouseEventTriggers" xmlns:mouseEventTriggers="clr-namespace:StructureHelper.Infrastructure.UI.Triggers.MouseEventTriggers"
xmlns:local="clr-namespace:StructureHelper.Windows.MainWindow" xmlns:local="clr-namespace:StructureHelper.Windows.MainWindow"
xmlns:enums="clr-namespace:StructureHelper.Infrastructure.Enums" xmlns:enums="clr-namespace:StructureHelper.Infrastructure.Enums"
xmlns:converters ="clr-namespace:StructureHelper.Infrastructure.UI.Converters.Units"
mc:Ignorable="d" mc:Ignorable="d"
d:DataContext="{d:DesignInstance local:MainViewModel}" d:DataContext="{d:DesignInstance local:MainViewModel}"
Title="StructureHelper" Height="700" Width="1000"> Title="StructureHelper" Height="700" Width="1000">
<Window.Resources> <Window.Resources>
<converters:Length x:Key="LengthConverter"/>
<converters:Area x:Key="AreaConverter"/>
<DataTemplate DataType="{x:Type dataContexts:Rectangle}"> <DataTemplate DataType="{x:Type dataContexts:Rectangle}">
<dataTemplates:RectangleTemplate/> <dataTemplates:RectangleTemplate/>
</DataTemplate> </DataTemplate>
@@ -36,8 +40,12 @@
</MenuItem> </MenuItem>
<MenuItem Header="Edit"> <MenuItem Header="Edit">
<MenuItem Header="Primitives"> <MenuItem Header="Primitives">
<Button Content="Add Rectangle" Command="{Binding AddPrimitive}" CommandParameter="{x:Static enums:PrimitiveType.Rectangle}"/> <MenuItem Header="Add">
<Button Content="Add Point" Command="{Binding AddPrimitive}" CommandParameter="{x:Static enums:PrimitiveType.Point}"/> <Button Content="Add Rectangle" Command="{Binding AddPrimitive}" CommandParameter="{x:Static enums:PrimitiveType.Rectangle}"/>
<Button Content="Add Point" Command="{Binding AddPrimitive}" CommandParameter="{x:Static enums:PrimitiveType.Point}"/>
</MenuItem>
<Button Content="Edit primitive" Command="{Binding EditPrimitive}"/>
<Button Content="Delete primitive" Command="{Binding DeletePrimitive}"/>
</MenuItem> </MenuItem>
<Button Content="Calculation properties" Command="{Binding Path=EditCalculationPropertyCommand}"/> <Button Content="Calculation properties" Command="{Binding Path=EditCalculationPropertyCommand}"/>
</MenuItem> </MenuItem>
@@ -55,8 +63,35 @@
</Expander> </Expander>
<Expander Header="Geometry" ExpandDirection="Down" MinWidth="20" > <Expander Header="Geometry" ExpandDirection="Down" MinWidth="20" >
<ListBox ItemsSource="{Binding Primitives}"> <ListBox ItemsSource="{Binding Primitives}" SelectedItem="{Binding SelectedPrimitive}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="0" Margin="3" Fill="{Binding Brush}" />
<TextBlock Grid.Column="1" Text="{Binding Name}"/>
</Grid>
<!--<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1"/>
<ColumnDefinition MinWidth="50"/>
</Grid.ColumnDefinitions>
<Viewbox Grid.RowSpan="2">
</Viewbox>
<TextBlock Grid.Column="1" Text="{Binding Name}"/>
<Button Grid.Column="1" Grid.Row="1" Content="..."/>
</Grid>-->
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox> </ListBox>
</Expander> </Expander>
</StackPanel> </StackPanel>
@@ -111,8 +146,8 @@
<ItemsControl.ItemContainerStyle> <ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter"> <Style TargetType="ContentPresenter">
<Setter Property="Canvas.ZIndex" Value="{Binding ZIndex}"/> <Setter Property="Canvas.ZIndex" Value="{Binding ZIndex}"/>
<Setter Property="Canvas.Left" Value="{Binding X}"/> <Setter Property="Canvas.Left" Value="{Binding X, Converter={StaticResource LengthConverter}}"/>
<Setter Property="Canvas.Top" Value="{Binding Y}"/> <Setter Property="Canvas.Top" Value="{Binding Y, Converter={StaticResource LengthConverter}}"/>
</Style> </Style>
</ItemsControl.ItemContainerStyle> </ItemsControl.ItemContainerStyle>
</ItemsControl> </ItemsControl>
@@ -121,14 +156,12 @@
</Border> </Border>
</Grid> </Grid>
<StackPanel Grid.Row="2" Orientation="Horizontal"> <StackPanel Grid.Row="2" Orientation="Horizontal">
<Button VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5" Content="Справочник" Command="{Binding OpenMaterialCatalog}"/> <!--<Button VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5" Content="Справочник" Command="{Binding OpenMaterialCatalog}"/>
<Button VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5" Content="Система едениц" Command="{Binding OpenUnitsSystemSettings}"/> <Button VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5" Content="Units" Command="{Binding OpenUnitsSystemSettings}"/>
<Label VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5" Content="{Binding UnitsSystemName}"/> <Label VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5" Content="{Binding UnitsSystemName}"/>-->
</StackPanel> </StackPanel>
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0.333,0.333,39.667" Grid.RowSpan="2" Width="519"> <StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0.333,0.333,39.667" Grid.RowSpan="2" Width="519">
<Button VerticalAlignment="Center" Margin="5" Content="Добавить тестовые примитивы" Command="{Binding AddTestCase}"/> <Button VerticalAlignment="Center" Margin="5" Content="Add test primitives" Command="{Binding AddTestCase}"/>
<Button VerticalAlignment="Center" Margin="5" Content="Добавить прямоугольник" Command="{Binding AddPrimitive}" CommandParameter="{x:Static enums:PrimitiveType.Rectangle}"/>
<Button VerticalAlignment="Center" Margin="5" Content="Добавить точку" Command="{Binding AddPrimitive}" CommandParameter="{x:Static enums:PrimitiveType.Point}"/>
</StackPanel> </StackPanel>
</Grid> </Grid>
</Window> </Window>

View File

@@ -1,5 +1,6 @@
using System.Windows; using System.Windows;
using StructureHelper.Services; using StructureHelper.Services;
using StructureHelper.Services.Primitives;
namespace StructureHelper.Windows.MainWindow namespace StructureHelper.Windows.MainWindow
{ {

View File

@@ -22,6 +22,10 @@ using StructureHelper.Windows.CalculationWindows.CalculationPropertyWindow;
using StructureHelperLogics.Services; using StructureHelperLogics.Services;
using StructureHelper.Windows.CalculationWindows.CalculationResultWindow; using StructureHelper.Windows.CalculationWindows.CalculationResultWindow;
using StructureHelper.Windows.ViewModels.Calculations.CalculationResult; using StructureHelper.Windows.ViewModels.Calculations.CalculationResult;
using StructureHelper.Services.Primitives;
using StructureHelper.Windows.PrimitiveProperiesWindow;
using StructureHelper.Infrastructure.Exceptions;
using StructureHelper.Infrastructure.Strings;
namespace StructureHelper.Windows.MainWindow namespace StructureHelper.Windows.MainWindow
{ {
@@ -30,6 +34,8 @@ namespace StructureHelper.Windows.MainWindow
private readonly double scaleRate = 1.1; private readonly double scaleRate = 1.1;
private IPrimitiveRepository PrimitiveRepository { get; } private IPrimitiveRepository PrimitiveRepository { get; }
public PrimitiveBase SelectedPrimitive { get; set; }
private readonly UnitSystemService unitSystemService; private readonly UnitSystemService unitSystemService;
private MainModel Model { get; } private MainModel Model { get; }
@@ -102,6 +108,10 @@ namespace StructureHelper.Windows.MainWindow
set => OnPropertyChanged(value, ref yY2); set => OnPropertyChanged(value, ref yY2);
} }
public ICommand AddPrimitive { get; } public ICommand AddPrimitive { get; }
public ICommand Calculate { get; }
public ICommand DeletePrimitive { get; }
public ICommand EditCalculationPropertyCommand { get; }
public ICommand EditPrimitive { get; }
public ICommand AddTestCase { get; } public ICommand AddTestCase { get; }
public ICommand LeftButtonDown { get; } public ICommand LeftButtonDown { get; }
public ICommand LeftButtonUp { get; } public ICommand LeftButtonUp { get; }
@@ -115,13 +125,12 @@ namespace StructureHelper.Windows.MainWindow
public ICommand SetInBackOfAll { get; } public ICommand SetInBackOfAll { get; }
public ICommand ScaleCanvasDown { get; } public ICommand ScaleCanvasDown { get; }
public ICommand ScaleCanvasUp { get; } public ICommand ScaleCanvasUp { get; }
public ICommand Calculate { get; }
public ICommand SetPopupCanBeClosedTrue { get; } public ICommand SetPopupCanBeClosedTrue { get; }
public ICommand SetPopupCanBeClosedFalse { get; } public ICommand SetPopupCanBeClosedFalse { get; }
public ICommand EditCalculationPropertyCommand { get; }
public string UnitsSystemName => unitSystemService.GetCurrentSystem().Name; public string UnitsSystemName => unitSystemService.GetCurrentSystem().Name;
private double delta = 0.5; private double delta = 0.0005;
public MainViewModel(MainModel model, IPrimitiveRepository primitiveRepository, UnitSystemService unitSystemService) public MainViewModel(MainModel model, IPrimitiveRepository primitiveRepository, UnitSystemService unitSystemService)
{ {
@@ -131,8 +140,8 @@ namespace StructureHelper.Windows.MainWindow
CanvasWidth = 1500; CanvasWidth = 1500;
CanvasHeight = 1000; CanvasHeight = 1000;
XX2 = CanvasWidth; XX2 = CanvasWidth;
XY1 = CanvasHeight / 2; XY1 = CanvasHeight / 2d;
YX1 = CanvasWidth / 2; YX1 = CanvasWidth / 2d;
YY2 = CanvasHeight; YY2 = CanvasHeight;
calculationProperty = new CalculationProperty(); calculationProperty = new CalculationProperty();
@@ -149,15 +158,15 @@ namespace StructureHelper.Windows.MainWindow
{ {
if (o is Rectangle rect && rect.BorderCaptured && !rect.ElementLock) if (o is Rectangle rect && rect.BorderCaptured && !rect.ElementLock)
{ {
if (rect.PrimitiveWidth % 10 < delta || rect.PrimitiveWidth % 10 >= delta) if (rect.PrimitiveWidth % 10d < delta || rect.PrimitiveWidth % 10d >= delta)
rect.PrimitiveWidth = Math.Round(PanelX / 10) * 10 - rect.X + 10; rect.PrimitiveWidth = Math.Round(PanelX / 10d) * 10d - rect.X + 10d;
else else
rect.PrimitiveWidth = PanelX - rect.X + 10; rect.PrimitiveWidth = PanelX - rect.X + 10d;
if (rect.PrimitiveHeight % 10 < delta || rect.PrimitiveHeight % 10 >= delta) if (rect.PrimitiveHeight % 10d < delta || rect.PrimitiveHeight % 10d >= delta)
rect.PrimitiveHeight = Math.Round(PanelY / 10) * 10 - rect.Y + 10; rect.PrimitiveHeight = Math.Round(PanelY / 10d) * 10d - rect.Y + 10d;
else else
rect.PrimitiveHeight = PanelY - rect.Y + 10; rect.PrimitiveHeight = PanelY - rect.Y + 10d;
} }
}); });
ClearSelection = new RelayCommand(o => ClearSelection = new RelayCommand(o =>
@@ -228,13 +237,30 @@ namespace StructureHelper.Windows.MainWindow
AddPrimitive = new RelayCommand(o => AddPrimitive = new RelayCommand(o =>
{ {
if (!(o is PrimitiveType primitiveType)) return; if (!(o is PrimitiveType primitiveType)) return;
var primitive = primitiveType == PrimitiveType.Point PrimitiveBase primitive;
? (PrimitiveBase)new Point(50, 0, 0, this) if (primitiveType == PrimitiveType.Rectangle)
: (PrimitiveBase)new Rectangle(60, 40, 0, 0, this); {
primitive = new Rectangle(0.60, 0.40, 0, 0, this);
}
else if (primitiveType == PrimitiveType.Point)
{
primitive = new Point(0.50, 0, 0, this);
}
else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + nameof(primitiveType)); }
Primitives.Add(primitive); Primitives.Add(primitive);
PrimitiveRepository.Add(primitive); PrimitiveRepository.Add(primitive);
}); });
DeletePrimitive = new RelayCommand(
o=>DeleteSelectedPrimitive(),
o => SelectedPrimitive != null
);
EditPrimitive = new RelayCommand(
o => EditSelectedPrimitive(),
o => SelectedPrimitive != null
);
AddTestCase = new RelayCommand(o => AddTestCase = new RelayCommand(o =>
{ {
foreach (var primitive in GetTestCasePrimitives()) foreach (var primitive in GetTestCasePrimitives())
@@ -247,12 +273,6 @@ namespace StructureHelper.Windows.MainWindow
Calculate = new RelayCommand(o => Calculate = new RelayCommand(o =>
{ {
//var matrix = model.Calculate(10e3, 0d, 0d);
//MessageBox.Show(
// $"{nameof(matrix.EpsZ)} = {matrix.EpsZ};\n" +
// $"{nameof(matrix.Kx)} = {matrix.Kx};\n" +
// $"{nameof(matrix.Ky)} = {matrix.Ky}",
// "StructureHelper");
CalculateResult(); CalculateResult();
}); });
@@ -271,6 +291,30 @@ namespace StructureHelper.Windows.MainWindow
}); });
} }
private void DeleteSelectedPrimitive()
{
if (! (SelectedPrimitive is null))
{
var dialogResult = MessageBox.Show("Delete primitive?", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dialogResult == DialogResult.Yes)
{
Primitives.Remove(SelectedPrimitive);
PrimitiveRepository.Delete(SelectedPrimitive);
}
}
else { MessageBox.Show("Selection is changed", "Please, select primitive", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); }
}
private void EditSelectedPrimitive()
{
if (!(SelectedPrimitive is null))
{
var wnd = new PrimitiveProperties(SelectedPrimitive);
wnd.ShowDialog();
}
else { MessageBox.Show("Selection is changed", "Please, select primitive", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); }
}
private void CalculateResult() private void CalculateResult()
{ {
IEnumerable<INdm> ndms = Model.GetNdms(); IEnumerable<INdm> ndms = Model.GetNdms();
@@ -282,17 +326,18 @@ namespace StructureHelper.Windows.MainWindow
private IEnumerable<PrimitiveBase> GetTestCasePrimitives() private IEnumerable<PrimitiveBase> GetTestCasePrimitives()
{ {
var width = 400; var width = 0.4d;
var height = 600; var height = 0.6d;
var d1 = 12; var area1 = Math.PI * 0.012d * 0.012d / 4d;
var d2 = 25; var area2 = Math.PI * 0.025d * 0.025d / 4d;
var gap = 0.05d;
var rectMaterial = new ConcreteDefinition("C40", 0, 40, 0, 1.3, 1.5); var rectMaterial = new ConcreteDefinition("C40", 0, 40, 0, 1.3, 1.5);
var pointMaterial = new RebarDefinition("S400", 2, 400, 400, 1.15, 1.15); var pointMaterial = new RebarDefinition("S400", 2, 400, 400, 1.15, 1.15);
yield return new Rectangle(width, height, -width / 2, -height / 2, this) { Material = rectMaterial, MaterialName = rectMaterial.MaterialClass }; yield return new Rectangle(width, height, 0, 0, this) { Material = rectMaterial, MaterialName = rectMaterial.MaterialClass };
yield return new Point(d1, -width / 2 + 50, -height / 2 + 50, this) { Material = pointMaterial, MaterialName = pointMaterial.MaterialClass }; yield return new Point(area1, -width / 2 + gap, -height / 2 + gap, this) { Material = pointMaterial, MaterialName = pointMaterial.MaterialClass };
yield return new Point(d1, width / 2 - 50, -height / 2 + 50, this) { Material = pointMaterial, MaterialName = pointMaterial.MaterialClass }; yield return new Point(area1, width / 2 - gap, -height / 2 + gap, this) { Material = pointMaterial, MaterialName = pointMaterial.MaterialClass };
yield return new Point(d2, -width / 2 + 50, height / 2 - 50, this) { Material = pointMaterial, MaterialName = pointMaterial.MaterialClass }; yield return new Point(area2, -width / 2 + gap, height / 2 - gap, this) { Material = pointMaterial, MaterialName = pointMaterial.MaterialClass };
yield return new Point(d2, width / 2 - 50, height / 2 - 50, this) { Material = pointMaterial, MaterialName = pointMaterial.MaterialClass }; yield return new Point(area2, width / 2 - gap, height / 2 - gap, this) { Material = pointMaterial, MaterialName = pointMaterial.MaterialClass };
} }
private void EditCalculationProperty() private void EditCalculationProperty()
{ {

View File

@@ -0,0 +1,116 @@
<Window x:Class="StructureHelper.Windows.PrimitiveProperiesWindow.PrimitiveProperties"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:StructureHelper.Windows.PrimitiveProperiesWindow"
xmlns:vm="clr-namespace:StructureHelper.Windows.ViewModels.PrimitiveProperties"
xmlns:converters ="clr-namespace:StructureHelper.Infrastructure.UI.Converters.Units"
d:DataContext="{d:DesignInstance vm:PrimitivePropertiesViewModel}"
mc:Ignorable="d"
Title="PrimitiveProperties" Height="450" Width="300" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
<Window.Resources>
<converters:Length x:Key="LengthConverter"/>
<converters:Area x:Key="AreaConverter"/>
<DataTemplate x:Key="RectangleProperties">
<Expander Header="Rectangle" IsExpanded="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="22"/>
<RowDefinition Height="22"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</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}"/>
</Grid>
</Expander>
</DataTemplate>
<DataTemplate x:Key="PointProperties">
<Expander Header="Point" IsExpanded="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="22"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<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}"/>
</Grid>
</Expander>
</DataTemplate>
<DataTemplate x:Key="TriangulationProperties">
<Expander Header="Triangulation" IsExpanded="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="22"/>
<RowDefinition Height="22"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition/>
</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}"/>
</Grid>
</Expander>
</DataTemplate>
</Window.Resources>
<ScrollViewer>
<StackPanel x:Name="StpProperties">
<Expander Header="Common properties" IsExpanded="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="22"/>
<RowDefinition Height="22"/>
<RowDefinition Height="22"/>
<RowDefinition Height="22"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Text="Name"/>
<TextBlock Grid.Row="1" Text="Name of material"/>
<TextBlock Grid.Row="2" Text="Center X"/>
<TextBlock Grid.Row="3" Text="Center Y"/>
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding Name}"/>
<StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
<ComboBox HorizontalAlignment="Left"/>
<Button Width="50" Content="...">
</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}"/>
</Grid>
</Expander>
<!--<Expander Header="Prestrain" IsExpanded="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="22"/>
<RowDefinition Height="22"/>
<RowDefinition Height="22"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Text="k_x"/>
<TextBlock Grid.Row="1" Text="k_y"/>
<TextBlock Grid.Row="2" Text="epsilon_z"/>
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding Prestrain_kx, ValidatesOnDataErrors=True}"/>
<TextBox Grid.Row="1" Grid.Column="1" Margin="1" Text="{Binding Prestrain_kx, ValidatesOnDataErrors=True}"/>
<TextBox Grid.Row="2" Grid.Column="1" Margin="1" Text="{Binding Prestrain_kx, ValidatesOnDataErrors=True}"/>
</Grid>
</Expander>-->
</StackPanel>
</ScrollViewer>
</Window>

View File

@@ -0,0 +1,64 @@
using StructureHelper.Infrastructure.Enums;
using StructureHelper.Infrastructure.UI.DataContexts;
using StructureHelper.Windows.ViewModels.PrimitiveProperties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Xml.Linq;
using Point = StructureHelper.Infrastructure.UI.DataContexts.Point;
using Rectangle = StructureHelper.Infrastructure.UI.DataContexts.Rectangle;
namespace StructureHelper.Windows.PrimitiveProperiesWindow
{
/// <summary>
/// Логика взаимодействия для PrimitiveProperties.xaml
/// </summary>
public partial class PrimitiveProperties : Window
{
PrimitiveBase primitive;
private PrimitivePropertiesViewModel viewModel;
public PrimitiveProperties(PrimitiveBase primitive)
{
this.primitive = primitive;
viewModel = new PrimitivePropertiesViewModel(this.primitive);
this.DataContext = viewModel;
InitializeComponent();
if (primitive is Rectangle) { AddPrimitiveProperties(PrimitiveType.Rectangle); }
else if (primitive is Point) { AddPrimitiveProperties(PrimitiveType.Point); }
else { throw new Exception("Type of object is unknown"); }
}
private void AddPrimitiveProperties(PrimitiveType type)
{
List<string> names = new List<string>();
if (type == PrimitiveType.Rectangle)
{
names.Add("TriangulationProperties");
names.Add("RectangleProperties");
}
else if (type == PrimitiveType.Point)
{
names.Add("PointProperties");
}
else { throw new Exception("Type of object is unknown"); }
foreach (var name in names)
{
ContentControl contentControl = new ContentControl();
contentControl.SetResourceReference(ContentControl.ContentTemplateProperty, name);
Binding binding = new Binding();
binding.Source = viewModel;
contentControl.SetBinding(ContentControl.ContentProperty, binding);
StpProperties.Children.Add(contentControl);
}
}
}
}

View File

@@ -24,7 +24,7 @@ namespace StructureHelper.Windows.ViewModels.Calculations.CalculationProperies
set set
{ {
calculationProperty.IterationProperty.Accuracy = value; calculationProperty.IterationProperty.Accuracy = value;
OnPropertyChanged("Accuracy"); OnPropertyChanged(nameof(IterationAccuracy));
} }
} }
public int MaxIterationCount public int MaxIterationCount
@@ -36,7 +36,7 @@ namespace StructureHelper.Windows.ViewModels.Calculations.CalculationProperies
set set
{ {
calculationProperty.IterationProperty.MaxIterationCount = value; calculationProperty.IterationProperty.MaxIterationCount = value;
OnPropertyChanged("MaxIterationCount"); OnPropertyChanged(nameof(MaxIterationCount));
} }
} }
public IForceCombination SelectedCombination { get; set; } public IForceCombination SelectedCombination { get; set; }

View File

@@ -0,0 +1,174 @@
using StructureHelper.Infrastructure;
using StructureHelper.Infrastructure.UI.DataContexts;
using StructureHelperCommon.Models.Shapes;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using Point = StructureHelper.Infrastructure.UI.DataContexts.Point;
using Rectangle = StructureHelper.Infrastructure.UI.DataContexts.Rectangle;
namespace StructureHelper.Windows.ViewModels.PrimitiveProperties
{
public class PrimitivePropertiesViewModel : ViewModelBase, IDataErrorInfo
{
private PrimitiveBase primitive;
public string Name
{
get => primitive.Name;
set
{
primitive.Name = value;
OnPropertyChanged(nameof(Name));
}
}
public string MaterialName
{
get => primitive.MaterialName;
set
{
primitive.Name = value;
OnPropertyChanged(nameof(MaterialName));
}
}
public double CenterX
{
get => primitive.CenterX;
set
{
primitive.CenterX = value;
OnPropertyChanged(nameof(CenterX));
OnPropertyChanged(nameof(primitive.ShowedX));
OnPropertyChanged(nameof(primitive.X));
}
}
public double CenterY
{
get => primitive.CenterY;
set
{
primitive.CenterY = value;
OnPropertyChanged(nameof(CenterY));
OnPropertyChanged(nameof(primitive.ShowedY));
OnPropertyChanged("Y");
}
}
public double Prestrain_Kx
{
get => primitive.Pre
}
public int MinElementDivision
{
get => primitive.MinElementDivision;
set
{
primitive.MinElementDivision = value;
OnPropertyChanged(nameof(MinElementDivision));
}
}
public double MaxElementSize
{
get => primitive.MaxElementSize;
set { primitive.MaxElementSize = value; }
}
public double Width
{
get
{
if (primitive is Rectangle)
{
var shape = primitive as Rectangle;
return shape.PrimitiveWidth;
}
return 0d;
}
set
{
if (primitive is Rectangle)
{
var shape = primitive as Rectangle;
shape.PrimitiveWidth = value;
}
}
}
public double Height
{
get
{
if (primitive is Rectangle)
{
var shape = primitive as Rectangle;
return shape.PrimitiveHeight;
}
return 0d;
}
set
{
if (primitive is Rectangle)
{
var shape = primitive as Rectangle;
shape.PrimitiveHeight = value;
}
}
}
public double Area
{
get
{
if (primitive is Point)
{
var shape = primitive as Point;
return shape.Area;
}
return 0d;
}
set
{
if (primitive is Point)
{
var shape = primitive as Point;
shape.Area = value;
}
}
}
public string this[string columnName]
{
get
{
string error = null;
if (columnName == nameof(Width)
||
columnName == nameof(Height))
{
if (this.Width <= 0 || this.Height <=0)
{
error = "Width and Height of rectangle must be greater than zero";
}
}
return error;
}
}
public string Error => throw new NotImplementedException();
public PrimitivePropertiesViewModel(PrimitiveBase primitive)
{
this.primitive = primitive;
}
}
}

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
<assemblyIdentity name="StructureHelper.application" version="1.0.0.0" publicKeyToken="a672eb8f7483e078" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />
<description asmv2:publisher="StructureHelper" asmv2:product="StructureHelper" xmlns="urn:schemas-microsoft-com:asm.v1" />
<deployment install="true" mapFileExtensions="true" />
<compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2">
<framework targetVersion="4.7.2" profile="Full" supportedRuntime="4.0.30319" />
</compatibleFrameworks>
<dependency>
<dependentAssembly dependencyType="install" codebase="Application Files\StructureHelper_1_0_0_0\StructureHelper.exe.manifest" size="17471">
<assemblyIdentity name="StructureHelper.exe" version="1.0.0.0" publicKeyToken="a672eb8f7483e078" language="neutral" processorArchitecture="msil" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>SHyyPpiu/G7izGrKPX4ZMq35RGjief8+4X75T8JO5f4=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<publisherIdentity name="CN=EAHOME\User" issuerKeyHash="d2bac230e5af0250a8a7f0cf1c3bac1da680d76c" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>E1adO37wivdqDVYQ3FJdqUBxIoyoYoFdNAELzYPbBuU=</DigestValue></Reference></SignedInfo><SignatureValue>jstl5R6h+8dI94bEy4n2y/7PgG5Rom+bvC3fLkm/yCktU5o91C/ItwnXyN4hXfhdppkoE62mkP0/OW1zEXb4FwpavdtdHWwc+43UJTMeTvCkNdCg7xF9OLjJJAz+ULupVTydzxWTYPStGTVnZz4LtPJe/vFYX3n/AxMC7NFMiJg=</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="e506db83cd0b01345d8162a88c227140a95d52dc10560d6af78af07e3b9d5613" Description="" Url=""><as:assemblyIdentity name="StructureHelper.application" version="1.0.0.0" publicKeyToken="a672eb8f7483e078" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=EAHOME\User</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>XMjKJ4t/nikM8DHg6HJIJ3BPIByWkckFtu6nTCUUoN0=</DigestValue></Reference></SignedInfo><SignatureValue>VWaDWp9QUuoggLKiadG/ndRKmowvoeC007/3DeuPPAVpZI4UpXa+U5bVIlA8Cv3ftfLG+IAGgpMUa7nR0inH73ifELEvnd+484B5g66ExCNaEYfSVogRUIQmrBTYyCfCQDokGIDdcIUHvonZ2wX1zSD9w/moG5REV5RXVr7k7T8=</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIBxTCCAS6gAwIBAgIQdW4a4i1B6ZpEyHZPHlrayTANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDHhYARQBBAEgATwBNAEUAXABVAHMAZQByMB4XDTIyMTAyMjE1MDY0M1oXDTIzMTAyMjIxMDY0M1owITEfMB0GA1UEAx4WAEUAQQBIAE8ATQBFAFwAVQBzAGUAcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKUCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCmSBRoEJkrYAzHutpnML6GlC5QoBTOBhEtsZk2LeCDob8oDAtVCmI9MwthBMQnEHdGsiCcsnj4D/Orjbdw2ZTqHcNQSvX7aMqvyQQOGguQA3vi49D08p/TL+wKrpWHmOBdpIxj/x5GtKsqQSe3CUAhvkaHPuq+cn+iRyBAHkoTrA==</X509Certificate></X509Data></KeyInfo></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Memory" culture="neutral" publicKeyToken="cc7b13ffcd2ddd51" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -0,0 +1,245 @@
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
<asmv1:assemblyIdentity name="StructureHelper.exe" version="1.0.0.0" publicKeyToken="a672eb8f7483e078" language="neutral" processorArchitecture="msil" type="win32" />
<application />
<entryPoint>
<assemblyIdentity name="StructureHelper" version="1.0.0.0" language="neutral" processorArchitecture="msil" />
<commandLine file="StructureHelper.exe" parameters="" />
</entryPoint>
<trustInfo>
<security>
<applicationRequestMinimum>
<PermissionSet Unrestricted="true" ID="Custom" SameSite="site" />
<defaultAssemblyRequest permissionSetReference="Custom" />
</applicationRequestMinimum>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!--
Параметры манифеста UAC
Если нужно изменить уровень контроля учетных записей Windows, замените
узел requestedExecutionLevel одним из следующих значений.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Если нужно использовать виртуализацию файлов и реестра для обратной
совместимости, удалите узел requestedExecutionLevel.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentOS>
<osVersionInfo>
<os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" />
</osVersionInfo>
</dependentOS>
</dependency>
<dependency>
<dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">
<assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="4.0.30319.0" />
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Autofac.dll" size="355840">
<assemblyIdentity name="Autofac" version="6.4.0.0" publicKeyToken="17863AF14B0044DA" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>R6ACRqrKX5Pm39qTeRyqQfJyN4HN7to8/JL96pswMu0=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="FieldVisualizer.dll" size="37376">
<assemblyIdentity name="FieldVisualizer" version="1.0.0.0" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>UlD3DiTPy4phiibEHSCCRHF9VpOrvcOT+PthozJQbOM=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="LoaderCalculator.dll" size="56832">
<assemblyIdentity name="LoaderCalculator" version="1.5.1.0" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>PS8gJ9hXTUKJj+t7ARGVNofbd6bG7vOlyFm9mY8QXP4=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Microsoft.Bcl.AsyncInterfaces.dll" size="22144">
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" version="6.0.0.0" publicKeyToken="CC7B13FFCD2DDD51" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>KVryFC2SFPP9hOr+R3jcoRm+fgIp8UtrqNUmnC8eLng=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Microsoft.Expression.Interactions.dll" size="91648">
<assemblyIdentity name="Microsoft.Expression.Interactions" version="4.0.0.0" publicKeyToken="31BF3856AD364E35" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>87FN770FSTuFcwFrCLhuW11TtIawRX/XX2e/i/8Evjg=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Newtonsoft.Json.dll" size="701992">
<assemblyIdentity name="Newtonsoft.Json" version="13.0.0.0" publicKeyToken="30AD4FE6B2A6AEED" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>tiSUnfiw46YVP9+3MKfG9JkLZZLuDZIuF4hDPSdmEPM=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="StructureHelper.exe" size="113088">
<assemblyIdentity name="StructureHelper" version="1.0.0.0" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>0vbv6pftc2FgDvLoEYF4NLRhEHyorHVGwM7EaMz3ncQ=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="StructureHelperCommon.dll" size="8704">
<assemblyIdentity name="StructureHelperCommon" version="1.0.0.0" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>2XjfxDPsF5OqDx/eSoF05PNVKULLhmzMxZikCy8r4vg=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="StructureHelperLogics.dll" size="15360">
<assemblyIdentity name="StructureHelperLogics" version="1.0.0.0" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>woG+HEcR/ptJ4ZmmmZz8ScaJL8CfdM0rheZEiESS2AM=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="System.Buffers.dll" size="20856">
<assemblyIdentity name="System.Buffers" version="4.0.3.0" publicKeyToken="CC7B13FFCD2DDD51" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>rMzPvkXZ8I/+7ZkW43sz6YxlvgEs//bn+ntnIQzh/vs=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="System.Diagnostics.DiagnosticSource.dll" size="166512">
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" version="6.0.0.0" publicKeyToken="CC7B13FFCD2DDD51" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>geZkiABC5FFJWhviJiSrSrXooGgD7tpb3afGnfJDmBU=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="System.Memory.dll" size="142240">
<assemblyIdentity name="System.Memory" version="4.0.1.2" publicKeyToken="CC7B13FFCD2DDD51" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>vz+4RmT0CX8aipvHGlHc+M8akF1AgKTSkNoXMIZuhW8=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="System.Numerics.Vectors.dll" size="115856">
<assemblyIdentity name="System.Numerics.Vectors" version="4.1.4.0" publicKeyToken="B03F5F7F11D50A3A" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>HT74aYKB589zcdFVSv71hys5+Wwm2nciEKM9oEG6EYM=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="System.Runtime.CompilerServices.Unsafe.dll" size="18024">
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" version="6.0.0.0" publicKeyToken="B03F5F7F11D50A3A" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>N3aEiOjvRXKbx9miZ3YzxkUAQpdbuWUW4YbabLnNDc8=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="System.Threading.Tasks.Extensions.dll" size="25984">
<assemblyIdentity name="System.Threading.Tasks.Extensions" version="4.2.0.1" publicKeyToken="CC7B13FFCD2DDD51" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>T4H/0NxyBNt1r8NepCkXabB8RAWS8oiUJg7qdmJqI8Y=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="System.Windows.Interactivity.dll" size="39936">
<assemblyIdentity name="System.Windows.Interactivity" version="4.0.0.0" publicKeyToken="31BF3856AD364E35" language="neutral" processorArchitecture="msil" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>SqzoyKMwroQpzYzBtoBAdtOp/9YzRw+R/Ta90lu1eHY=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<file name="StructureHelper.exe.config" size="1911">
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>XJ4UTVCHY1fDfJcmuGAB8NgEOj0ea/C98clia7y2xfM=</dsig:DigestValue>
</hash>
</file>
<publisherIdentity name="CN=EAHOME\User" issuerKeyHash="d2bac230e5af0250a8a7f0cf1c3bac1da680d76c" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>OB2DVefJbT397h8VuZEn1Dj805PagjlGkjvQ+eg2rZ4=</DigestValue></Reference></SignedInfo><SignatureValue>blDp7n3tL7B1tDTyhS2pXE7hbjOoSslxxHaYDHdaoZInj6XCPN7cKeMbg4HUGCv11OElENrxDwGjmOJsJpVVZwneCtqvVBLm1kz/Qd/NmLdgSWD0RbUFjz0P1/5CrubPVt1vqv2qlwM+qomMvhkMsXHQUhx+wT2E6sGKM1zfymI=</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="9ead36e8f9d03b92463982da93d3fc38d42791b9151feefd3d6dc9e755831d38" Description="" Url=""><as:assemblyIdentity name="StructureHelper.exe" version="1.0.0.0" publicKeyToken="a672eb8f7483e078" language="neutral" processorArchitecture="msil" type="win32" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=EAHOME\User</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>uL0dDdGJ5ceym4EDYSov7My9JtKZZg+sFgYtfJPhsbQ=</DigestValue></Reference></SignedInfo><SignatureValue>AK6PzCIEn5wVIj5tMRbAFvkEmilmeKKyeQFXYwtcApYq0BH75EeguTu+Od7oKaJPvgpdlIRK6tvtg8VS4TtiYj8Q/g9v+H9e0OZrtk/p790F53Z+HDFVEyf+MmAmlOX/SxA53HZ5TeUwdZJO/qxDzEASwZSESwXcHP76dTiEvRY=</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIBxTCCAS6gAwIBAgIQdW4a4i1B6ZpEyHZPHlrayTANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDHhYARQBBAEgATwBNAEUAXABVAHMAZQByMB4XDTIyMTAyMjE1MDY0M1oXDTIzMTAyMjIxMDY0M1owITEfMB0GA1UEAx4WAEUAQQBIAE8ATQBFAFwAVQBzAGUAcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKUCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCmSBRoEJkrYAzHutpnML6GlC5QoBTOBhEtsZk2LeCDob8oDAtVCmI9MwthBMQnEHdGsiCcsnj4D/Orjbdw2ZTqHcNQSvX7aMqvyQQOGguQA3vi49D08p/TL+wKrpWHmOBdpIxj/x5GtKsqQSe3CUAhvkaHPuq+cn+iRyBAHkoTrA==</X509Certificate></X509Data></KeyInfo></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
<assemblyIdentity name="StructureHelper.application" version="1.0.0.0" publicKeyToken="a672eb8f7483e078" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />
<description asmv2:publisher="StructureHelper" asmv2:product="StructureHelper" xmlns="urn:schemas-microsoft-com:asm.v1" />
<deployment install="true" mapFileExtensions="true" />
<compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2">
<framework targetVersion="4.7.2" profile="Full" supportedRuntime="4.0.30319" />
</compatibleFrameworks>
<dependency>
<dependentAssembly dependencyType="install" codebase="Application Files\StructureHelper_1_0_0_0\StructureHelper.exe.manifest" size="17471">
<assemblyIdentity name="StructureHelper.exe" version="1.0.0.0" publicKeyToken="a672eb8f7483e078" language="neutral" processorArchitecture="msil" type="win32" />
<hash>
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
<dsig:DigestValue>SHyyPpiu/G7izGrKPX4ZMq35RGjief8+4X75T8JO5f4=</dsig:DigestValue>
</hash>
</dependentAssembly>
</dependency>
<publisherIdentity name="CN=EAHOME\User" issuerKeyHash="d2bac230e5af0250a8a7f0cf1c3bac1da680d76c" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>E1adO37wivdqDVYQ3FJdqUBxIoyoYoFdNAELzYPbBuU=</DigestValue></Reference></SignedInfo><SignatureValue>jstl5R6h+8dI94bEy4n2y/7PgG5Rom+bvC3fLkm/yCktU5o91C/ItwnXyN4hXfhdppkoE62mkP0/OW1zEXb4FwpavdtdHWwc+43UJTMeTvCkNdCg7xF9OLjJJAz+ULupVTydzxWTYPStGTVnZz4LtPJe/vFYX3n/AxMC7NFMiJg=</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="e506db83cd0b01345d8162a88c227140a95d52dc10560d6af78af07e3b9d5613" Description="" Url=""><as:assemblyIdentity name="StructureHelper.application" version="1.0.0.0" publicKeyToken="a672eb8f7483e078" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=EAHOME\User</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>XMjKJ4t/nikM8DHg6HJIJ3BPIByWkckFtu6nTCUUoN0=</DigestValue></Reference></SignedInfo><SignatureValue>VWaDWp9QUuoggLKiadG/ndRKmowvoeC007/3DeuPPAVpZI4UpXa+U5bVIlA8Cv3ftfLG+IAGgpMUa7nR0inH73ifELEvnd+484B5g66ExCNaEYfSVogRUIQmrBTYyCfCQDokGIDdcIUHvonZ2wX1zSD9w/moG5REV5RXVr7k7T8=</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKU=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIBxTCCAS6gAwIBAgIQdW4a4i1B6ZpEyHZPHlrayTANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDHhYARQBBAEgATwBNAEUAXABVAHMAZQByMB4XDTIyMTAyMjE1MDY0M1oXDTIzMTAyMjIxMDY0M1owITEfMB0GA1UEAx4WAEUAQQBIAE8ATQBFAFwAVQBzAGUAcjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA634Yi+GrNI9reFjdsZpwN2SEF2r/nZDEIiBEJTECXqFOxqBh++16dsyDzSgYOxZOR+kEIek8aFKM/2WxvOEzC2X/ptJNWNkrZ51XK4WxI22xifoEC1S0OqcxwKlnOv+89l86L3hm1s7eeUqFGFxTKO1rktlS6XJTzZ/SHiraBKUCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCmSBRoEJkrYAzHutpnML6GlC5QoBTOBhEtsZk2LeCDob8oDAtVCmI9MwthBMQnEHdGsiCcsnj4D/Orjbdw2ZTqHcNQSvX7aMqvyQQOGguQA3vi49D08p/TL+wKrpWHmOBdpIxj/x5GtKsqQSe3CUAhvkaHPuq+cn+iRyBAHkoTrA==</X509Certificate></X509Data></KeyInfo></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>

BIN
publish/setup.exe Normal file

Binary file not shown.