Add work with versions
This commit is contained in:
@@ -15,8 +15,9 @@ namespace DataAccess.DTOs
|
|||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
[JsonProperty("DateTime")]
|
[JsonProperty("DateTime")]
|
||||||
public DateTime DateTime { get; set; }
|
public DateTime DateTime { get; set; }
|
||||||
|
[JsonProperty("Comment")]
|
||||||
|
public string Comment { get; set; } = string.Empty;
|
||||||
[JsonProperty("AnalysisVersion")]
|
[JsonProperty("AnalysisVersion")]
|
||||||
public ISaveable AnalysisVersion { get; set; }
|
public ISaveable AnalysisVersion { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
2902
StructureHelper/Documentation/Examples/Composite.shpj
Normal file
2902
StructureHelper/Documentation/Examples/Composite.shpj
Normal file
File diff suppressed because it is too large
Load Diff
935
StructureHelper/Documentation/Examples/OverStrain.shpj
Normal file
935
StructureHelper/Documentation/Examples/OverStrain.shpj
Normal file
@@ -0,0 +1,935 @@
|
|||||||
|
{
|
||||||
|
"$id": "1",
|
||||||
|
"$type": "RootObject",
|
||||||
|
"FileVersion": {
|
||||||
|
"Id": "6d7ad6f9-4754-4f07-a4c4-4715c993de9c",
|
||||||
|
"VersionNumber": 1,
|
||||||
|
"SubVersionNumber": 0
|
||||||
|
},
|
||||||
|
"Project": {
|
||||||
|
"Id": "7295aaae-5291-40ef-836b-67679f0b7432",
|
||||||
|
"VisualAnalyses": {
|
||||||
|
"$id": "2",
|
||||||
|
"$type": "ListOfIVisualAnalysis",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "3",
|
||||||
|
"$type": "VisualAnalysis",
|
||||||
|
"Id": "4513ced2-7aa4-42dc-afd9-32cd1cc81b9d",
|
||||||
|
"Analysis": {
|
||||||
|
"$id": "4",
|
||||||
|
"$type": "CrossSectionNdmAnalysis",
|
||||||
|
"Id": "6415665d-e31a-4447-bb91-1fa9d3101538",
|
||||||
|
"Name": "New NDM Analysis",
|
||||||
|
"Tags": "#New group",
|
||||||
|
"VersionProcessor": {
|
||||||
|
"$id": "5",
|
||||||
|
"$type": "VersionProcessor",
|
||||||
|
"Id": "516424cd-b978-4791-a92b-b8d6e067fe7a",
|
||||||
|
"Versions": {
|
||||||
|
"$type": "ListOfIDateVersion",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "6",
|
||||||
|
"$type": "DateVersion",
|
||||||
|
"Id": "458bfd1a-e3ea-48a4-b397-6208298a1cb1",
|
||||||
|
"DateTime": "2024-11-30T17:26:41.950465+05:00",
|
||||||
|
"Comment": "",
|
||||||
|
"AnalysisVersion": {
|
||||||
|
"$id": "7",
|
||||||
|
"$type": "CrossSection",
|
||||||
|
"Id": "46f8b24f-68e8-4a80-82c6-6d8dcefab29c",
|
||||||
|
"SectionRepository": {
|
||||||
|
"$id": "8",
|
||||||
|
"$type": "CrossSectionRepository",
|
||||||
|
"Id": "b6c67d83-f23e-4897-9cf7-1c501c627936",
|
||||||
|
"HeadMaterials": {
|
||||||
|
"$type": "ListOfIHeadMaterial",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "9",
|
||||||
|
"$type": "HeadMaterial",
|
||||||
|
"Id": "598dba27-5382-4c9c-9baa-8cf1caf9a696",
|
||||||
|
"Name": "Concrete",
|
||||||
|
"Color": "#FFF0F8FF",
|
||||||
|
"HelperMaterial": {
|
||||||
|
"$id": "10",
|
||||||
|
"$type": "ConcreteLibMaterial",
|
||||||
|
"Id": "325b3e63-5f6c-4998-9e2f-ed4d88d6c962",
|
||||||
|
"RelativeHumidity": 0.55,
|
||||||
|
"MinAge": 0.0,
|
||||||
|
"MaxAge": 2207520000.0,
|
||||||
|
"MaterialEntityId": "1cdc3598-c67b-4e35-89ac-3f7c0a9db167",
|
||||||
|
"SafetyFactors": {
|
||||||
|
"$id": "11",
|
||||||
|
"$type": "ListOfMaterialSafetyFactor",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "12",
|
||||||
|
"$type": "MaterialSafetyFactor",
|
||||||
|
"Id": "4976a2b2-cd2a-4663-8aa5-96e68fd75208",
|
||||||
|
"Name": "Gamma_b1",
|
||||||
|
"Take": true,
|
||||||
|
"Description": "Coefficient for considering long term calculations",
|
||||||
|
"PartialFactors": {
|
||||||
|
"$type": "ListOfMaterialPartialFactor",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "13",
|
||||||
|
"$type": "MaterialPartialFactor",
|
||||||
|
"Id": "be1571d7-8d02-46b0-9b80-04492fb230c3",
|
||||||
|
"FactorValue": 0.9,
|
||||||
|
"StressState": 0,
|
||||||
|
"CalcTerm": 2,
|
||||||
|
"LimitState": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "14",
|
||||||
|
"$type": "MaterialPartialFactor",
|
||||||
|
"Id": "412f48a9-7170-4a7c-8e33-8271eb2d8cd1",
|
||||||
|
"FactorValue": 0.9,
|
||||||
|
"StressState": 1,
|
||||||
|
"CalcTerm": 2,
|
||||||
|
"LimitState": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "15",
|
||||||
|
"$type": "MaterialSafetyFactor",
|
||||||
|
"Id": "fa3c957d-a6fd-4d19-b292-6e7c29e570c7",
|
||||||
|
"Name": "Gamma_b2",
|
||||||
|
"Take": false,
|
||||||
|
"Description": "Coefficient for plain concrete structures",
|
||||||
|
"PartialFactors": {
|
||||||
|
"$type": "ListOfMaterialPartialFactor",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "16",
|
||||||
|
"$type": "MaterialPartialFactor",
|
||||||
|
"Id": "2e278522-4ab8-4baf-b256-6f3e09ddc840",
|
||||||
|
"FactorValue": 0.9,
|
||||||
|
"StressState": 1,
|
||||||
|
"CalcTerm": 1,
|
||||||
|
"LimitState": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "17",
|
||||||
|
"$type": "MaterialPartialFactor",
|
||||||
|
"Id": "af236127-8edb-4da7-889a-7a83696b9a12",
|
||||||
|
"FactorValue": 0.9,
|
||||||
|
"StressState": 1,
|
||||||
|
"CalcTerm": 2,
|
||||||
|
"LimitState": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "18",
|
||||||
|
"$type": "MaterialSafetyFactor",
|
||||||
|
"Id": "aa856334-dbd5-4c2f-b4eb-3d63cbc19e56",
|
||||||
|
"Name": "Gamma_b3",
|
||||||
|
"Take": false,
|
||||||
|
"Description": "Coefficient for considering bleeding in vertical placement conditionals",
|
||||||
|
"PartialFactors": {
|
||||||
|
"$type": "ListOfMaterialPartialFactor",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "19",
|
||||||
|
"$type": "MaterialPartialFactor",
|
||||||
|
"Id": "261dd7ac-e6bf-4fcf-a8c2-7d3f0f03c1bf",
|
||||||
|
"FactorValue": 0.85,
|
||||||
|
"StressState": 1,
|
||||||
|
"CalcTerm": 1,
|
||||||
|
"LimitState": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "20",
|
||||||
|
"$type": "MaterialPartialFactor",
|
||||||
|
"Id": "421c27ba-f06d-4943-aade-356455e70a3e",
|
||||||
|
"FactorValue": 0.85,
|
||||||
|
"StressState": 1,
|
||||||
|
"CalcTerm": 2,
|
||||||
|
"LimitState": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"TensionForULS": false,
|
||||||
|
"TensionForSLS": true,
|
||||||
|
"MaterialLogicId": "b97e8168-76a1-4e24-ae98-9aa38edd1e9a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "21",
|
||||||
|
"$type": "HeadMaterial",
|
||||||
|
"Id": "c7f4f947-e7bb-4134-9639-e1c857e90f3b",
|
||||||
|
"Name": "Reinforcement",
|
||||||
|
"Color": "#FFFF0000",
|
||||||
|
"HelperMaterial": {
|
||||||
|
"$id": "22",
|
||||||
|
"$type": "ReinforcementLibMaterial",
|
||||||
|
"Id": "3b30e2bf-860c-4c8b-a34d-8ba4ce3fbd8f",
|
||||||
|
"MaterialEntityId": "ea422282-3465-433c-9b93-c5bbfba5a904",
|
||||||
|
"SafetyFactors": {
|
||||||
|
"$id": "23",
|
||||||
|
"$type": "ListOfMaterialSafetyFactor",
|
||||||
|
"$values": []
|
||||||
|
},
|
||||||
|
"MaterialLogicId": "54c4fe40-8f82-4995-8930-81e65e97edb9"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ForceActions": {
|
||||||
|
"$type": "ListOfIForceAction",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "24",
|
||||||
|
"$type": "ForceCombinationList",
|
||||||
|
"Id": "c4174be1-4d7a-40fa-be08-b6a915c646fb",
|
||||||
|
"Name": "New Force Action",
|
||||||
|
"SetInGravityCenter": true,
|
||||||
|
"ForcePoint": {
|
||||||
|
"$id": "25",
|
||||||
|
"$type": "Point2D",
|
||||||
|
"Id": "fe7f7a53-9cb3-4f53-9f95-90dcda3e6074",
|
||||||
|
"X": 0.0,
|
||||||
|
"Y": 0.0
|
||||||
|
},
|
||||||
|
"DesignForces": {
|
||||||
|
"$id": "26",
|
||||||
|
"$type": "ListOfIDesignForceTuple",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "27",
|
||||||
|
"$type": "DesignForceTuple",
|
||||||
|
"Id": "264799c6-a507-43b1-8dec-4dc946ff3f56",
|
||||||
|
"LimitState": 1,
|
||||||
|
"CalcTerm": 1,
|
||||||
|
"ForceTuple": {
|
||||||
|
"$id": "28",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "5208c12d-cfa6-4484-8004-8adf5499aaa4",
|
||||||
|
"Mx": -400000.0,
|
||||||
|
"My": -400000.0,
|
||||||
|
"Nz": -100000.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "29",
|
||||||
|
"$type": "DesignForceTuple",
|
||||||
|
"Id": "40819c8c-6959-4355-9fd9-b5b2286a6f6c",
|
||||||
|
"LimitState": 1,
|
||||||
|
"CalcTerm": 2,
|
||||||
|
"ForceTuple": {
|
||||||
|
"$id": "30",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "82fee963-0992-4bd4-8e50-601ae19bbe40",
|
||||||
|
"Mx": -50000.0,
|
||||||
|
"My": -50000.0,
|
||||||
|
"Nz": -100000.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "31",
|
||||||
|
"$type": "DesignForceTuple",
|
||||||
|
"Id": "6b393798-9926-4fe4-a2a2-124fcec73d4a",
|
||||||
|
"LimitState": 2,
|
||||||
|
"CalcTerm": 1,
|
||||||
|
"ForceTuple": {
|
||||||
|
"$id": "32",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "84a9f571-fab5-469a-b65d-13d016e70be5",
|
||||||
|
"Mx": -50000.0,
|
||||||
|
"My": -50000.0,
|
||||||
|
"Nz": -100000.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "33",
|
||||||
|
"$type": "DesignForceTuple",
|
||||||
|
"Id": "660e0fa3-9d13-4f40-9500-643a7677123c",
|
||||||
|
"LimitState": 2,
|
||||||
|
"CalcTerm": 2,
|
||||||
|
"ForceTuple": {
|
||||||
|
"$id": "34",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "bb916a62-c3db-494d-860d-fe56e98be95a",
|
||||||
|
"Mx": -50000.0,
|
||||||
|
"My": -50000.0,
|
||||||
|
"Nz": -100000.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Primitives": {
|
||||||
|
"$type": "ListOfINdmPrimitive",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "35",
|
||||||
|
"$type": "RectangleNdmPrimitive",
|
||||||
|
"Id": "2a238dea-815c-486d-8f67-3406d721f4cd",
|
||||||
|
"Name": "Concrete block",
|
||||||
|
"RectangleShape": {
|
||||||
|
"$id": "36",
|
||||||
|
"$type": "RectangleShape",
|
||||||
|
"Id": "366105da-71cf-4452-b451-16a7a08725dc",
|
||||||
|
"Width": 0.5,
|
||||||
|
"Height": 0.5
|
||||||
|
},
|
||||||
|
"NdmElement": {
|
||||||
|
"$id": "37",
|
||||||
|
"$type": "NdmElement",
|
||||||
|
"Id": "924467a4-831f-4eea-bbb4-b8e7fa2ed776",
|
||||||
|
"HeadMaterial": {
|
||||||
|
"$ref": "9"
|
||||||
|
},
|
||||||
|
"Triangulate": true,
|
||||||
|
"UsersPrestrain": {
|
||||||
|
"$id": "38",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "bb9b0a37-05e3-4b3e-9838-397f14366b09",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
},
|
||||||
|
"AutoPrestrain": {
|
||||||
|
"$id": "39",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "5a9c3315-cf46-4361-831f-874902a20548",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VisualProperty": {
|
||||||
|
"$id": "40",
|
||||||
|
"$type": "VisualProperty",
|
||||||
|
"Id": "fcd06688-7c88-45a2-a8d7-48cf1ef19f13",
|
||||||
|
"IsVisible": true,
|
||||||
|
"Color": "#FFE96AB6",
|
||||||
|
"SetMaterialColor": true,
|
||||||
|
"ZIndex": 0,
|
||||||
|
"Opacity": 0.8
|
||||||
|
},
|
||||||
|
"Center": {
|
||||||
|
"$id": "41",
|
||||||
|
"$type": "Point2D",
|
||||||
|
"Id": "bfd326bb-ddb7-4e0d-abe4-679bf0632623",
|
||||||
|
"X": 0.0,
|
||||||
|
"Y": 0.0
|
||||||
|
},
|
||||||
|
"DivisionSize": {
|
||||||
|
"$id": "42",
|
||||||
|
"$type": "DivisionSize",
|
||||||
|
"Id": "51316094-5e15-420d-b7a3-8c92ef2794ee",
|
||||||
|
"NdmMaxSize": 0.005,
|
||||||
|
"NdmMinDivision": 10,
|
||||||
|
"ClearUnderlying": false
|
||||||
|
},
|
||||||
|
"RotationAngle": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "43",
|
||||||
|
"$type": "RebarNdmPrimitive",
|
||||||
|
"Id": "73197605-fc29-449f-8e98-7c365086d98e",
|
||||||
|
"Name": "Left bottom rebar",
|
||||||
|
"NdmElement": {
|
||||||
|
"$id": "44",
|
||||||
|
"$type": "NdmElement",
|
||||||
|
"Id": "e79cedeb-7b16-4612-97b4-a072936fa53b",
|
||||||
|
"HeadMaterial": {
|
||||||
|
"$ref": "21"
|
||||||
|
},
|
||||||
|
"Triangulate": true,
|
||||||
|
"UsersPrestrain": {
|
||||||
|
"$id": "45",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "de97f261-85b0-4edf-afb8-203697b9c19f",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
},
|
||||||
|
"AutoPrestrain": {
|
||||||
|
"$id": "46",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "f7cbdd8d-4851-441b-9a51-3b56d22e56bb",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VisualProperty": {
|
||||||
|
"$id": "47",
|
||||||
|
"$type": "VisualProperty",
|
||||||
|
"Id": "6ebbfd7e-6d94-4bb1-8c4b-b5124b63cf65",
|
||||||
|
"IsVisible": true,
|
||||||
|
"Color": "#FF9BCE2E",
|
||||||
|
"SetMaterialColor": true,
|
||||||
|
"ZIndex": 0,
|
||||||
|
"Opacity": 1.0
|
||||||
|
},
|
||||||
|
"Center": {
|
||||||
|
"$id": "48",
|
||||||
|
"$type": "Point2D",
|
||||||
|
"Id": "f7a33bd8-cd95-4c25-bb40-589c33a50833",
|
||||||
|
"X": -0.2,
|
||||||
|
"Y": -0.2
|
||||||
|
},
|
||||||
|
"RotationAngle": 0.0,
|
||||||
|
"Area": 0.0012566370614359175,
|
||||||
|
"HostPrimitive": {
|
||||||
|
"$ref": "35"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "49",
|
||||||
|
"$type": "RebarNdmPrimitive",
|
||||||
|
"Id": "df2dfc59-7a93-4b9d-bf0a-e0710f34cbd4",
|
||||||
|
"Name": "Right bottom rebar",
|
||||||
|
"NdmElement": {
|
||||||
|
"$id": "50",
|
||||||
|
"$type": "NdmElement",
|
||||||
|
"Id": "4fb5c96d-906f-4186-9a2b-90b84ca19fe8",
|
||||||
|
"HeadMaterial": {
|
||||||
|
"$ref": "21"
|
||||||
|
},
|
||||||
|
"Triangulate": true,
|
||||||
|
"UsersPrestrain": {
|
||||||
|
"$id": "51",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "125344e4-fadb-45bf-9a52-846650d9fc2a",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
},
|
||||||
|
"AutoPrestrain": {
|
||||||
|
"$id": "52",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "c99f3561-58e0-42f9-aadf-61b82cd31526",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VisualProperty": {
|
||||||
|
"$id": "53",
|
||||||
|
"$type": "VisualProperty",
|
||||||
|
"Id": "7f80b672-e856-4b9b-9e17-cae242701d27",
|
||||||
|
"IsVisible": true,
|
||||||
|
"Color": "#FFAE14EE",
|
||||||
|
"SetMaterialColor": true,
|
||||||
|
"ZIndex": 0,
|
||||||
|
"Opacity": 1.0
|
||||||
|
},
|
||||||
|
"Center": {
|
||||||
|
"$id": "54",
|
||||||
|
"$type": "Point2D",
|
||||||
|
"Id": "1b60b8ac-26df-46ea-86b9-08fe74c21956",
|
||||||
|
"X": 0.2,
|
||||||
|
"Y": -0.2
|
||||||
|
},
|
||||||
|
"RotationAngle": 0.0,
|
||||||
|
"Area": 0.0012566370614359175,
|
||||||
|
"HostPrimitive": {
|
||||||
|
"$ref": "35"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "55",
|
||||||
|
"$type": "RebarNdmPrimitive",
|
||||||
|
"Id": "7d67360d-9398-4ba8-84cf-19c8e746b89e",
|
||||||
|
"Name": "Left top rebar",
|
||||||
|
"NdmElement": {
|
||||||
|
"$id": "56",
|
||||||
|
"$type": "NdmElement",
|
||||||
|
"Id": "334946d7-3111-4dc6-99fd-4ea702891f14",
|
||||||
|
"HeadMaterial": {
|
||||||
|
"$ref": "21"
|
||||||
|
},
|
||||||
|
"Triangulate": true,
|
||||||
|
"UsersPrestrain": {
|
||||||
|
"$id": "57",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "59efbe75-5d1b-4013-913c-d8e64a4b4936",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
},
|
||||||
|
"AutoPrestrain": {
|
||||||
|
"$id": "58",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "7e0a0c41-4846-40dd-a3d9-51375c06899d",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VisualProperty": {
|
||||||
|
"$id": "59",
|
||||||
|
"$type": "VisualProperty",
|
||||||
|
"Id": "4c47a16a-db0d-49fe-a28f-dc36b485068c",
|
||||||
|
"IsVisible": true,
|
||||||
|
"Color": "#FF3156CB",
|
||||||
|
"SetMaterialColor": true,
|
||||||
|
"ZIndex": 0,
|
||||||
|
"Opacity": 1.0
|
||||||
|
},
|
||||||
|
"Center": {
|
||||||
|
"$id": "60",
|
||||||
|
"$type": "Point2D",
|
||||||
|
"Id": "d5bb9f38-2e78-46cd-b2ed-5665d0143234",
|
||||||
|
"X": -0.2,
|
||||||
|
"Y": 0.2
|
||||||
|
},
|
||||||
|
"RotationAngle": 0.0,
|
||||||
|
"Area": 0.0012566370614359175,
|
||||||
|
"HostPrimitive": {
|
||||||
|
"$ref": "35"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "61",
|
||||||
|
"$type": "RebarNdmPrimitive",
|
||||||
|
"Id": "10237fc4-b8c7-4cbc-895f-757f40227210",
|
||||||
|
"Name": "Right top rebar",
|
||||||
|
"NdmElement": {
|
||||||
|
"$id": "62",
|
||||||
|
"$type": "NdmElement",
|
||||||
|
"Id": "1883429f-7893-462f-94e6-69f211663e6e",
|
||||||
|
"HeadMaterial": {
|
||||||
|
"$ref": "21"
|
||||||
|
},
|
||||||
|
"Triangulate": true,
|
||||||
|
"UsersPrestrain": {
|
||||||
|
"$id": "63",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "cf16dddf-68d3-46e7-89d4-1606e8db1775",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
},
|
||||||
|
"AutoPrestrain": {
|
||||||
|
"$id": "64",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "b61d1847-2629-4d69-a983-cfa8f14fa342",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VisualProperty": {
|
||||||
|
"$id": "65",
|
||||||
|
"$type": "VisualProperty",
|
||||||
|
"Id": "b5ce594c-e89a-4061-9160-1cd0a0d80efe",
|
||||||
|
"IsVisible": true,
|
||||||
|
"Color": "#FFE50629",
|
||||||
|
"SetMaterialColor": true,
|
||||||
|
"ZIndex": 0,
|
||||||
|
"Opacity": 1.0
|
||||||
|
},
|
||||||
|
"Center": {
|
||||||
|
"$id": "66",
|
||||||
|
"$type": "Point2D",
|
||||||
|
"Id": "acd7f02d-33f1-4be7-aa98-dbaef471659f",
|
||||||
|
"X": 0.2,
|
||||||
|
"Y": 0.2
|
||||||
|
},
|
||||||
|
"RotationAngle": 0.0,
|
||||||
|
"Area": 0.0012566370614359175,
|
||||||
|
"HostPrimitive": {
|
||||||
|
"$ref": "35"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "67",
|
||||||
|
"$type": "RebarNdmPrimitive",
|
||||||
|
"Id": "bce2c23d-57bc-4e55-828a-4dad15fd7350",
|
||||||
|
"Name": "Bottom rebar 1",
|
||||||
|
"NdmElement": {
|
||||||
|
"$id": "68",
|
||||||
|
"$type": "NdmElement",
|
||||||
|
"Id": "00dbf316-590c-4d5a-a5f4-3109448453b1",
|
||||||
|
"HeadMaterial": {
|
||||||
|
"$ref": "21"
|
||||||
|
},
|
||||||
|
"Triangulate": true,
|
||||||
|
"UsersPrestrain": {
|
||||||
|
"$id": "69",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "681b5e21-1043-4d6a-9e6e-571ef39dc00d",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
},
|
||||||
|
"AutoPrestrain": {
|
||||||
|
"$id": "70",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "d2c6db45-b912-4621-bc12-06e14921e30a",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VisualProperty": {
|
||||||
|
"$id": "71",
|
||||||
|
"$type": "VisualProperty",
|
||||||
|
"Id": "5195b8fb-56bd-44cd-acb2-5505ea1a3f1b",
|
||||||
|
"IsVisible": true,
|
||||||
|
"Color": "#FFBFED4D",
|
||||||
|
"SetMaterialColor": true,
|
||||||
|
"ZIndex": 0,
|
||||||
|
"Opacity": 1.0
|
||||||
|
},
|
||||||
|
"Center": {
|
||||||
|
"$id": "72",
|
||||||
|
"$type": "Point2D",
|
||||||
|
"Id": "2626fc57-4f92-4b96-902d-0ef1e8570e81",
|
||||||
|
"X": 0.0,
|
||||||
|
"Y": -0.2
|
||||||
|
},
|
||||||
|
"RotationAngle": 0.0,
|
||||||
|
"Area": 0.0012566370614359175,
|
||||||
|
"HostPrimitive": {
|
||||||
|
"$ref": "35"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "73",
|
||||||
|
"$type": "RebarNdmPrimitive",
|
||||||
|
"Id": "0b4f3017-408d-485a-a469-54f9ae899ce8",
|
||||||
|
"Name": "Top rebar 1",
|
||||||
|
"NdmElement": {
|
||||||
|
"$id": "74",
|
||||||
|
"$type": "NdmElement",
|
||||||
|
"Id": "21a77b6e-039d-4eb8-bb7c-5274f8faba2a",
|
||||||
|
"HeadMaterial": {
|
||||||
|
"$ref": "21"
|
||||||
|
},
|
||||||
|
"Triangulate": true,
|
||||||
|
"UsersPrestrain": {
|
||||||
|
"$id": "75",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "ba6183e8-cd67-4d8d-916d-85ace8301446",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
},
|
||||||
|
"AutoPrestrain": {
|
||||||
|
"$id": "76",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "53be9567-8c6f-4fd2-ac6e-de3b4c908b38",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VisualProperty": {
|
||||||
|
"$id": "77",
|
||||||
|
"$type": "VisualProperty",
|
||||||
|
"Id": "1502c9bc-a18f-42ad-bd26-ce600628f665",
|
||||||
|
"IsVisible": true,
|
||||||
|
"Color": "#FFEE1071",
|
||||||
|
"SetMaterialColor": true,
|
||||||
|
"ZIndex": 0,
|
||||||
|
"Opacity": 1.0
|
||||||
|
},
|
||||||
|
"Center": {
|
||||||
|
"$id": "78",
|
||||||
|
"$type": "Point2D",
|
||||||
|
"Id": "91424470-6a9b-49cd-b8aa-6622c8b3774e",
|
||||||
|
"X": 0.0,
|
||||||
|
"Y": 0.2
|
||||||
|
},
|
||||||
|
"RotationAngle": 0.0,
|
||||||
|
"Area": 0.0012566370614359175,
|
||||||
|
"HostPrimitive": {
|
||||||
|
"$ref": "35"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "79",
|
||||||
|
"$type": "RebarNdmPrimitive",
|
||||||
|
"Id": "b80fe995-59b8-4b77-8df7-d67cadeac090",
|
||||||
|
"Name": "Left point 1",
|
||||||
|
"NdmElement": {
|
||||||
|
"$id": "80",
|
||||||
|
"$type": "NdmElement",
|
||||||
|
"Id": "2b9ac324-38f2-42d4-b0bd-a587e7259e1b",
|
||||||
|
"HeadMaterial": {
|
||||||
|
"$ref": "21"
|
||||||
|
},
|
||||||
|
"Triangulate": true,
|
||||||
|
"UsersPrestrain": {
|
||||||
|
"$id": "81",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "ba3dee2f-cdf3-492f-ba50-b622bf59e350",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
},
|
||||||
|
"AutoPrestrain": {
|
||||||
|
"$id": "82",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "5d126f83-95fb-442e-861b-bb33dc0d6b7f",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VisualProperty": {
|
||||||
|
"$id": "83",
|
||||||
|
"$type": "VisualProperty",
|
||||||
|
"Id": "fef9f1a1-0545-4fd2-b044-191947f597a3",
|
||||||
|
"IsVisible": true,
|
||||||
|
"Color": "#FF1A9AD5",
|
||||||
|
"SetMaterialColor": true,
|
||||||
|
"ZIndex": 0,
|
||||||
|
"Opacity": 1.0
|
||||||
|
},
|
||||||
|
"Center": {
|
||||||
|
"$id": "84",
|
||||||
|
"$type": "Point2D",
|
||||||
|
"Id": "f16d9011-5e08-42cf-9297-893d746db326",
|
||||||
|
"X": -0.2,
|
||||||
|
"Y": 0.0
|
||||||
|
},
|
||||||
|
"RotationAngle": 0.0,
|
||||||
|
"Area": 0.0012566370614359175,
|
||||||
|
"HostPrimitive": {
|
||||||
|
"$ref": "35"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$id": "85",
|
||||||
|
"$type": "RebarNdmPrimitive",
|
||||||
|
"Id": "c9ec6833-a044-467f-8064-aec01ddb8d1f",
|
||||||
|
"Name": "Right point 1",
|
||||||
|
"NdmElement": {
|
||||||
|
"$id": "86",
|
||||||
|
"$type": "NdmElement",
|
||||||
|
"Id": "17f9cad4-07d0-452b-9dff-08e7673b1a04",
|
||||||
|
"HeadMaterial": {
|
||||||
|
"$ref": "21"
|
||||||
|
},
|
||||||
|
"Triangulate": true,
|
||||||
|
"UsersPrestrain": {
|
||||||
|
"$id": "87",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "c27677c2-b4b4-4252-8a4c-6d64a218718d",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
},
|
||||||
|
"AutoPrestrain": {
|
||||||
|
"$id": "88",
|
||||||
|
"$type": "ForceTuple",
|
||||||
|
"Id": "0b7bcb68-1d6c-4a7e-86ec-9d4d12fad77a",
|
||||||
|
"Mx": 0.0,
|
||||||
|
"My": 0.0,
|
||||||
|
"Nz": 0.0,
|
||||||
|
"Qx": 0.0,
|
||||||
|
"Qy": 0.0,
|
||||||
|
"Mz": 0.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"VisualProperty": {
|
||||||
|
"$id": "89",
|
||||||
|
"$type": "VisualProperty",
|
||||||
|
"Id": "a076924e-70f9-4300-94fa-d38b95a536ab",
|
||||||
|
"IsVisible": true,
|
||||||
|
"Color": "#FFEF0EC2",
|
||||||
|
"SetMaterialColor": true,
|
||||||
|
"ZIndex": 0,
|
||||||
|
"Opacity": 1.0
|
||||||
|
},
|
||||||
|
"Center": {
|
||||||
|
"$id": "90",
|
||||||
|
"$type": "Point2D",
|
||||||
|
"Id": "36503512-755e-433f-a30e-9dc2bbde392a",
|
||||||
|
"X": 0.2,
|
||||||
|
"Y": 0.0
|
||||||
|
},
|
||||||
|
"RotationAngle": 0.0,
|
||||||
|
"Area": 0.0012566370614359175,
|
||||||
|
"HostPrimitive": {
|
||||||
|
"$ref": "35"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Calculators": {
|
||||||
|
"$type": "ListOfICalculator",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$id": "91",
|
||||||
|
"$type": "ForceCalculator",
|
||||||
|
"Id": "fc01f68a-53d7-4d2c-8dd1-23f6c8eeb396",
|
||||||
|
"Name": "New Force Calculator",
|
||||||
|
"InputData": {
|
||||||
|
"$id": "92",
|
||||||
|
"$type": "ForceCalculatorInputData",
|
||||||
|
"Id": "ef13418e-eb58-487b-be7f-1fa4c7b3a7d6",
|
||||||
|
"ForceActions": {
|
||||||
|
"$id": "93",
|
||||||
|
"$type": "ListOfIForceAction",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$ref": "24"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Primitives": {
|
||||||
|
"$id": "94",
|
||||||
|
"$type": "ListOfINdmPrimitive",
|
||||||
|
"$values": [
|
||||||
|
{
|
||||||
|
"$ref": "35"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "43"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "49"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "55"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "61"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "67"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "73"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "79"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "85"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LimitStatesList": {
|
||||||
|
"$id": "95",
|
||||||
|
"$type": "ListOfLimitState",
|
||||||
|
"$values": [
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"CalcTermList": {
|
||||||
|
"$id": "96",
|
||||||
|
"$type": "ListOfCalcTerms",
|
||||||
|
"$values": [
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Accuracy": {
|
||||||
|
"$id": "97",
|
||||||
|
"$type": "Accuracy",
|
||||||
|
"Id": "f3b5dc11-039f-41e7-ac96-d10794715935",
|
||||||
|
"IterationAccuracy": 0.001,
|
||||||
|
"MaxIterationCount": 1000
|
||||||
|
},
|
||||||
|
"CompressedMember": {
|
||||||
|
"$id": "98",
|
||||||
|
"$type": "CompressedMember",
|
||||||
|
"Id": "71169845-2e5f-433d-bad2-c442222354d7",
|
||||||
|
"Bucling": false,
|
||||||
|
"GeometryLength": 3.0,
|
||||||
|
"LengthFactorX": 1.0,
|
||||||
|
"DiagramFactorX": 1.0,
|
||||||
|
"LengthFactorY": 1.0,
|
||||||
|
"DiagramFactorY": 1.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Comment": "",
|
||||||
|
"Color": "#FF800000"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -122,6 +122,7 @@
|
|||||||
|
|
||||||
<Style x:Key="ButtonResultCanvas" TargetType="Canvas" BasedOn="{StaticResource ButtonCanvas}">
|
<Style x:Key="ButtonResultCanvas" TargetType="Canvas" BasedOn="{StaticResource ButtonCanvas}">
|
||||||
<Setter Property="Background" Value="{DynamicResource ResultCanvas}"/>
|
<Setter Property="Background" Value="{DynamicResource ResultCanvas}"/>
|
||||||
|
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<Style x:Key="ButtonRect" TargetType="Rectangle">
|
<Style x:Key="ButtonRect" TargetType="Rectangle">
|
||||||
@@ -228,15 +229,80 @@
|
|||||||
</Canvas>
|
</Canvas>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="MomentCurvature">
|
||||||
|
<Path Margin="4" Data="M 3 18 l 4 -7 h 4 l 8 -7 h 5" Stroke="Black"/>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
<DataTemplate x:Key="MomentCurvatureDiagram">
|
<DataTemplate x:Key="MomentCurvatureDiagram">
|
||||||
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
<Canvas.Children>
|
<Canvas.Children>
|
||||||
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
|
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
|
||||||
<Path Margin="4" Data="M 3 18 l 4 -7 h 4 l 8 -7 h 5" Stroke="Black"/>
|
<ContentControl ContentTemplate="{DynamicResource MomentCurvature}"/>
|
||||||
</Canvas.Children>
|
</Canvas.Children>
|
||||||
</Canvas>
|
</Canvas>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="MomentCurvatureCrackDiagram">
|
||||||
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
|
<Canvas.Children>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource CoordGrid}"/>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource MomentCurvature}"/>
|
||||||
|
<TextBlock Text="Crc" FontSize="8" FontWeight="Bold" Margin="4,2,0,0"/>
|
||||||
|
</Canvas.Children>
|
||||||
|
</Canvas>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="CrackForces">
|
||||||
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
|
<Canvas.Children>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
|
||||||
|
<Path Margin="4" Data="M 0 10 h 5 l -1 3 l 1 3 l 0 -3 l 1 -3 h 5 l -1 3 l 1 4 l 0 -3 l 1 -4 h 6 l -1 3 l 1 3 l 0 -3 l 1 -3 h 5 v 14 h -24 z" Fill="DarkGray" Stroke="Black"/>
|
||||||
|
<TextBlock Text="Ncrc" FontSize="8" FontWeight="Bold" Margin="4,2,0,0"/>
|
||||||
|
</Canvas.Children>
|
||||||
|
</Canvas>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="Prestrain">
|
||||||
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
|
<Canvas.Children>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
|
||||||
|
<Ellipse Margin="14,13,0,0" Height="4" Width="4" Fill="DarkGray" Stroke="Black"/>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource StraightArrow}">
|
||||||
|
<ContentControl.RenderTransform>
|
||||||
|
<TransformGroup>
|
||||||
|
<ScaleTransform ScaleX="0.6" ScaleY="0.6"/>
|
||||||
|
<TranslateTransform X="13" Y="6"/>
|
||||||
|
</TransformGroup>
|
||||||
|
</ContentControl.RenderTransform>
|
||||||
|
</ContentControl>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource StraightArrow}">
|
||||||
|
<ContentControl.RenderTransform>
|
||||||
|
<TransformGroup>
|
||||||
|
<ScaleTransform ScaleX="-0.6" ScaleY="0.6"/>
|
||||||
|
<TranslateTransform X="19" Y="6"/>
|
||||||
|
</TransformGroup>
|
||||||
|
</ContentControl.RenderTransform>
|
||||||
|
</ContentControl>
|
||||||
|
</Canvas.Children>
|
||||||
|
</Canvas>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="LappingLength">
|
||||||
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
|
<Canvas.Children>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource ButtonResultRectangle}"/>
|
||||||
|
<Line X1="10" Y1="17" X2="28" Y2="17" Stroke="Black"/>
|
||||||
|
<Line X1="3" Y1="20" X2="22" Y2="20" Stroke="Black"/>
|
||||||
|
<Line X1="10" Y1="6" X2="10" Y2="15" Stroke="Black"/>
|
||||||
|
<Line X1="22" Y1="6" X2="22" Y2="15" Stroke="Black"/>
|
||||||
|
<Line X1="7" Y1="10" X2="25" Y2="10" Stroke="Black"/>
|
||||||
|
<Line X1="7" Y1="13" X2="13" Y2="7" Stroke="Black"/>
|
||||||
|
<Line X1="19" Y1="13" X2="25" Y2="7" Stroke="Black"/>
|
||||||
|
</Canvas.Children>
|
||||||
|
</Canvas>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
|
||||||
<DataTemplate x:Key="ValuePointDiagram">
|
<DataTemplate x:Key="ValuePointDiagram">
|
||||||
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
<Canvas.Children>
|
<Canvas.Children>
|
||||||
@@ -452,4 +518,91 @@
|
|||||||
</Canvas>
|
</Canvas>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="Restore">
|
||||||
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
|
<Canvas.Children>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource Back}"/>
|
||||||
|
</Canvas.Children>
|
||||||
|
</Canvas>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="Back">
|
||||||
|
<Path Margin="4" Data="M -1 18 l 2 -9 l 1 3 a 15 15 90 0 1 22 -3 l -2 4 a 13 13 90 0 0 -18 2 l 3 3 z" Fill="White" Stroke="Black"/>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="Forward">
|
||||||
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
|
<Canvas.Children>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource Back}">
|
||||||
|
<ContentControl.RenderTransform>
|
||||||
|
<TransformGroup>
|
||||||
|
<TranslateTransform Y="-5"/>
|
||||||
|
<ScaleTransform ScaleX="-1" CenterX="15" CenterY="8"/>
|
||||||
|
</TransformGroup>
|
||||||
|
</ContentControl.RenderTransform>
|
||||||
|
</ContentControl>
|
||||||
|
</Canvas.Children>
|
||||||
|
</Canvas>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="Renew">
|
||||||
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
|
<Canvas.Children>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource Back}">
|
||||||
|
<ContentControl.RenderTransform>
|
||||||
|
<TransformGroup>
|
||||||
|
<TranslateTransform Y="-6"/>
|
||||||
|
<ScaleTransform ScaleX="-1" CenterX="15" CenterY="8"/>
|
||||||
|
</TransformGroup>
|
||||||
|
</ContentControl.RenderTransform>
|
||||||
|
</ContentControl>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource Back}">
|
||||||
|
<ContentControl.RenderTransform>
|
||||||
|
<TransformGroup>
|
||||||
|
<TranslateTransform Y="-22"/>
|
||||||
|
<ScaleTransform ScaleY="-1" CenterX="15" CenterY="8"/>
|
||||||
|
</TransformGroup>
|
||||||
|
</ContentControl.RenderTransform>
|
||||||
|
</ContentControl>
|
||||||
|
</Canvas.Children>
|
||||||
|
</Canvas>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="RestoreAndDelete">
|
||||||
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
|
<Canvas.Children>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource DeleteAnalysis}"/>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource Back}"/>
|
||||||
|
</Canvas.Children>
|
||||||
|
</Canvas>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="StraightArrow">
|
||||||
|
<Path Margin="4" Data="M 5 13 l 0 -4 l 10 0 l 0 -3 l 5 5 l -5 5 l 0 -3 z" Fill="White" Stroke="Black"/>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="ExportToNewAnalysis">
|
||||||
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
|
<Canvas.Children>
|
||||||
|
<Path Margin="4" Data="M 12 22 l 0 -18 l 12 0 l 0 14 l -4 4 z" Fill="White" Stroke="Black"/>
|
||||||
|
<Path Margin="4" Data="M 20 22 l 0 -4 l 4 0 " Fill="White" Stroke="Black"/>
|
||||||
|
<TextBlock Margin="16, 4, 0, 0" Text="+-" FontSize="10"/>
|
||||||
|
<Path Margin="4" Data="M -1 18 l 0 -4 l 10 0 l 0 -3 l 5 5 l -5 5 l 0 -3 z" Fill="White" Stroke="Black"/>
|
||||||
|
</Canvas.Children>
|
||||||
|
</Canvas>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
|
<DataTemplate x:Key="Print">
|
||||||
|
<Canvas Style="{DynamicResource ButtonResultCanvas}">
|
||||||
|
<Canvas.Children>
|
||||||
|
<Rectangle Margin="9,8,0,0" Height="8" Width="15" Fill="White" Stroke="Black"/>
|
||||||
|
<Rectangle Margin="5,15,0,0" Height="10" Width="23" Fill="DarkGray" Stroke="Black"/>
|
||||||
|
<Ellipse Margin="8,18,0,0" Height="2" Width="2" Fill="Black" Stroke="Black"/>
|
||||||
|
<Ellipse Margin="12,18,0,0" Height="2" Width="2" Fill="Black" Stroke="Black"/>
|
||||||
|
<Ellipse Margin="16,18,0,0" Height="2" Width="2" Fill="Black" Stroke="Black"/>
|
||||||
|
<Rectangle Margin="9,22,0,0" Height="6" Width="15" Fill="White" Stroke="Black"/>
|
||||||
|
</Canvas.Children>
|
||||||
|
</Canvas>
|
||||||
|
</DataTemplate>
|
||||||
|
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
Binary file not shown.
@@ -89,6 +89,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Documentation\Manuals\" />
|
<Folder Include="Documentation\Manuals\" />
|
||||||
|
<Folder Include="Documentation\Examples\" />
|
||||||
<Folder Include="Infrastructure\UI\DataContexts\Logics\" />
|
<Folder Include="Infrastructure\UI\DataContexts\Logics\" />
|
||||||
<Folder Include="Resources\" />
|
<Folder Include="Resources\" />
|
||||||
<Folder Include="Services\Settings\" />
|
<Folder Include="Services\Settings\" />
|
||||||
|
|||||||
@@ -10,9 +10,40 @@
|
|||||||
Title="Calculation Results" Height="450" Width="850" MinHeight="400" MinWidth="650" WindowStartupLocation="CenterScreen">
|
Title="Calculation Results" Height="450" Width="850" MinHeight="400" MinWidth="650" WindowStartupLocation="CenterScreen">
|
||||||
<DockPanel>
|
<DockPanel>
|
||||||
<ToolBarTray DockPanel.Dock="Top">
|
<ToolBarTray DockPanel.Dock="Top">
|
||||||
|
<ToolBar Name="Prestressing">
|
||||||
|
<Button Style="{DynamicResource ToolButton}" Command="{Binding SetPrestrainCommand}">
|
||||||
|
<Button.ToolTip>
|
||||||
|
<uc:ButtonToolTipEh HeaderText="Set prestrain"
|
||||||
|
IconContent="{StaticResource Prestrain}"
|
||||||
|
DescriptionText="Set strain from selected combination as auto prestrain (not available if selected result is invalid)"/>
|
||||||
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
|
<ContentControl ContentTemplate="{StaticResource Prestrain}"/>
|
||||||
|
</Viewbox>
|
||||||
|
</Button>
|
||||||
|
</ToolBar>
|
||||||
|
<ToolBar Name="Lapping">
|
||||||
|
<Button Style="{DynamicResource ToolButton}" Command="{Binding ShowAnchorageCommand}">
|
||||||
|
<Button.ToolTip>
|
||||||
|
<uc:ButtonToolTipEh HeaderText="Show lapping length"
|
||||||
|
IconContent="{StaticResource LappingLength}"
|
||||||
|
DescriptionText="Calculate and show development and lapping length (not available if selected result is invalid)"/>
|
||||||
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
|
<ContentControl ContentTemplate="{StaticResource LappingLength}"/>
|
||||||
|
</Viewbox>
|
||||||
|
</Button>
|
||||||
|
</ToolBar>
|
||||||
<ToolBar Name="CrackResult">
|
<ToolBar Name="CrackResult">
|
||||||
<Button Style="{StaticResource ToolButton}" Command="{Binding ShowCrackResultCommand}" ToolTip="Show force of cracking">
|
<Button Style="{DynamicResource ToolButton}" Command="{Binding ShowCrackResultCommand}">
|
||||||
<Image Source="/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/32px_crack.png"/>
|
<Button.ToolTip>
|
||||||
|
<uc:ButtonToolTipEh HeaderText="Show result step by step"
|
||||||
|
IconContent="{StaticResource CrackForces}"
|
||||||
|
DescriptionText="Show proportional combination of forces where cracks are appeared"/>
|
||||||
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
|
<ContentControl ContentTemplate="{StaticResource CrackForces}"/>
|
||||||
|
</Viewbox>
|
||||||
</Button>
|
</Button>
|
||||||
</ToolBar>
|
</ToolBar>
|
||||||
<ToolBar Name="InterpolatedResultToolBar">
|
<ToolBar Name="InterpolatedResultToolBar">
|
||||||
@@ -22,7 +53,9 @@
|
|||||||
IconContent="{StaticResource StepSolution}"
|
IconContent="{StaticResource StepSolution}"
|
||||||
DescriptionText="Show result step by step for selected load combination"/>
|
DescriptionText="Show result step by step for selected load combination"/>
|
||||||
</Button.ToolTip>
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
<ContentControl ContentTemplate="{DynamicResource StepSolution}"/>
|
<ContentControl ContentTemplate="{DynamicResource StepSolution}"/>
|
||||||
|
</Viewbox>
|
||||||
</Button>
|
</Button>
|
||||||
<Button Style="{DynamicResource ToolButton}" Command="{Binding ShowGraphsCommand}">
|
<Button Style="{DynamicResource ToolButton}" Command="{Binding ShowGraphsCommand}">
|
||||||
<Button.ToolTip>
|
<Button.ToolTip>
|
||||||
@@ -30,7 +63,9 @@
|
|||||||
IconContent="{StaticResource MomentCurvatureDiagram}"
|
IconContent="{StaticResource MomentCurvatureDiagram}"
|
||||||
DescriptionText="Show moment-curvature diagram as result of stepped solution"/>
|
DescriptionText="Show moment-curvature diagram as result of stepped solution"/>
|
||||||
</Button.ToolTip>
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
<ContentControl ContentTemplate="{DynamicResource MomentCurvatureDiagram}"/>
|
<ContentControl ContentTemplate="{DynamicResource MomentCurvatureDiagram}"/>
|
||||||
|
</Viewbox>
|
||||||
</Button>
|
</Button>
|
||||||
<Button Style="{DynamicResource ToolButton}" Command="{Binding GraphValuePointsCommand}">
|
<Button Style="{DynamicResource ToolButton}" Command="{Binding GraphValuePointsCommand}">
|
||||||
<Button.ToolTip>
|
<Button.ToolTip>
|
||||||
@@ -38,7 +73,19 @@
|
|||||||
IconContent="{StaticResource ValuePointDiagram}"
|
IconContent="{StaticResource ValuePointDiagram}"
|
||||||
DescriptionText="Show results for value point as result of stepped solution"/>
|
DescriptionText="Show results for value point as result of stepped solution"/>
|
||||||
</Button.ToolTip>
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
<ContentControl ContentTemplate="{DynamicResource ValuePointDiagram}"/>
|
<ContentControl ContentTemplate="{DynamicResource ValuePointDiagram}"/>
|
||||||
|
</Viewbox>
|
||||||
|
</Button>
|
||||||
|
<Button Style="{DynamicResource ToolButton}" Command="{Binding ShowCrackGraphsCommand}">
|
||||||
|
<Button.ToolTip>
|
||||||
|
<uc:ButtonToolTipEh HeaderText="Show crack moment-curvature diagram"
|
||||||
|
IconContent="{StaticResource MomentCurvatureCrackDiagram}"
|
||||||
|
DescriptionText="Show moment-curvature diagram as result of stepped solution with considering cracks"/>
|
||||||
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
|
<ContentControl ContentTemplate="{StaticResource MomentCurvatureCrackDiagram}" FontSize="8"/>
|
||||||
|
</Viewbox>
|
||||||
</Button>
|
</Button>
|
||||||
</ToolBar>
|
</ToolBar>
|
||||||
<ToolBar Name="InteractionDiagramToolBar">
|
<ToolBar Name="InteractionDiagramToolBar">
|
||||||
@@ -48,7 +95,9 @@
|
|||||||
IconContent="{StaticResource InteractionDiagram}"
|
IconContent="{StaticResource InteractionDiagram}"
|
||||||
DescriptionText="Show interaction diagram, which means line of limit bearing capacity"/>
|
DescriptionText="Show interaction diagram, which means line of limit bearing capacity"/>
|
||||||
</Button.ToolTip>
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
<ContentControl ContentTemplate="{DynamicResource InteractionDiagram}"/>
|
<ContentControl ContentTemplate="{DynamicResource InteractionDiagram}"/>
|
||||||
|
</Viewbox>
|
||||||
</Button>
|
</Button>
|
||||||
</ToolBar>
|
</ToolBar>
|
||||||
<ToolBar Name="IsoFieldToolBar">
|
<ToolBar Name="IsoFieldToolBar">
|
||||||
@@ -101,7 +150,7 @@
|
|||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition/>
|
<ColumnDefinition/>
|
||||||
<ColumnDefinition Width="90"/>
|
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition/>
|
<RowDefinition/>
|
||||||
@@ -132,11 +181,6 @@
|
|||||||
<DataGridTextColumn Header="Description" Width="300" Binding="{Binding Description}"/>
|
<DataGridTextColumn Header="Description" Width="300" Binding="{Binding Description}"/>
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
<StackPanel Grid.Column="1">
|
|
||||||
<Button Margin="3" Content="CrcDiagrams" ToolTip="Show diagrams for cracked section" Command="{Binding ShowCrackGraphsCommand}"/>
|
|
||||||
<Button Margin="3" Content="Set Prestrain" ToolTip="Set strains as auto prestrain" Command="{Binding SetPrestrainCommand}"/>
|
|
||||||
<Button Margin="3" Content="Anchorage" ToolTip="Set strains as auto prestrain" Command="{Binding ShowAnchorageCommand}"/>
|
|
||||||
</StackPanel>
|
|
||||||
<StatusBar Grid.Row="1">
|
<StatusBar Grid.Row="1">
|
||||||
<StatusBarItem>
|
<StatusBarItem>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
|
|||||||
@@ -315,7 +315,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu
|
|||||||
(setPrestrainCommand = new RelayCommand(o =>
|
(setPrestrainCommand = new RelayCommand(o =>
|
||||||
{
|
{
|
||||||
SetPrestrain();
|
SetPrestrain();
|
||||||
}, o => SelectedResult != null
|
}, o => SelectedResult != null && SelectedResult.IsValid
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,18 +4,30 @@
|
|||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:local="clr-namespace:StructureHelper.Windows.CalculationWindows.ProgressViews"
|
xmlns:local="clr-namespace:StructureHelper.Windows.CalculationWindows.ProgressViews"
|
||||||
|
xmlns:uc="clr-namespace:StructureHelper.Windows.UserControls"
|
||||||
d:DataContext="{d:DesignInstance local:TraceDocumentVM}"
|
d:DataContext="{d:DesignInstance local:TraceDocumentVM}"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="Trace Document Viewer" Height="450" Width="800" MinHeight="400" MinWidth="600" WindowStartupLocation="CenterScreen">
|
Title="Trace Document Viewer" Height="600" Width="800" MinHeight="400" MinWidth="600" WindowStartupLocation="CenterScreen">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<DockPanel>
|
||||||
<ColumnDefinition Width="*"/>
|
<ToolBarTray DockPanel.Dock="Top">
|
||||||
<ColumnDefinition Width="120"/>
|
<ToolBar>
|
||||||
</Grid.ColumnDefinitions>
|
<Button Style="{StaticResource ToolButton}"
|
||||||
<FlowDocumentReader Name="DocumentReader" ViewingMode="Scroll"/>
|
Command="{Binding PrintDocumentCommand}">
|
||||||
<StackPanel Grid.Column="1">
|
<Button.ToolTip>
|
||||||
<GroupBox Header="Tab gap">
|
<uc:ButtonToolTipEh HeaderText="Print"
|
||||||
<TextBox Text="{Binding TabGap, ValidatesOnExceptions=True}" />
|
IconContent="{StaticResource Print}"
|
||||||
|
DescriptionText="Print current document to phisical or virtual printer"/>
|
||||||
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource Print}"/>
|
||||||
|
</Viewbox>
|
||||||
|
</Button>
|
||||||
|
</ToolBar>
|
||||||
|
<ToolBar>
|
||||||
|
<StackPanel Grid.Column="1" Orientation="Horizontal">
|
||||||
|
<GroupBox Width="100" Header="Tab gap">
|
||||||
|
<TextBox Height="22" Text="{Binding TabGap, ValidatesOnExceptions=True}" VerticalAlignment="Top" />
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
<GroupBox Header="Max priority">
|
<GroupBox Header="Max priority">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
@@ -26,8 +38,23 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
<Button Margin="3" Content="Rebuild" ToolTip="Rebuild document" Command="{Binding RebuildCommand}"/>
|
|
||||||
<Button Margin="3" Content="Print" ToolTip="Print document" Command="{Binding PrintDocumentCommand}"/>
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
<Button Style="{StaticResource ToolButton}"
|
||||||
|
Command="{Binding RebuildCommand}">
|
||||||
|
<Button.ToolTip>
|
||||||
|
<uc:ButtonToolTipEh HeaderText="Rebuild document"
|
||||||
|
IconContent="{StaticResource Renew}"
|
||||||
|
DescriptionText="Rebuild current document considering new values of gap and priority"/>
|
||||||
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
|
<ContentControl ContentTemplate="{StaticResource Renew}"/>
|
||||||
|
</Viewbox>
|
||||||
|
</Button>
|
||||||
|
</ToolBar>
|
||||||
|
</ToolBarTray>
|
||||||
|
<Grid>
|
||||||
|
<FlowDocumentReader Name="DocumentReader" ViewingMode="Scroll"/>
|
||||||
|
</Grid>
|
||||||
|
</DockPanel>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Window>
|
</Window>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using StructureHelper.Infrastructure;
|
using StructureHelper.Infrastructure;
|
||||||
using StructureHelper.Windows.MainWindow.Analyses;
|
using StructureHelper.Windows.MainWindow.Analyses;
|
||||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||||
|
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||||
using StructureHelperCommon.Infrastructures.Settings;
|
using StructureHelperCommon.Infrastructures.Settings;
|
||||||
using StructureHelperCommon.Models.Analyses;
|
using StructureHelperCommon.Models.Analyses;
|
||||||
using StructureHelperLogic.Models.Analyses;
|
using StructureHelperLogic.Models.Analyses;
|
||||||
@@ -18,6 +19,7 @@ namespace StructureHelper.Windows.MainWindow
|
|||||||
{
|
{
|
||||||
public class AnalysesLogic : ViewModelBase
|
public class AnalysesLogic : ViewModelBase
|
||||||
{
|
{
|
||||||
|
private IUpdateStrategy<IAnalysis> updateStrategy = new AnalysisUpdateStrategy();
|
||||||
private RelayCommand? addAnalyisCommand;
|
private RelayCommand? addAnalyisCommand;
|
||||||
private RelayCommand? runCommand;
|
private RelayCommand? runCommand;
|
||||||
private RelayCommand? editCommand;
|
private RelayCommand? editCommand;
|
||||||
@@ -108,6 +110,7 @@ namespace StructureHelper.Windows.MainWindow
|
|||||||
VersionsViewModel viewModel = new(SelectedAnalysis.Analysis.VersionProcessor);
|
VersionsViewModel viewModel = new(SelectedAnalysis.Analysis.VersionProcessor);
|
||||||
var wnd = new VersionsView(viewModel);
|
var wnd = new VersionsView(viewModel);
|
||||||
wnd.ShowDialog();
|
wnd.ShowDialog();
|
||||||
|
Refresh();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -144,14 +147,12 @@ namespace StructureHelper.Windows.MainWindow
|
|||||||
{
|
{
|
||||||
if (SelectedAnalysis is not null)
|
if (SelectedAnalysis is not null)
|
||||||
{
|
{
|
||||||
var name = SelectedAnalysis.Analysis.Name;
|
var tmpItem = SelectedAnalysis.Analysis.Clone() as IAnalysis;
|
||||||
var tags = SelectedAnalysis.Analysis.Tags;
|
|
||||||
var wnd = new AnalysisView(SelectedAnalysis);
|
var wnd = new AnalysisView(SelectedAnalysis);
|
||||||
wnd.ShowDialog();
|
wnd.ShowDialog();
|
||||||
if (wnd.DialogResult != true)
|
if (wnd.DialogResult != true)
|
||||||
{
|
{
|
||||||
SelectedAnalysis.Analysis.Name = name;
|
updateStrategy.Update(SelectedAnalysis.Analysis, tmpItem);
|
||||||
SelectedAnalysis.Analysis.Tags = tags;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
xmlns:local="clr-namespace:StructureHelper.Windows.MainWindow.Analyses"
|
xmlns:local="clr-namespace:StructureHelper.Windows.MainWindow.Analyses"
|
||||||
d:DataContext="{d:DesignInstance local:AnalysisViewModel}"
|
d:DataContext="{d:DesignInstance local:AnalysisViewModel}"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="Analysis" Height="200" Width="300" WindowStartupLocation="CenterScreen" ResizeMode="NoResize">
|
Title="Analysis" Height="250" Width="300" WindowStartupLocation="CenterScreen" ResizeMode="NoResize">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition/>
|
<RowDefinition/>
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="25"/>
|
<RowDefinition Height="25"/>
|
||||||
|
<RowDefinition Height="75"/>
|
||||||
<RowDefinition Height="*"/>
|
<RowDefinition Height="*"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<TextBlock Grid.Row="0" Text="Name"/>
|
<TextBlock Grid.Row="0" Text="Name"/>
|
||||||
@@ -26,6 +27,9 @@
|
|||||||
<GroupBox Grid.Row="1" Grid.ColumnSpan="2" Header="Tags">
|
<GroupBox Grid.Row="1" Grid.ColumnSpan="2" Header="Tags">
|
||||||
<TextBox Margin="1" Text="{Binding Tags}"/>
|
<TextBox Margin="1" Text="{Binding Tags}"/>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
<GroupBox Grid.Row="2" Grid.ColumnSpan="2" Header="Comment">
|
||||||
|
<TextBox Margin="1" Text="{Binding Comment}"/>
|
||||||
|
</GroupBox>
|
||||||
</Grid>
|
</Grid>
|
||||||
<ContentControl Grid.Row="1" ContentTemplate="{StaticResource OkCancelButtons}" Content="{Binding}"/>
|
<ContentControl Grid.Row="1" ContentTemplate="{StaticResource OkCancelButtons}" Content="{Binding}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Media;
|
||||||
|
|
||||||
namespace StructureHelper.Windows.MainWindow.Analyses
|
namespace StructureHelper.Windows.MainWindow.Analyses
|
||||||
{
|
{
|
||||||
@@ -23,6 +24,17 @@ namespace StructureHelper.Windows.MainWindow.Analyses
|
|||||||
get => analysis.Tags;
|
get => analysis.Tags;
|
||||||
set => analysis.Tags = value;
|
set => analysis.Tags = value;
|
||||||
}
|
}
|
||||||
|
public Color Color
|
||||||
|
{
|
||||||
|
get => analysis.Color;
|
||||||
|
set => analysis.Color = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Comment
|
||||||
|
{
|
||||||
|
get => analysis.Comment;
|
||||||
|
set => analysis.Comment = value;
|
||||||
|
}
|
||||||
|
|
||||||
public AnalysisViewModel(IAnalysis analysis)
|
public AnalysisViewModel(IAnalysis analysis)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
xmlns:uc="clr-namespace:StructureHelper.Windows.UserControls"
|
xmlns:uc="clr-namespace:StructureHelper.Windows.UserControls"
|
||||||
d:DataContext="{d:DesignInstance local:VersionsViewModel}"
|
d:DataContext="{d:DesignInstance local:VersionsViewModel}"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="VersionsView" Height="250" Width="400" MinHeight="250" MinWidth="400" MaxHeight="800" MaxWidth="1000" WindowStartupLocation="CenterScreen">
|
Title="Version Viewer" Height="250" Width="400" MinHeight="250" MinWidth="400" MaxHeight="800" MaxWidth="1000" WindowStartupLocation="CenterScreen">
|
||||||
<Grid>
|
<Grid>
|
||||||
<DockPanel>
|
<DockPanel>
|
||||||
<ToolBarTray DockPanel.Dock="Top">
|
<ToolBarTray DockPanel.Dock="Top">
|
||||||
@@ -27,19 +27,50 @@
|
|||||||
Command="{Binding ReturnToVersionCommand}">
|
Command="{Binding ReturnToVersionCommand}">
|
||||||
<Button.ToolTip>
|
<Button.ToolTip>
|
||||||
<uc:ButtonToolTipEh HeaderText="Restore to selected version"
|
<uc:ButtonToolTipEh HeaderText="Restore to selected version"
|
||||||
IconContent="{StaticResource DeleteAnalysis}"
|
IconContent="{StaticResource RestoreAndDelete}"
|
||||||
DescriptionText="Removes all versions which are younger than selected one"/>
|
DescriptionText="Removes all versions which are younger than selected one"/>
|
||||||
</Button.ToolTip>
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource RestoreAndDelete}"/>
|
||||||
|
</Viewbox>
|
||||||
|
</Button>
|
||||||
|
<Button Style="{StaticResource ToolButton}"
|
||||||
|
Command="{Binding DeleteVersionCommand}">
|
||||||
|
<Button.ToolTip>
|
||||||
|
<uc:ButtonToolTipEh HeaderText="Delete selected version"
|
||||||
|
IconContent="{StaticResource DeleteAnalysis}"
|
||||||
|
DescriptionText="Deletes selected version (not available for unique version)"/>
|
||||||
|
</Button.ToolTip>
|
||||||
<Viewbox>
|
<Viewbox>
|
||||||
<ContentControl ContentTemplate="{DynamicResource DeleteAnalysis}"/>
|
<ContentControl ContentTemplate="{DynamicResource DeleteAnalysis}"/>
|
||||||
</Viewbox>
|
</Viewbox>
|
||||||
</Button>
|
</Button>
|
||||||
|
<Button Style="{StaticResource ToolButton}"
|
||||||
|
Command="{Binding ExportToNewCommand}">
|
||||||
|
<Button.ToolTip>
|
||||||
|
<uc:ButtonToolTipEh HeaderText="Export to new analysis"
|
||||||
|
IconContent="{StaticResource ExportToNewAnalysis}"
|
||||||
|
DescriptionText="Exports selected version to new analysis"/>
|
||||||
|
</Button.ToolTip>
|
||||||
|
<Viewbox>
|
||||||
|
<ContentControl ContentTemplate="{DynamicResource ExportToNewAnalysis}"/>
|
||||||
|
</Viewbox>
|
||||||
|
</Button>
|
||||||
</ToolBar>
|
</ToolBar>
|
||||||
</ToolBarTray>
|
</ToolBarTray>
|
||||||
<ListBox ItemsSource="{Binding DateVersions}" SelectedItem="{Binding SelectedVersion}">
|
<ListBox ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}">
|
||||||
<ListBox.ItemTemplate>
|
<ListBox.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock Text="{Binding DateTime}"/>
|
<Grid MinWidth="375">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="20"/>
|
||||||
|
<ColumnDefinition Width="150"/>
|
||||||
|
<ColumnDefinition Width="20"/>
|
||||||
|
<ColumnDefinition Width="*"/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<TextBlock Grid.Column="1" Text="{Binding DateTime}"/>
|
||||||
|
<TextBox Grid.Column="3" Text="{Binding Comment}"/>
|
||||||
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ListBox.ItemTemplate>
|
</ListBox.ItemTemplate>
|
||||||
</ListBox>
|
</ListBox>
|
||||||
|
|||||||
@@ -13,24 +13,28 @@ using System.Threading.Tasks;
|
|||||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
|
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using StructureHelper.Windows.ViewModels.Errors;
|
using StructureHelper.Windows.ViewModels.Errors;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using StructureHelperLogic.Models.Analyses;
|
||||||
|
using StructureHelperLogics.Models.CrossSections;
|
||||||
|
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||||
|
using StructureHelperCommon.Infrastructures.Settings;
|
||||||
|
|
||||||
namespace StructureHelper.Windows.MainWindow.Analyses
|
namespace StructureHelper.Windows.MainWindow.Analyses
|
||||||
{
|
{
|
||||||
public class VersionsViewModel : ViewModelBase
|
public class VersionsViewModel : SelectItemVM<IDateVersion>
|
||||||
{
|
{
|
||||||
|
private const string errorOfDeleting = "Error of deleting of version";
|
||||||
private IVersionProcessor versionProcessor;
|
private IVersionProcessor versionProcessor;
|
||||||
private RelayCommand addNewVersionCommand;
|
private RelayCommand addNewVersionCommand;
|
||||||
private RelayCommand returnToVersionCommand;
|
private RelayCommand returnToVersionCommand;
|
||||||
|
private RelayCommand deleteVersionCommand;
|
||||||
|
private RelayCommand exportToNewCommand;
|
||||||
|
|
||||||
public VersionsViewModel(IVersionProcessor versionProcessor)
|
public VersionsViewModel(IVersionProcessor versionProcessor) : base(versionProcessor.Versions)
|
||||||
{
|
{
|
||||||
this.versionProcessor = versionProcessor;
|
this.versionProcessor = versionProcessor;
|
||||||
Refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public IDateVersion SelectedVersion { get; set; }
|
|
||||||
public ObservableCollection<IDateVersion> DateVersions { get; set; } = new();
|
|
||||||
|
|
||||||
public RelayCommand AddNewVersionCommand
|
public RelayCommand AddNewVersionCommand
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -39,7 +43,7 @@ namespace StructureHelper.Windows.MainWindow.Analyses
|
|||||||
{
|
{
|
||||||
AddNewVersion();
|
AddNewVersion();
|
||||||
},
|
},
|
||||||
b => SelectedVersion is not null);
|
b => SelectedItem is not null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,26 +55,109 @@ namespace StructureHelper.Windows.MainWindow.Analyses
|
|||||||
{
|
{
|
||||||
ReturnToVersion();
|
ReturnToVersion();
|
||||||
},
|
},
|
||||||
b => SelectedVersion is not null);
|
b => SelectedItem is not null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RelayCommand DeleteVersionCommand
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return deleteVersionCommand ??= new RelayCommand(obj =>
|
||||||
|
{
|
||||||
|
DeleteVersion();
|
||||||
|
},
|
||||||
|
b => SelectedItem is not null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public RelayCommand ExportToNewCommand
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return exportToNewCommand ??= new RelayCommand(obj =>
|
||||||
|
{
|
||||||
|
ExportToNew();
|
||||||
|
},
|
||||||
|
b => SelectedItem is not null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ExportToNew()
|
||||||
|
{
|
||||||
|
if (SelectedItem is null) return;
|
||||||
|
SafetyProcessor.RunSafeProcess(ExportingToNew, "Error of export");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ExportingToNew()
|
||||||
|
{
|
||||||
|
if (SelectedItem.AnalysisVersion is ICrossSection oldCrossSection)
|
||||||
|
{
|
||||||
|
ProcessCrossSectionAnalysis(oldCrossSection);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(SelectedItem.AnalysisVersion));
|
||||||
|
}
|
||||||
|
ProgramSetting.SetCurrentProjectToNotActual();
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessCrossSectionAnalysis(ICrossSection oldCrossSection)
|
||||||
|
{
|
||||||
|
string newComment = "Exported version from: " + SelectedItem.DateTime;
|
||||||
|
ICrossSection newCrossSection = oldCrossSection.Clone() as ICrossSection;
|
||||||
|
ICrossSectionNdmAnalysis newAnalysis = new CrossSectionNdmAnalysis()
|
||||||
|
{
|
||||||
|
Name = "New NDM Analysis",
|
||||||
|
Comment = newComment,
|
||||||
|
};
|
||||||
|
newAnalysis.VersionProcessor.AddVersion(newCrossSection);
|
||||||
|
var visualAnalysis = new VisualAnalysis(newAnalysis);
|
||||||
|
ProgramSetting.CurrentProject.VisualAnalyses.Add(visualAnalysis);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DeleteVersion()
|
||||||
|
{
|
||||||
|
if (SelectedItem is null) return;
|
||||||
|
if (CheckIfOnceVersion() == true) { return; }
|
||||||
|
if (ConfirmDeletenig() != true) { return; }
|
||||||
|
SafetyProcessor.RunSafeProcess(DeletingOfVersion, errorOfDeleting);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DeletingOfVersion()
|
||||||
|
{
|
||||||
|
versionProcessor.Versions.Remove(SelectedItem);
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
private void ReturnToVersion()
|
private void ReturnToVersion()
|
||||||
{
|
{
|
||||||
if (SelectedVersion is null) return;
|
if (SelectedItem is null) return;
|
||||||
|
if (CheckIfOnceVersion() == true) { return; }
|
||||||
|
if (ConfirmDeletenig() != true) { return; }
|
||||||
|
SafetyProcessor.RunSafeProcess(RemovingOfVersion, errorOfDeleting);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool ConfirmDeletenig()
|
||||||
|
{
|
||||||
|
MessageBoxResult result = MessageBox.Show("Please, confirm deleting", "Delete version(s)?", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
||||||
|
if (result == MessageBoxResult.OK) { return true; }
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CheckIfOnceVersion()
|
||||||
|
{
|
||||||
if (versionProcessor.Versions.Count <= 1)
|
if (versionProcessor.Versions.Count <= 1)
|
||||||
{
|
{
|
||||||
MessageBox.Show("It is not possible to delete last version", "There is only 1 version", MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK);
|
MessageBox.Show("It is not possible to delete last version", "There is only 1 version", MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK);
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
MessageBoxResult result = MessageBox.Show("Please, confirm deleting", "Delete version(s)?", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
|
return false;
|
||||||
if (result != MessageBoxResult.OK) { return; }
|
|
||||||
SafetyProcessor.RunSafeProcess(RemovingOfVersion, "Error of deleting of version");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RemovingOfVersion()
|
private void RemovingOfVersion()
|
||||||
{
|
{
|
||||||
while (SelectedVersion != versionProcessor.GetCurrentVersion())
|
while (SelectedItem != versionProcessor.GetCurrentVersion())
|
||||||
{
|
{
|
||||||
versionProcessor
|
versionProcessor
|
||||||
.Versions
|
.Versions
|
||||||
@@ -81,22 +168,22 @@ namespace StructureHelper.Windows.MainWindow.Analyses
|
|||||||
|
|
||||||
private void AddNewVersion()
|
private void AddNewVersion()
|
||||||
{
|
{
|
||||||
if (SelectedVersion is null) { return; }
|
if (SelectedItem is null) { return; }
|
||||||
SafetyProcessor.RunSafeProcess(AddVersion, "Error of adding of new version");
|
SafetyProcessor.RunSafeProcess(AddVersion, "Error of adding of new version");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddVersion()
|
private void AddVersion()
|
||||||
{
|
{
|
||||||
var selectedItem = SelectedVersion.AnalysisVersion as ICloneable;
|
var selectedItem = SelectedItem.AnalysisVersion as ICloneable;
|
||||||
versionProcessor.AddVersion(selectedItem.Clone() as ISaveable);
|
versionProcessor.AddVersion(selectedItem.Clone() as ISaveable);
|
||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Refresh()
|
private new void Refresh()
|
||||||
{
|
{
|
||||||
DateVersions.Clear();
|
Items.Clear();
|
||||||
versionProcessor.Versions.ForEach(x => DateVersions.Add(x));
|
versionProcessor.Versions.ForEach(x => Items.Add(x));
|
||||||
SelectedVersion = DateVersions[^1];
|
SelectedItem = Items[^1];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,7 +134,9 @@
|
|||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
</ToolBar>
|
</ToolBar>
|
||||||
<ListBox Grid.Row="1" ItemsSource="{Binding FilteredAnalyses}" SelectedItem="{Binding SelectedAnalysis}">
|
<ListBox Grid.Row="1"
|
||||||
|
ItemsSource="{Binding FilteredAnalyses}"
|
||||||
|
SelectedItem="{Binding SelectedAnalysis}" MouseDoubleClick="ListBox_MouseDoubleClick">
|
||||||
<ListBox.ItemTemplate>
|
<ListBox.ItemTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<Grid>
|
<Grid>
|
||||||
@@ -142,10 +144,13 @@
|
|||||||
<ColumnDefinition Width="20"/>
|
<ColumnDefinition Width="20"/>
|
||||||
<ColumnDefinition Width="200"/>
|
<ColumnDefinition Width="200"/>
|
||||||
<ColumnDefinition Width="20"/>
|
<ColumnDefinition Width="20"/>
|
||||||
|
<ColumnDefinition Width="100"/>
|
||||||
|
<ColumnDefinition Width="20"/>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock Grid.Column="1" Text="{Binding Analysis.Name}"/>
|
<TextBlock Grid.Column="1" Text="{Binding Analysis.Name}"/>
|
||||||
<TextBlock Grid.Column="3" Text="{Binding Analysis.Tags}"/>
|
<TextBlock Grid.Column="3" Text="{Binding Analysis.Tags}"/>
|
||||||
|
<TextBlock Grid.Column="5" Text="{Binding Analysis.Comment}"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</ListBox.ItemTemplate>
|
</ListBox.ItemTemplate>
|
||||||
|
|||||||
@@ -41,5 +41,10 @@ namespace StructureHelper.Windows.MainWindow
|
|||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||||
|
{
|
||||||
|
viewModel.AnalysesLogic.RunCommand.Execute(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -183,6 +183,10 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections
|
|||||||
{
|
{
|
||||||
SelectedItem.TraceLogger.TraceLoggerEntries.Clear();
|
SelectedItem.TraceLogger.TraceLoggerEntries.Clear();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SelectedItem.TraceLogger = new ShiftTraceLogger();
|
||||||
|
}
|
||||||
if (SelectedItem is LimitCurvesCalculator calculator)
|
if (SelectedItem is LimitCurvesCalculator calculator)
|
||||||
{
|
{
|
||||||
ShowInteractionDiagramByInputData(calculator);
|
ShowInteractionDiagramByInputData(calculator);
|
||||||
|
|||||||
@@ -5,10 +5,15 @@ using StructureHelperCommon.Models;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
|
||||||
namespace StructureHelper.Windows.ViewModels
|
namespace StructureHelper.Windows.ViewModels
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// View model which provides CRUD-operations with collection of items
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TItem">Type of items</typeparam>
|
||||||
public class SelectItemVM<TItem> : ViewModelBase, ICRUDViewModel<TItem> where TItem : class
|
public class SelectItemVM<TItem> : ViewModelBase, ICRUDViewModel<TItem> where TItem : class
|
||||||
{
|
{
|
||||||
private ICommand addCommand;
|
private ICommand addCommand;
|
||||||
@@ -16,11 +21,21 @@ namespace StructureHelper.Windows.ViewModels
|
|||||||
private ICommand copyCommand;
|
private ICommand copyCommand;
|
||||||
private ICommand editCommand;
|
private ICommand editCommand;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Shadow (true) collection of items
|
||||||
|
/// </summary>
|
||||||
public List<TItem> Collection { get; set; }
|
public List<TItem> Collection { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Items which has been added recently
|
||||||
|
/// </summary>
|
||||||
public TItem NewItem { get; set; }
|
public TItem NewItem { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Item which selected in visual collection
|
||||||
|
/// </summary>
|
||||||
public TItem SelectedItem { get; set; }
|
public TItem SelectedItem { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Visual collection of items
|
||||||
|
/// </summary>
|
||||||
public ObservableCollection<TItem> Items { get; private set; }
|
public ObservableCollection<TItem> Items { get; private set; }
|
||||||
|
|
||||||
public ICommand Add
|
public ICommand Add
|
||||||
@@ -128,6 +143,10 @@ namespace StructureHelper.Windows.ViewModels
|
|||||||
{
|
{
|
||||||
Items = new ObservableCollection<TItem>(Collection);
|
Items = new ObservableCollection<TItem>(Collection);
|
||||||
OnPropertyChanged(nameof(Items));
|
OnPropertyChanged(nameof(Items));
|
||||||
|
if (Items.Any())
|
||||||
|
{
|
||||||
|
SelectedItem = Items[^1];
|
||||||
|
}
|
||||||
AfterItemsEdit?.Invoke(this, new CRUDVMEventArgs());
|
AfterItemsEdit?.Invoke(this, new CRUDVMEventArgs());
|
||||||
}
|
}
|
||||||
public delegate void CRUDHandler(SelectItemVM<TItem> sender, CRUDVMEventArgs e);
|
public delegate void CRUDHandler(SelectItemVM<TItem> sender, CRUDVMEventArgs e);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ namespace StructureHelperCommon.Models.Analyses
|
|||||||
public Guid Id { get; }
|
public Guid Id { get; }
|
||||||
public DateTime DateTime { get; set; }
|
public DateTime DateTime { get; set; }
|
||||||
public ISaveable AnalysisVersion { get; set; }
|
public ISaveable AnalysisVersion { get; set; }
|
||||||
|
public string Comment { get; set; } = "...";
|
||||||
|
|
||||||
public DateVersion(Guid id)
|
public DateVersion(Guid id)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,5 +11,6 @@ namespace StructureHelperCommon.Models.Analyses
|
|||||||
{
|
{
|
||||||
DateTime DateTime { get; set; }
|
DateTime DateTime { get; set; }
|
||||||
ISaveable AnalysisVersion { get; set; }
|
ISaveable AnalysisVersion { get; set; }
|
||||||
|
string Comment { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using LoaderCalculator.Logics;
|
||||||
|
using LoaderCalculator.Data.Ndms;
|
||||||
|
|
||||||
namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||||
{
|
{
|
||||||
@@ -21,6 +23,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
|||||||
private LoaderOptions loaderData;
|
private LoaderOptions loaderData;
|
||||||
private Calculator calculator;
|
private Calculator calculator;
|
||||||
private ILoaderResults calcResult;
|
private ILoaderResults calcResult;
|
||||||
|
private IStressLogic stressLogic = new StressLogic();
|
||||||
|
|
||||||
public IForceTupleInputData InputData { get; set; }
|
public IForceTupleInputData InputData { get; set; }
|
||||||
|
|
||||||
@@ -102,7 +105,8 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
|||||||
|
|
||||||
private void ProcessInCorrectLoaderResult()
|
private void ProcessInCorrectLoaderResult()
|
||||||
{
|
{
|
||||||
TraceLogger?.AddMessage(string.Intern("Required accuracy rate has not achieved"), TraceLogStatuses.Error);
|
string message = string.Intern("Required accuracy rate has not achieved");
|
||||||
|
TraceLogger?.AddMessage(message, TraceLogStatuses.Error);
|
||||||
TraceLogger?.AddMessage($"Current accuracy {calcResult.AccuracyRate}, {calcResult.IterationCounter} iteration has done", TraceLogStatuses.Warning);
|
TraceLogger?.AddMessage($"Current accuracy {calcResult.AccuracyRate}, {calcResult.IterationCounter} iteration has done", TraceLogStatuses.Warning);
|
||||||
result.IsValid = false;
|
result.IsValid = false;
|
||||||
result.Description = string.Intern("Required accuracy rate has not achieved");
|
result.Description = string.Intern("Required accuracy rate has not achieved");
|
||||||
@@ -119,6 +123,35 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
|||||||
TraceLogger = TraceLogger
|
TraceLogger = TraceLogger
|
||||||
};
|
};
|
||||||
forceTupleTraceResultLogic.TraceResult(result);
|
forceTupleTraceResultLogic.TraceResult(result);
|
||||||
|
CheckOverStrainedNdms();
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CheckOverStrainedNdms()
|
||||||
|
{
|
||||||
|
bool checkResult = true;
|
||||||
|
TraceLogger?.AddMessage("Checking of limitation of strain");
|
||||||
|
List<INdm> overStrainedNdms = new();
|
||||||
|
foreach (var ndm in InputData.NdmCollection)
|
||||||
|
{
|
||||||
|
var strain = stressLogic.GetTotalStrain(calcResult.ForceStrainPair.StrainMatrix, ndm);
|
||||||
|
if (strain < ndm.Material.LimitNegativeStrain || strain > ndm.Material.LimitPositiveStrain)
|
||||||
|
{
|
||||||
|
TraceLogger?.AddMessage($"Elementary part x = {ndm.CenterX}, y = {ndm.CenterY} has strain epsilon = {strain}, positive limit strain epsilon+,max = {ndm.Material.LimitPositiveStrain}, negative limit strain epsilon-,min = {ndm.Material.LimitNegativeStrain}", TraceLogStatuses.Warning);
|
||||||
|
overStrainedNdms.Add(ndm);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (overStrainedNdms.Any())
|
||||||
|
{
|
||||||
|
result.IsValid = false;
|
||||||
|
checkResult = false;
|
||||||
|
string errorMessage = $"There are {overStrainedNdms.Count} elementary parts where strain are over limit";
|
||||||
|
result.Description += "\n" + errorMessage;
|
||||||
|
TraceLogger?.AddMessage(errorMessage, TraceLogStatuses.Error);
|
||||||
|
double sumOverStrainedArea = overStrainedNdms.Sum(x => x.Area);
|
||||||
|
double totalArea = InputData.NdmCollection.Sum(x => x.Area);
|
||||||
|
TraceLogger?.AddMessage($"Total area of over strained parts A = {sumOverStrainedArea}(m^2), that is {sumOverStrainedArea / totalArea * 100d}% of total area");
|
||||||
|
}
|
||||||
|
return checkResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GetLoaderResult()
|
private void GetLoaderResult()
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
|||||||
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(result));
|
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(result));
|
||||||
}
|
}
|
||||||
calcResult = ((IForcesTupleResult)result).LoaderResults;
|
calcResult = ((IForcesTupleResult)result).LoaderResults;
|
||||||
TraceLogger?.AddMessage($"Analysis is done succsesfully");
|
TraceLogger?.AddMessage($"Analysis of internal forces is done succsesfully");
|
||||||
TraceLogger?.AddMessage($"Current accuracy {calcResult.AccuracyRate} has achieved in {calcResult.IterationCounter} iteration", TraceLogStatuses.Debug);
|
TraceLogger?.AddMessage($"Current accuracy {calcResult.AccuracyRate} has achieved in {calcResult.IterationCounter} iteration", TraceLogStatuses.Debug);
|
||||||
var strainMatrix = calcResult.ForceStrainPair.StrainMatrix;
|
var strainMatrix = calcResult.ForceStrainPair.StrainMatrix;
|
||||||
var stiffness = new StiffnessLogic().GetStiffnessMatrix(ndmCollection, strainMatrix);
|
var stiffness = new StiffnessLogic().GetStiffnessMatrix(ndmCollection, strainMatrix);
|
||||||
|
|||||||
Reference in New Issue
Block a user