From 053db31e95399c96c85cdf61f4d2d0894ff88f24 Mon Sep 17 00:00:00 2001 From: BHoMBot Date: Tue, 25 Jun 2024 13:54:01 +0200 Subject: [PATCH 01/17] Upgrade AssemblyFileVersion to 7.3.0.0 --- MidasCivil_Adapter/Properties/AssemblyInfo.cs | 2 +- MidasCivil_Engine/Properties/AssemblyInfo.cs | 2 +- MidasCivil_oM/Properties/AssemblyInfo.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/MidasCivil_Adapter/Properties/AssemblyInfo.cs b/MidasCivil_Adapter/Properties/AssemblyInfo.cs index b8ba3e97..cf740d31 100644 --- a/MidasCivil_Adapter/Properties/AssemblyInfo.cs +++ b/MidasCivil_Adapter/Properties/AssemblyInfo.cs @@ -55,7 +55,7 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("7.0.0.0")] -[assembly: AssemblyFileVersion("7.2.0.0")] +[assembly: AssemblyFileVersion("7.3.0.0")] diff --git a/MidasCivil_Engine/Properties/AssemblyInfo.cs b/MidasCivil_Engine/Properties/AssemblyInfo.cs index bb136b39..6e49d4ad 100644 --- a/MidasCivil_Engine/Properties/AssemblyInfo.cs +++ b/MidasCivil_Engine/Properties/AssemblyInfo.cs @@ -55,7 +55,7 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("7.0.0.0")] -[assembly: AssemblyFileVersion("7.2.0.0")] +[assembly: AssemblyFileVersion("7.3.0.0")] diff --git a/MidasCivil_oM/Properties/AssemblyInfo.cs b/MidasCivil_oM/Properties/AssemblyInfo.cs index 54d3d3c5..4d0ac17d 100644 --- a/MidasCivil_oM/Properties/AssemblyInfo.cs +++ b/MidasCivil_oM/Properties/AssemblyInfo.cs @@ -55,7 +55,7 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("7.0.0.0")] -[assembly: AssemblyFileVersion("7.2.0.0")] +[assembly: AssemblyFileVersion("7.3.0.0")] From 26212d6a69fce3742badc9c572293f9e7fa7fd27 Mon Sep 17 00:00:00 2001 From: Peter Nugent Date: Thu, 27 Jun 2024 15:33:53 +0100 Subject: [PATCH 02/17] Remove PanelToFEMesh method which has been replaced in Structure_Engine --- MidasCivil_Engine/Compute/FEMeshToPanel.cs | 69 ---------------------- 1 file changed, 69 deletions(-) delete mode 100644 MidasCivil_Engine/Compute/FEMeshToPanel.cs diff --git a/MidasCivil_Engine/Compute/FEMeshToPanel.cs b/MidasCivil_Engine/Compute/FEMeshToPanel.cs deleted file mode 100644 index 7de84cf8..00000000 --- a/MidasCivil_Engine/Compute/FEMeshToPanel.cs +++ /dev/null @@ -1,69 +0,0 @@ -/* - * This file is part of the Buildings and Habitats object Model (BHoM) - * Copyright (c) 2015 - 2024, the respective contributors. All rights reserved. - * - * Each contributor holds copyright over their respective contributions. - * The project versioning (Git) records all such contribution source information. - * - * - * The BHoM is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3.0 of the License, or - * (at your option) any later version. - * - * The BHoM is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this code. If not, see . - */ - -using BH.oM.Adapters.MidasCivil; -using BH.Engine.Adapter; -using BH.oM.Structure.Elements; -using BH.oM.Geometry; -using System.Collections.Generic; -using System.Linq; -using BH.oM.Base.Attributes; - -namespace BH.Engine.Adapters.MidasCivil -{ - public static partial class Compute - { - /***************************************************/ - /**** Public Methods ****/ - /***************************************************/ - - [ToBeRemoved("4.2","Method was replaced in 4.2 by BH.Engine.Structure.Convert.FEMeshToPanel.")] - public static Panel FEMeshToPanel(FEMesh mesh) - { - List polylines = new List(); - - List points = new List(); - - foreach (Node node in mesh.Nodes) - { - points.Add(node.Position); - } - - points.Add(mesh.Nodes.First().Position); - polylines.Add(BH.Engine.Geometry.Create.Polyline(points)); - - List panels = BH.Engine.Structure.Create.Panel(polylines.Cast().ToList()); - - if (mesh.HasAdapterIdFragment(typeof(MidasCivilId))) - panels[0].SetAdapterId(typeof(MidasCivilId), mesh.AdapterId(typeof(MidasCivilId))); - - return panels[0]; - } - - /***************************************************/ - - } -} - - - - From ddbad1bf1b34f87541705395fba5d8b5917b073b Mon Sep 17 00:00:00 2001 From: Peter Nugent Date: Thu, 27 Jun 2024 15:48:37 +0100 Subject: [PATCH 03/17] Update MidasCivil_Engine.csproj --- MidasCivil_Engine/MidasCivil_Engine.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/MidasCivil_Engine/MidasCivil_Engine.csproj b/MidasCivil_Engine/MidasCivil_Engine.csproj index e78c316a..d9625b2c 100644 --- a/MidasCivil_Engine/MidasCivil_Engine.csproj +++ b/MidasCivil_Engine/MidasCivil_Engine.csproj @@ -100,7 +100,6 @@ - From 4d001cddd56f121433ded9268438a4fc0618b7fa Mon Sep 17 00:00:00 2001 From: Peter Nugent Date: Fri, 28 Jun 2024 14:01:43 +0100 Subject: [PATCH 04/17] Remove reference to FEMeshToPanel method and add new methods to compare control points --- MidasCivil_Engine/Objects/MeshCentreComparer.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/MidasCivil_Engine/Objects/MeshCentreComparer.cs b/MidasCivil_Engine/Objects/MeshCentreComparer.cs index 7d6be476..d948cc82 100644 --- a/MidasCivil_Engine/Objects/MeshCentreComparer.cs +++ b/MidasCivil_Engine/Objects/MeshCentreComparer.cs @@ -24,6 +24,9 @@ using BH.oM.Geometry; using BH.Engine.Structure; using System.Collections.Generic; +using System.Linq; +using BH.Engine.Base; +using BH.Engine.Geometry; namespace BH.Engine.Adapters.MidasCivil.Comparer { @@ -57,10 +60,15 @@ public bool Equals(FEMesh mesh1, FEMesh mesh2) if (mesh1.BHoM_Guid == mesh2.BHoM_Guid) return true; - Panel panel1 = Compute.FEMeshToPanel(mesh1); - Panel panel2 = Compute.FEMeshToPanel(mesh2); - List controlPoints1 = Spatial.Query.ControlPoints(panel1, true); - List controlPoints2 = Spatial.Query.ControlPoints(panel2, true); + // Use the indexes to get the Nodes, take an average for each face to get a single control point per face + List controlPoints1 = mesh1.Faces.Select(face => face.NodeListIndices.Select(index => mesh1.Nodes[index]) + .Select(x => x.Position)) + .Select(facePoints => facePoints.Average()).ToList(); + List controlPoints2 = mesh2.Faces.Select(face => face.NodeListIndices.Select(index => mesh1.Nodes[index]) + .Select(x => x.Position)) + .Select(facePoints => facePoints.Average()).ToList(); + + // Average the control point for the entire FEMesh to compare Point centrePoint1 = Geometry.Query.Average(controlPoints1); Point centrePoint2 = Geometry.Query.Average(controlPoints2); From 734368c0edd44d212a6d003c3d5534a845e0b1d4 Mon Sep 17 00:00:00 2001 From: Peter Nugent Date: Mon, 8 Jul 2024 14:33:50 +0100 Subject: [PATCH 05/17] Shallow clone load so object is not modified --- .../Loads/BarVaryingDistributedLoads.cs | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs index 7b57357d..66eea267 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs @@ -27,6 +27,7 @@ using System.IO; using System.Collections.Generic; using System.Linq; +using BH.Engine.Base; namespace BH.Adapter.MidasCivil { @@ -42,53 +43,54 @@ private bool CreateCollection(IEnumerable barVaryingD foreach (BarVaryingDistributedLoad barVaryingDistributedLoad in barVaryingDistributedLoads) { - if (!barVaryingDistributedLoad.RelativePositions) + BarVaryingDistributedLoad load = barVaryingDistributedLoad.ShallowClone(); + if (!load.RelativePositions) { Engine.Base.Compute.RecordError("The midas adapter can only handle BarVaryingDistributedLoads with relative positions. Please update the loads to be set with this format."); continue; } - if (barVaryingDistributedLoad.StartPosition >= barVaryingDistributedLoad.EndPosition) + if (load.StartPosition >= load.EndPosition) { Engine.Base.Compute.RecordError("Midas civil only supports start positions less than end positions for BarVaryingDistributedLoads."); continue; } List midasBarLoads = new List(); - string barLoadPath = CreateSectionFile(barVaryingDistributedLoad.Loadcase.Name + "\\BEAMLOAD"); - string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(barVaryingDistributedLoad); + string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD"); + string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(load); - List assignedBars = barVaryingDistributedLoad.Objects.Elements.Select(x => x.AdapterId(typeof(MidasCivilId))).ToList(); + List assignedBars = load.Objects.Elements.Select(x => x.AdapterId(typeof(MidasCivilId))).ToList(); - List startLoadVectors = new List { barVaryingDistributedLoad.ForceAtStart.X, - barVaryingDistributedLoad.ForceAtStart.Y, - barVaryingDistributedLoad.ForceAtStart.Z, - barVaryingDistributedLoad.MomentAtStart.X, - barVaryingDistributedLoad.MomentAtStart.Y, - barVaryingDistributedLoad.MomentAtStart.Z}; + List startLoadVectors = new List { load.ForceAtStart.X, + load.ForceAtStart.Y, + load.ForceAtStart.Z, + load.MomentAtStart.X, + load.MomentAtStart.Y, + load.MomentAtStart.Z}; - List endLoadVectors = new List { barVaryingDistributedLoad.ForceAtEnd.X, - barVaryingDistributedLoad.ForceAtEnd.Y, - barVaryingDistributedLoad.ForceAtEnd.Z, - barVaryingDistributedLoad.MomentAtEnd.X, - barVaryingDistributedLoad.MomentAtEnd.Y, - barVaryingDistributedLoad.MomentAtEnd.Z}; + List endLoadVectors = new List { load.ForceAtEnd.X, + load.ForceAtEnd.Y, + load.ForceAtEnd.Z, + load.MomentAtEnd.X, + load.MomentAtEnd.Y, + load.MomentAtEnd.Z}; Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 }; for (int i = 0; i < 6; i++) { - barVaryingDistributedLoad.ForceAtStart = zeroVector; - barVaryingDistributedLoad.MomentAtStart = zeroVector; - barVaryingDistributedLoad.ForceAtEnd = zeroVector; - barVaryingDistributedLoad.MomentAtEnd = zeroVector; + load.ForceAtStart = zeroVector; + load.MomentAtStart = zeroVector; + load.ForceAtEnd = zeroVector; + load.MomentAtEnd = zeroVector; if (!(startLoadVectors[i] == 0 && endLoadVectors[i] == 0)) { if (i < 3) { - barVaryingDistributedLoad.ForceAtStart = CreateSingleComponentVector(i, startLoadVectors[i]); - barVaryingDistributedLoad.ForceAtEnd = CreateSingleComponentVector(i, endLoadVectors[i]); + load.ForceAtStart = CreateSingleComponentVector(i, startLoadVectors[i]); + load.ForceAtEnd = CreateSingleComponentVector(i, endLoadVectors[i]); foreach (string assignedBar in assignedBars) { @@ -97,8 +99,8 @@ private bool CreateCollection(IEnumerable barVaryingD } else { - barVaryingDistributedLoad.MomentAtStart = CreateSingleComponentVector(i - 3, startLoadVectors[i]); - barVaryingDistributedLoad.MomentAtEnd = CreateSingleComponentVector(i - 3, endLoadVectors[i]); + load.MomentAtStart = CreateSingleComponentVector(i - 3, startLoadVectors[i]); + load.MomentAtEnd = CreateSingleComponentVector(i - 3, endLoadVectors[i]); foreach (string assignedBar in assignedBars) { From 9523186dcdedf9047e7ae77cc70fbb874c5ef4b0 Mon Sep 17 00:00:00 2001 From: Peter Nugent Date: Mon, 8 Jul 2024 14:56:01 +0100 Subject: [PATCH 06/17] Add Versioning_73 file --- MidasCivil_Engine/MidasCivil_Engine.csproj | 1 + MidasCivil_Engine/Versioning_73.json | 26 ++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 MidasCivil_Engine/Versioning_73.json diff --git a/MidasCivil_Engine/MidasCivil_Engine.csproj b/MidasCivil_Engine/MidasCivil_Engine.csproj index d9625b2c..690b4779 100644 --- a/MidasCivil_Engine/MidasCivil_Engine.csproj +++ b/MidasCivil_Engine/MidasCivil_Engine.csproj @@ -113,6 +113,7 @@ + diff --git a/MidasCivil_Engine/Versioning_73.json b/MidasCivil_Engine/Versioning_73.json new file mode 100644 index 00000000..a8f7c160 --- /dev/null +++ b/MidasCivil_Engine/Versioning_73.json @@ -0,0 +1,26 @@ +{ + "Namespace": { + "ToNew": { + }, + "ToOld": { + } + }, + "Type": { + "ToNew": { + + }, + "ToOld": { + } + }, + "Property": { + "ToNew": { + }, + "ToOld": { + } + }, + "MessageForDeleted": { + "BH.Engine.Adapters.MidasCivil.Compute.FEMeshToPanel(BH.oM.Structure.Elements.FEMesh)": "The FEMeshToPanel has been migrated to the BH.Engine.Query.Covert namespace." + }, + "MessageForNoUpgrade": { + } +} \ No newline at end of file From 3466d98ba36b3cf95829c204f4bf402cf6026d24 Mon Sep 17 00:00:00 2001 From: Peter Nugent Date: Fri, 12 Jul 2024 16:57:37 +0100 Subject: [PATCH 07/17] Add shallow clone for barUniformlyDistributedLoad is unmodified when output by Push --- .../Loads/BarUniformlyDistributedLoads.cs | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/BarUniformlyDistributedLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/BarUniformlyDistributedLoads.cs index 80173035..33e61fda 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarUniformlyDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarUniformlyDistributedLoads.cs @@ -27,6 +27,7 @@ using System.IO; using System.Collections.Generic; using System.Linq; +using BH.Engine.Base; namespace BH.Adapter.MidasCivil { @@ -42,31 +43,32 @@ private bool CreateCollection(IEnumerable barUnifor foreach (BarUniformlyDistributedLoad barUniformlyDistributedLoad in barUniformlyDistributedLoads) { + BarUniformlyDistributedLoad load = barUniformlyDistributedLoad.ShallowClone(); List midasBarLoads = new List(); - string barLoadPath = CreateSectionFile(barUniformlyDistributedLoad.Loadcase.Name + "\\BEAMLOAD"); + string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD"); string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(barUniformlyDistributedLoad); - List assignedBars = barUniformlyDistributedLoad.Objects.Elements.Select(x => x.AdapterId(typeof(MidasCivilId))).ToList(); + List assignedBars = load.Objects.Elements.Select(x => x.AdapterId(typeof(MidasCivilId))).ToList(); - List loadVectors = new List { barUniformlyDistributedLoad.Force.X, - barUniformlyDistributedLoad.Force.Y, - barUniformlyDistributedLoad.Force.Z, - barUniformlyDistributedLoad.Moment.X, - barUniformlyDistributedLoad.Moment.Y, - barUniformlyDistributedLoad.Moment.Z}; + List loadVectors = new List { load.Force.X, + load.Force.Y, + load.Force.Z, + load.Moment.X, + load.Moment.Y, + load.Moment.Z}; Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 }; for (int i = 0; i < 6; i++) { - barUniformlyDistributedLoad.Force = zeroVector; - barUniformlyDistributedLoad.Moment = zeroVector; + load.Force = zeroVector; + load.Moment = zeroVector; if (loadVectors[i] != 0) { if (i < 3) { - barUniformlyDistributedLoad.Force = CreateSingleComponentVector(i, loadVectors[i]); + load.Force = CreateSingleComponentVector(i, loadVectors[i]); foreach (string assignedBar in assignedBars) { @@ -75,7 +77,7 @@ private bool CreateCollection(IEnumerable barUnifor } else { - barUniformlyDistributedLoad.Moment = CreateSingleComponentVector(i - 3, loadVectors[i]); + load.Moment = CreateSingleComponentVector(i - 3, loadVectors[i]); foreach (string assignedBar in assignedBars) { From 82022133bc998d07f037a956eb3ee384aa0a8269 Mon Sep 17 00:00:00 2001 From: Peter Nugent Date: Fri, 26 Jul 2024 14:16:14 +0100 Subject: [PATCH 08/17] Add shallow clone to all loads that require splitting when pushed to Midas --- .../Loads/AreaUniformlyDistributedLoads.cs | 18 +++++++------ .../CRUD/Create/Loads/BarPointLoads.cs | 26 ++++++++++--------- .../Loads/BarUniformlyDistributedLoads.cs | 4 +-- .../Loads/BarVaryingDistributedLoads.cs | 4 +-- 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/AreaUniformlyDistributedLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/AreaUniformlyDistributedLoads.cs index 98592b41..6929592c 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/AreaUniformlyDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/AreaUniformlyDistributedLoads.cs @@ -22,6 +22,7 @@ using BH.oM.Adapters.MidasCivil; using BH.Engine.Adapter; +using BH.Engine.Base; using BH.oM.Structure.Loads; using BH.oM.Structure.Elements; using BH.oM.Geometry; @@ -38,11 +39,12 @@ public bool CreateCollection(IEnumerable areaUnifo foreach (AreaUniformlyDistributedLoad areaUniformlyDistributedLoad in areaUniformlyDistributedLoads) { + AreaUniformlyDistributedLoad load = areaUniformlyDistributedLoad.ShallowClone(); List midasPressureLoads = new List(); - string FEMeshLoadPath = CreateSectionFile(areaUniformlyDistributedLoad.Loadcase.Name + "\\PRESSURE"); + string FEMeshLoadPath = CreateSectionFile(load.Loadcase.Name + "\\PRESSURE"); string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(areaUniformlyDistributedLoad); - List assignedElements = areaUniformlyDistributedLoad.Objects.Elements; + List assignedElements = load.Objects.Elements; List assignedFEMeshes = new List(); @@ -55,23 +57,23 @@ public bool CreateCollection(IEnumerable areaUnifo } } - List loadVectors = new List { areaUniformlyDistributedLoad.Pressure.X, - areaUniformlyDistributedLoad.Pressure.Y, - areaUniformlyDistributedLoad.Pressure.Z}; + List loadVectors = new List { load.Pressure.X, + load.Pressure.Y, + load.Pressure.Z}; Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 }; for (int i = 0; i < 3; i++) { - areaUniformlyDistributedLoad.Pressure = zeroVector; + load.Pressure = zeroVector; if (loadVectors[i] != 0) { - areaUniformlyDistributedLoad.Pressure = CreateSingleComponentVector(i, loadVectors[i]); + load.Pressure = CreateSingleComponentVector(i, loadVectors[i]); foreach (string assignedFEMesh in assignedFEMeshes) { - midasPressureLoads.Add(Adapters.MidasCivil.Convert.FromAreaUniformlyDistributedLoad(areaUniformlyDistributedLoad, assignedFEMesh, m_midasCivilVersion, m_forceUnit, m_lengthUnit)); + midasPressureLoads.Add(Adapters.MidasCivil.Convert.FromAreaUniformlyDistributedLoad(load, assignedFEMesh, m_midasCivilVersion, m_forceUnit, m_lengthUnit)); } } } diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/BarPointLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/BarPointLoads.cs index 802fdd54..1f97eebd 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarPointLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarPointLoads.cs @@ -24,6 +24,7 @@ using BH.oM.Structure.Loads; using BH.oM.Geometry; using BH.Engine.Adapter; +using BH.Engine.Base; using System.IO; using System.Collections.Generic; using System.Linq; @@ -42,35 +43,36 @@ private bool CreateCollection(IEnumerable barPointLoads) foreach (BarPointLoad barPointLoad in barPointLoads) { + BarPointLoad load = barPointLoad.ShallowClone(); List midasBarLoads = new List(); - string barLoadPath = CreateSectionFile(barPointLoad.Loadcase.Name + "\\BEAMLOAD"); + string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD"); string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(barPointLoad); List assignedBars = barPointLoad.Objects.Elements.Select(x => x.AdapterId(typeof(MidasCivilId))).ToList(); - List loadVectors = new List { barPointLoad.Force.X, - barPointLoad.Force.Y, - barPointLoad.Force.Z, - barPointLoad.Moment.X, - barPointLoad.Moment.Y, - barPointLoad.Moment.Z}; + List loadVectors = new List { load.Force.X, + load.Force.Y, + load.Force.Z, + load.Moment.X, + load.Moment.Y, + load.Moment.Z}; Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 }; for (int i = 0; i < 6; i++) { - barPointLoad.Force = zeroVector; - barPointLoad.Moment = zeroVector; + load.Force = zeroVector; + load.Moment = zeroVector; if (loadVectors[i] != 0) { if (i < 3) { - barPointLoad.Force = CreateSingleComponentVector(i, loadVectors[i]); + load.Force = CreateSingleComponentVector(i, loadVectors[i]); foreach (string assignedBar in assignedBars) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(barPointLoad, assignedBar, "Force", m_forceUnit, m_lengthUnit)); + midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(load, assignedBar, "Force", m_forceUnit, m_lengthUnit)); } } else @@ -79,7 +81,7 @@ private bool CreateCollection(IEnumerable barPointLoads) foreach (string assignedBar in assignedBars) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(barPointLoad, assignedBar, "Moment", m_forceUnit, m_lengthUnit)); + midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(load, assignedBar, "Moment", m_forceUnit, m_lengthUnit)); } } diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/BarUniformlyDistributedLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/BarUniformlyDistributedLoads.cs index 33e61fda..1b744f29 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarUniformlyDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarUniformlyDistributedLoads.cs @@ -72,7 +72,7 @@ private bool CreateCollection(IEnumerable barUnifor foreach (string assignedBar in assignedBars) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(barUniformlyDistributedLoad, assignedBar, "Force", m_forceUnit, m_lengthUnit)); + midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(load, assignedBar, "Force", m_forceUnit, m_lengthUnit)); } } else @@ -81,7 +81,7 @@ private bool CreateCollection(IEnumerable barUnifor foreach (string assignedBar in assignedBars) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(barUniformlyDistributedLoad, assignedBar, "Moment", m_forceUnit, m_lengthUnit)); + midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(load, assignedBar, "Moment", m_forceUnit, m_lengthUnit)); } } diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs index 66eea267..26f79ed5 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs @@ -94,7 +94,7 @@ private bool CreateCollection(IEnumerable barVaryingD foreach (string assignedBar in assignedBars) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(barVaryingDistributedLoad, assignedBar, "Force", m_forceUnit, m_lengthUnit)); + midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load, assignedBar, "Force", m_forceUnit, m_lengthUnit)); } } else @@ -104,7 +104,7 @@ private bool CreateCollection(IEnumerable barVaryingD foreach (string assignedBar in assignedBars) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(barVaryingDistributedLoad, assignedBar, "Moment", m_forceUnit, m_lengthUnit)); + midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load, assignedBar, "Moment", m_forceUnit, m_lengthUnit)); } } From b93a150415a5537ea56c22d72e4f273ebd339e12 Mon Sep 17 00:00:00 2001 From: Emma Sander Date: Wed, 14 Aug 2024 17:26:09 +0100 Subject: [PATCH 09/17] Added for-loop to reassign values, to be tested --- .../Loads/BarVaryingDistributedLoads.cs | 19 +++++++++++++++++++ .../Loads/FromBarVaryingDistributedLoad.cs | 2 ++ 2 files changed, 21 insertions(+) diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs index 26f79ed5..e50af09a 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs @@ -22,12 +22,14 @@ using BH.oM.Adapters.MidasCivil; using BH.Engine.Adapter; +using BH.oM.Structure.Elements; using BH.oM.Structure.Loads; using BH.oM.Geometry; using System.IO; using System.Collections.Generic; using System.Linq; using BH.Engine.Base; +using BH.Engine.Spatial; namespace BH.Adapter.MidasCivil { @@ -48,6 +50,7 @@ private bool CreateCollection(IEnumerable barVaryingD { Engine.Base.Compute.RecordError("The midas adapter can only handle BarVaryingDistributedLoads with relative positions. Please update the loads to be set with this format."); continue; + } if (load.StartPosition >= load.EndPosition) @@ -55,6 +58,7 @@ private bool CreateCollection(IEnumerable barVaryingD Engine.Base.Compute.RecordError("Midas civil only supports start positions less than end positions for BarVaryingDistributedLoads."); continue; } + List midasBarLoads = new List(); string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD"); @@ -62,6 +66,21 @@ private bool CreateCollection(IEnumerable barVaryingD List assignedBars = load.Objects.Elements.Select(x => x.AdapterId(typeof(MidasCivilId))).ToList(); + for (int i = 0; i < assignedBars.Count; i++) + { + if (load.RelativePositions==false) + { + Bar bar = (Bar)load.Objects.IItem(i); + double length = bar.Length(); + + double newStartPosition = load.StartPosition/length; + double newEndPosition=barVaryingDistributedLoad.EndPosition/length; + + barVaryingDistributedLoad.StartPosition=newStartPosition; + barVaryingDistributedLoad.EndPosition=newEndPosition; + } + } + List startLoadVectors = new List { load.ForceAtStart.X, load.ForceAtStart.Y, load.ForceAtStart.Z, diff --git a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs index 5e6b2af2..a78f8346 100644 --- a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs +++ b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs @@ -23,6 +23,7 @@ using BH.oM.Structure.Loads; using BH.oM.Geometry; using System.Collections.Generic; +using BH.oM.Structure.Elements; namespace BH.Adapter.Adapters.MidasCivil { @@ -34,6 +35,7 @@ public static partial class Convert public static string FromBarVaryingDistributedLoad(this BarVaryingDistributedLoad barLoad, string assignedBar, string loadType, string forceUnit, string lengthUnit) { + string midasBarLoad = null; if (loadType == "Force") { From faa336338247c6dcf4feee07bac8791b829bba0e Mon Sep 17 00:00:00 2001 From: Emma Sander Date: Thu, 29 Aug 2024 12:14:22 +0100 Subject: [PATCH 10/17] Update BarVaryingDistributedLoads.cs Error removed, can now get the bar length --- .../Loads/BarVaryingDistributedLoads.cs | 33 +++++++------------ 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs index e50af09a..a4501b93 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs @@ -45,39 +45,28 @@ private bool CreateCollection(IEnumerable barVaryingD foreach (BarVaryingDistributedLoad barVaryingDistributedLoad in barVaryingDistributedLoads) { - BarVaryingDistributedLoad load = barVaryingDistributedLoad.ShallowClone(); - if (!load.RelativePositions) - { - Engine.Base.Compute.RecordError("The midas adapter can only handle BarVaryingDistributedLoads with relative positions. Please update the loads to be set with this format."); - continue; + BarVaryingDistributedLoad load = barVaryingDistributedLoad.ShallowClone(); - } - - if (load.StartPosition >= load.EndPosition) - { - Engine.Base.Compute.RecordError("Midas civil only supports start positions less than end positions for BarVaryingDistributedLoads."); - continue; - } - + if (load.StartPosition >= load.EndPosition) + { + Engine.Base.Compute.RecordError("Midas civil only supports start positions less than end positions for BarVaryingDistributedLoads."); + continue; + } List midasBarLoads = new List(); string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD"); string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(load); List assignedBars = load.Objects.Elements.Select(x => x.AdapterId(typeof(MidasCivilId))).ToList(); - - for (int i = 0; i < assignedBars.Count; i++) + for (int i = 0; i < assignedBars.Count(); i++) { - if (load.RelativePositions==false) + if (load.RelativePositions == false) { - Bar bar = (Bar)load.Objects.IItem(i); + Bar bar = load.Objects.Elements[i] as Bar; double length = bar.Length(); - double newStartPosition = load.StartPosition/length; - double newEndPosition=barVaryingDistributedLoad.EndPosition/length; - - barVaryingDistributedLoad.StartPosition=newStartPosition; - barVaryingDistributedLoad.EndPosition=newEndPosition; + load.StartPosition = (load.StartPosition / length); + load.EndPosition = (load.EndPosition / length); } } From 6f21f06629a9bb60a55f9669785c09902f266148 Mon Sep 17 00:00:00 2001 From: Emma Sander Date: Thu, 29 Aug 2024 17:03:46 +0100 Subject: [PATCH 11/17] Update FromBarVaryingDistributedLoad.cs Working support for absolute values. --- .../Loads/FromBarVaryingDistributedLoad.cs | 74 ++++++++++++++----- 1 file changed, 56 insertions(+), 18 deletions(-) diff --git a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs index a78f8346..8f9d9135 100644 --- a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs +++ b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs @@ -24,6 +24,7 @@ using BH.oM.Geometry; using System.Collections.Generic; using BH.oM.Structure.Elements; +using BH.Engine.Spatial; namespace BH.Adapter.Adapters.MidasCivil { @@ -35,29 +36,66 @@ public static partial class Convert public static string FromBarVaryingDistributedLoad(this BarVaryingDistributedLoad barLoad, string assignedBar, string loadType, string forceUnit, string lengthUnit) { - + string midasBarLoad = null; - if (loadType == "Force") + if (barLoad.RelativePositions == false) { - string direction = FromVector(barLoad.ForceAtStart); - midasBarLoad = assignedBar + ",BEAM,UNILOAD," + FromLoadAxis(barLoad.Axis) + direction + - "," + FromLoadProjection(barLoad.Projected) + - ",NO,aDir[1], , , ," + barLoad.StartPosition + "," + - FromVectorDirection(barLoad.ForceAtStart, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + - barLoad.EndPosition + "," - + FromVectorDirection(barLoad.ForceAtEnd, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + - ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + Bar bar = barLoad.Objects.Elements[0] as Bar; + double length = bar.Length(); + + double newStart = (barLoad.StartPosition / length); + double newEnd = (barLoad.EndPosition / length); + + barLoad.Objects.Elements.Remove(bar); barLoad.Objects.Elements.Add(bar); + + if (loadType == "Force") + { + string direction = FromVector(barLoad.ForceAtStart); + midasBarLoad = assignedBar + ",BEAM,UNILOAD," + FromLoadAxis(barLoad.Axis) + direction + + "," + FromLoadProjection(barLoad.Projected) + + ",NO,aDir[1], , , ," + newStart + "," + + FromVectorDirection(barLoad.ForceAtStart, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + + newEnd + "," + + FromVectorDirection(barLoad.ForceAtEnd, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + + ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + } + else + { + string direction = FromVector(barLoad.MomentAtStart); + midasBarLoad = assignedBar + ",BEAM,UNIMOMENT," + FromLoadAxis(barLoad.Axis) + direction + + "," + FromLoadProjection(barLoad.Projected) + + ",NO,aDir[1], , , ," + newStart + "," + + FromVectorDirection(barLoad.MomentAtStart, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + + newEnd + "," + + FromVectorDirection(barLoad.MomentAtEnd, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + + ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + } + barLoad.Objects.Elements.Remove(bar); barLoad.Objects.Elements.Add(bar); } else { - string direction = FromVector(barLoad.MomentAtStart); - midasBarLoad = assignedBar + ",BEAM,UNIMOMENT," + FromLoadAxis(barLoad.Axis) + direction + - "," + FromLoadProjection(barLoad.Projected) + - ",NO,aDir[1], , , ," + barLoad.StartPosition + "," + - FromVectorDirection(barLoad.MomentAtStart, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + - barLoad.EndPosition + "," - + FromVectorDirection(barLoad.MomentAtEnd, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + - ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + if (loadType == "Force") + { + string direction = FromVector(barLoad.ForceAtStart); + midasBarLoad = assignedBar + ",BEAM,UNILOAD," + FromLoadAxis(barLoad.Axis) + direction + + "," + FromLoadProjection(barLoad.Projected) + + ",NO,aDir[1], , , ," + barLoad.StartPosition + "," + + FromVectorDirection(barLoad.ForceAtStart, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + + barLoad.EndPosition + "," + + FromVectorDirection(barLoad.ForceAtEnd, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + + ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + } + else + { + string direction = FromVector(barLoad.MomentAtStart); + midasBarLoad = assignedBar + ",BEAM,UNIMOMENT," + FromLoadAxis(barLoad.Axis) + direction + + "," + FromLoadProjection(barLoad.Projected) + + ",NO,aDir[1], , , ," + barLoad.StartPosition + "," + + FromVectorDirection(barLoad.MomentAtStart, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + + barLoad.EndPosition + "," + + FromVectorDirection(barLoad.MomentAtEnd, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + + ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + } } return midasBarLoad; From ea3648a0cdab34d3689b09d4ab93267045fa210b Mon Sep 17 00:00:00 2001 From: Emma Sander Date: Thu, 29 Aug 2024 17:04:40 +0100 Subject: [PATCH 12/17] Update BarVaryingDistributedLoads.cs Code moved --- .../CRUD/Create/Loads/BarVaryingDistributedLoads.cs | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs index a4501b93..41965cbf 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs @@ -30,6 +30,7 @@ using System.Linq; using BH.Engine.Base; using BH.Engine.Spatial; +using BH.Engine.Geometry; namespace BH.Adapter.MidasCivil { @@ -56,19 +57,9 @@ private bool CreateCollection(IEnumerable barVaryingD List midasBarLoads = new List(); string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD"); string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(load); - + List assignedBars = load.Objects.Elements.Select(x => x.AdapterId(typeof(MidasCivilId))).ToList(); - for (int i = 0; i < assignedBars.Count(); i++) - { - if (load.RelativePositions == false) - { - Bar bar = load.Objects.Elements[i] as Bar; - double length = bar.Length(); - load.StartPosition = (load.StartPosition / length); - load.EndPosition = (load.EndPosition / length); - } - } List startLoadVectors = new List { load.ForceAtStart.X, load.ForceAtStart.Y, From 58f9039a0c29ca3d4626a876d62f0b1cebd93a2b Mon Sep 17 00:00:00 2001 From: Emma Sander Date: Tue, 3 Sep 2024 15:51:23 +0100 Subject: [PATCH 13/17] Update FromBarVaryingDistributedLoad.cs Cleaned up code --- .../Loads/FromBarVaryingDistributedLoad.cs | 85 +++++++------------ 1 file changed, 31 insertions(+), 54 deletions(-) diff --git a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs index 8f9d9135..4357d90c 100644 --- a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs +++ b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs @@ -38,65 +38,42 @@ public static string FromBarVaryingDistributedLoad(this BarVaryingDistributedLoa { string midasBarLoad = null; + + Bar bar = barLoad.Objects.Elements[0] as Bar; + double barStart = barLoad.StartPosition; + double barEnd = barLoad.EndPosition; + if (barLoad.RelativePositions == false) { - Bar bar = barLoad.Objects.Elements[0] as Bar; double length = bar.Length(); - double newStart = (barLoad.StartPosition / length); - double newEnd = (barLoad.EndPosition / length); - - barLoad.Objects.Elements.Remove(bar); barLoad.Objects.Elements.Add(bar); - - if (loadType == "Force") - { - string direction = FromVector(barLoad.ForceAtStart); - midasBarLoad = assignedBar + ",BEAM,UNILOAD," + FromLoadAxis(barLoad.Axis) + direction + - "," + FromLoadProjection(barLoad.Projected) + - ",NO,aDir[1], , , ," + newStart + "," + - FromVectorDirection(barLoad.ForceAtStart, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + - newEnd + "," - + FromVectorDirection(barLoad.ForceAtEnd, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + - ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; - } - else - { - string direction = FromVector(barLoad.MomentAtStart); - midasBarLoad = assignedBar + ",BEAM,UNIMOMENT," + FromLoadAxis(barLoad.Axis) + direction + - "," + FromLoadProjection(barLoad.Projected) + - ",NO,aDir[1], , , ," + newStart + "," + - FromVectorDirection(barLoad.MomentAtStart, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + - newEnd + "," - + FromVectorDirection(barLoad.MomentAtEnd, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + - ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; - } - barLoad.Objects.Elements.Remove(bar); barLoad.Objects.Elements.Add(bar); - } - else - { - if (loadType == "Force") - { - string direction = FromVector(barLoad.ForceAtStart); - midasBarLoad = assignedBar + ",BEAM,UNILOAD," + FromLoadAxis(barLoad.Axis) + direction + - "," + FromLoadProjection(barLoad.Projected) + - ",NO,aDir[1], , , ," + barLoad.StartPosition + "," + - FromVectorDirection(barLoad.ForceAtStart, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + - barLoad.EndPosition + "," - + FromVectorDirection(barLoad.ForceAtEnd, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + - ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; - } - else - { - string direction = FromVector(barLoad.MomentAtStart); - midasBarLoad = assignedBar + ",BEAM,UNIMOMENT," + FromLoadAxis(barLoad.Axis) + direction + - "," + FromLoadProjection(barLoad.Projected) + - ",NO,aDir[1], , , ," + barLoad.StartPosition + "," + - FromVectorDirection(barLoad.MomentAtStart, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + - barLoad.EndPosition + "," - + FromVectorDirection(barLoad.MomentAtEnd, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + - ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; - } + barStart = (barLoad.StartPosition / length); + barEnd = (barLoad.EndPosition / length); } + + if (loadType == "Force") + { + string direction = FromVector(barLoad.ForceAtStart); + midasBarLoad = assignedBar + ",BEAM,UNILOAD," + FromLoadAxis(barLoad.Axis) + direction + + "," + FromLoadProjection(barLoad.Projected) + + ",NO,aDir[1], , , ," + barStart + "," + + FromVectorDirection(barLoad.ForceAtStart, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + + barEnd + "," + + FromVectorDirection(barLoad.ForceAtEnd, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + + ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + } + else + { + string direction = FromVector(barLoad.MomentAtStart); + midasBarLoad = assignedBar + ",BEAM,UNIMOMENT," + FromLoadAxis(barLoad.Axis) + direction + + "," + FromLoadProjection(barLoad.Projected) + + ",NO,aDir[1], , , ," + barStart + "," + + FromVectorDirection(barLoad.MomentAtStart, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + + barEnd + "," + + FromVectorDirection(barLoad.MomentAtEnd, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + + ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + } + barLoad.Objects.Elements.Remove(bar); barLoad.Objects.Elements.Add(bar); return midasBarLoad; } From fb85b87214ad08f9f264382433e56989c6ee3bb8 Mon Sep 17 00:00:00 2001 From: Emma Sander Date: Wed, 4 Sep 2024 16:09:39 +0100 Subject: [PATCH 14/17] Update BarVaryingDistributedLoads.cs New and moved solution --- .../Loads/BarVaryingDistributedLoads.cs | 48 +++++++++++++++---- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs index 41965cbf..8b29c132 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs @@ -31,6 +31,8 @@ using BH.Engine.Base; using BH.Engine.Spatial; using BH.Engine.Geometry; +using BH.Adapter.Adapters.MidasCivil; +using System.Data; namespace BH.Adapter.MidasCivil { @@ -46,13 +48,37 @@ private bool CreateCollection(IEnumerable barVaryingD foreach (BarVaryingDistributedLoad barVaryingDistributedLoad in barVaryingDistributedLoads) { - BarVaryingDistributedLoad load = barVaryingDistributedLoad.ShallowClone(); - - if (load.StartPosition >= load.EndPosition) - { - Engine.Base.Compute.RecordError("Midas civil only supports start positions less than end positions for BarVaryingDistributedLoads."); + BarVaryingDistributedLoad load = barVaryingDistributedLoad.ShallowClone(); + + if (load.StartPosition >= load.EndPosition) + { + Engine.Base.Compute.RecordError("MidasCivil only supports start positions less than end positions for BarVaryingDistributedLoads."); continue; - } + } + + List startPosition = new List(); + List endPosition = new List(); + + + foreach (Bar bar in load.Objects.Elements) + { + if (load.RelativePositions == false) + { + double length = bar.Length(); + + startPosition.Add(barVaryingDistributedLoad.StartPosition / length); + endPosition.Add(barVaryingDistributedLoad.EndPosition / length); + + if (load.StartPosition / length > 1 || load.EndPosition / length > 1) + {Engine.Base.Compute.RecordError("The load start or end position is outside one or more bars");} + } + else + { + startPosition.Add(barVaryingDistributedLoad.StartPosition); + endPosition.Add(barVaryingDistributedLoad.EndPosition); + } + } + List midasBarLoads = new List(); string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD"); @@ -91,9 +117,10 @@ private bool CreateCollection(IEnumerable barVaryingD load.ForceAtStart = CreateSingleComponentVector(i, startLoadVectors[i]); load.ForceAtEnd = CreateSingleComponentVector(i, endLoadVectors[i]); - foreach (string assignedBar in assignedBars) + for (int j = 0; j < assignedBars.Count; j++) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load, assignedBar, "Force", m_forceUnit, m_lengthUnit)); + midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load, + assignedBars[j], "Force", m_forceUnit, m_lengthUnit, startPosition[j], endPosition[j])); } } else @@ -101,9 +128,10 @@ private bool CreateCollection(IEnumerable barVaryingD load.MomentAtStart = CreateSingleComponentVector(i - 3, startLoadVectors[i]); load.MomentAtEnd = CreateSingleComponentVector(i - 3, endLoadVectors[i]); - foreach (string assignedBar in assignedBars) + for (int j = 0; j < assignedBars.Count; j++) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load, assignedBar, "Moment", m_forceUnit, m_lengthUnit)); + midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load, + assignedBars[j], "Moment", m_forceUnit, m_lengthUnit, startPosition[j], endPosition[j])); } } From b5c5721898be076259925578e29a27cad4361f42 Mon Sep 17 00:00:00 2001 From: Emma Sander Date: Wed, 4 Sep 2024 16:12:30 +0100 Subject: [PATCH 15/17] Update FromBarVaryingDistributedLoad.cs Moved solution and added support for that --- .../Loads/FromBarVaryingDistributedLoad.cs | 34 ++++++------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs index 4357d90c..465fd85e 100644 --- a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs +++ b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs @@ -26,6 +26,7 @@ using BH.oM.Structure.Elements; using BH.Engine.Spatial; + namespace BH.Adapter.Adapters.MidasCivil { public static partial class Convert @@ -34,46 +35,33 @@ public static partial class Convert /**** Public Methods ****/ /***************************************************/ - public static string FromBarVaryingDistributedLoad(this BarVaryingDistributedLoad barLoad, string assignedBar, string loadType, string forceUnit, string lengthUnit) + public static string FromBarVaryingDistributedLoad(this BarVaryingDistributedLoad barLoad, string assignedBar, string loadType, string forceUnit, string lengthUnit, double startPosition, double endPosition) { string midasBarLoad = null; - Bar bar = barLoad.Objects.Elements[0] as Bar; - double barStart = barLoad.StartPosition; - double barEnd = barLoad.EndPosition; - - if (barLoad.RelativePositions == false) + if (loadType == "Force") { - double length = bar.Length(); - - barStart = (barLoad.StartPosition / length); - barEnd = (barLoad.EndPosition / length); - } - - if (loadType == "Force") - { string direction = FromVector(barLoad.ForceAtStart); midasBarLoad = assignedBar + ",BEAM,UNILOAD," + FromLoadAxis(barLoad.Axis) + direction + "," + FromLoadProjection(barLoad.Projected) + - ",NO,aDir[1], , , ," + barStart + "," + + ",NO,aDir[1], , , ," + startPosition + "," + FromVectorDirection(barLoad.ForceAtStart, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + - barEnd + "," + endPosition + "," + FromVectorDirection(barLoad.ForceAtEnd, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; - } - else - { + } + else + { string direction = FromVector(barLoad.MomentAtStart); midasBarLoad = assignedBar + ",BEAM,UNIMOMENT," + FromLoadAxis(barLoad.Axis) + direction + "," + FromLoadProjection(barLoad.Projected) + - ",NO,aDir[1], , , ," + barStart + "," + + ",NO,aDir[1], , , ," + startPosition + "," + FromVectorDirection(barLoad.MomentAtStart, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + - barEnd + "," + endPosition + "," + FromVectorDirection(barLoad.MomentAtEnd, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; - } - barLoad.Objects.Elements.Remove(bar); barLoad.Objects.Elements.Add(bar); + } return midasBarLoad; } From 9cf8173e7fc467c8226dafaeed17f6a6f8628b07 Mon Sep 17 00:00:00 2001 From: Peter Nugent Date: Thu, 5 Sep 2024 21:34:36 +0100 Subject: [PATCH 16/17] Clean up code in Convert.FromBarVaryingDistributedLoad --- .../Loads/FromBarVaryingDistributedLoad.cs | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs index 465fd85e..60ba8436 100644 --- a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs +++ b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs @@ -37,32 +37,34 @@ public static partial class Convert public static string FromBarVaryingDistributedLoad(this BarVaryingDistributedLoad barLoad, string assignedBar, string loadType, string forceUnit, string lengthUnit, double startPosition, double endPosition) { - string midasBarLoad = null; + string direction = ""; + string startLoad = ""; + string endLoad = ""; + string designation = ""; if (loadType == "Force") { - string direction = FromVector(barLoad.ForceAtStart); - midasBarLoad = assignedBar + ",BEAM,UNILOAD," + FromLoadAxis(barLoad.Axis) + direction + - "," + FromLoadProjection(barLoad.Projected) + - ",NO,aDir[1], , , ," + startPosition + "," + - FromVectorDirection(barLoad.ForceAtStart, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + - endPosition + "," - + FromVectorDirection(barLoad.ForceAtEnd, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString() + - ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + direction = FromVector(barLoad.ForceAtStart); + startLoad = FromVectorDirection(barLoad.ForceAtStart, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString(); + endLoad = FromVectorDirection(barLoad.ForceAtEnd, direction).ForcePerLengthFromSI(forceUnit, lengthUnit).ToString(); + designation = "UNILOAD"; } else { - string direction = FromVector(barLoad.MomentAtStart); - midasBarLoad = assignedBar + ",BEAM,UNIMOMENT," + FromLoadAxis(barLoad.Axis) + direction + - "," + FromLoadProjection(barLoad.Projected) + - ",NO,aDir[1], , , ," + startPosition + "," + - FromVectorDirection(barLoad.MomentAtStart, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + "," + - endPosition + "," - + FromVectorDirection(barLoad.MomentAtEnd, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString() + - ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + direction = FromVector(barLoad.MomentAtStart); + startLoad = FromVectorDirection(barLoad.MomentAtStart, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString(); + endLoad = FromVectorDirection(barLoad.MomentAtEnd, direction).MomentPerLengthFromSI(forceUnit, lengthUnit).ToString(); + designation = "UNIMOMENT"; + } + midasBarLoad = assignedBar + ",BEAM," + designation + "," + FromLoadAxis(barLoad.Axis) + direction + + "," + FromLoadProjection(barLoad.Projected) + + ",NO,aDir[1], , , ," + startPosition + "," + + startLoad + "," + endPosition + "," + endLoad + + ",0,0,0,0," + barLoad.Name + ",NO,0,0,NO"; + return midasBarLoad; } From 16870d5fe29b2be94ca87dbe119f976a4076fbec Mon Sep 17 00:00:00 2001 From: Peter Nugent Date: Thu, 5 Sep 2024 21:36:01 +0100 Subject: [PATCH 17/17] Update BarVaryingDistributedLoads.cs --- .../Create/Loads/BarVaryingDistributedLoads.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs index 8b29c132..980b8174 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs @@ -49,11 +49,11 @@ private bool CreateCollection(IEnumerable barVaryingD foreach (BarVaryingDistributedLoad barVaryingDistributedLoad in barVaryingDistributedLoads) { BarVaryingDistributedLoad load = barVaryingDistributedLoad.ShallowClone(); - + if (load.StartPosition >= load.EndPosition) { - Engine.Base.Compute.RecordError("MidasCivil only supports start positions less than end positions for BarVaryingDistributedLoads."); - continue; + Engine.Base.Compute.RecordError("MidasCivil only supports start positions less than end positions for BarVaryingDistributedLoads."); + continue; } List startPosition = new List(); @@ -70,7 +70,7 @@ private bool CreateCollection(IEnumerable barVaryingD endPosition.Add(barVaryingDistributedLoad.EndPosition / length); if (load.StartPosition / length > 1 || load.EndPosition / length > 1) - {Engine.Base.Compute.RecordError("The load start or end position is outside one or more bars");} + Engine.Base.Compute.RecordError("The load start or end position is outside one or more bars"); } else { @@ -78,12 +78,12 @@ private bool CreateCollection(IEnumerable barVaryingD endPosition.Add(barVaryingDistributedLoad.EndPosition); } } - + List midasBarLoads = new List(); string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD"); string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(load); - + List assignedBars = load.Objects.Elements.Select(x => x.AdapterId(typeof(MidasCivilId))).ToList(); @@ -119,7 +119,7 @@ private bool CreateCollection(IEnumerable barVaryingD for (int j = 0; j < assignedBars.Count; j++) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load, + midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load, assignedBars[j], "Force", m_forceUnit, m_lengthUnit, startPosition[j], endPosition[j])); } }