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 80173035..1b744f29 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,44 +43,45 @@ 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) { - 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 { - barUniformlyDistributedLoad.Moment = CreateSingleComponentVector(i - 3, loadVectors[i]); + load.Moment = CreateSingleComponentVector(i - 3, loadVectors[i]); 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 7b57357d..980b8174 100644 --- a/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs +++ b/MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs @@ -22,11 +22,17 @@ 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; +using BH.Engine.Geometry; +using BH.Adapter.Adapters.MidasCivil; +using System.Data; namespace BH.Adapter.MidasCivil { @@ -42,67 +48,90 @@ private bool CreateCollection(IEnumerable barVaryingD foreach (BarVaryingDistributedLoad barVaryingDistributedLoad in barVaryingDistributedLoads) { - if (!barVaryingDistributedLoad.RelativePositions) + BarVaryingDistributedLoad load = barVaryingDistributedLoad.ShallowClone(); + + if (load.StartPosition >= load.EndPosition) { - Engine.Base.Compute.RecordError("The midas adapter can only handle BarVaryingDistributedLoads with relative positions. Please update the loads to be set with this format."); + Engine.Base.Compute.RecordError("MidasCivil only supports start positions less than end positions for BarVaryingDistributedLoads."); continue; } - if (barVaryingDistributedLoad.StartPosition >= barVaryingDistributedLoad.EndPosition) + List startPosition = new List(); + List endPosition = new List(); + + + foreach (Bar bar in load.Objects.Elements) { - Engine.Base.Compute.RecordError("Midas civil only supports start positions less than end positions for BarVaryingDistributedLoads."); - continue; + 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(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 = load.Objects.Elements.Select(x => x.AdapterId(typeof(MidasCivilId))).ToList(); - List assignedBars = barVaryingDistributedLoad.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) + for (int j = 0; j < assignedBars.Count; j++) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(barVaryingDistributedLoad, 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 { - 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) + for (int j = 0; j < assignedBars.Count; j++) { - midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(barVaryingDistributedLoad, assignedBar, "Moment", m_forceUnit, m_lengthUnit)); + midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load, + assignedBars[j], "Moment", m_forceUnit, m_lengthUnit, startPosition[j], endPosition[j])); } } diff --git a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs index 5e6b2af2..60ba8436 100644 --- a/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs +++ b/MidasCivil_Adapter/Convert/ToMidasCivil/Loads/FromBarVaryingDistributedLoad.cs @@ -23,6 +23,9 @@ using BH.oM.Structure.Loads; using BH.oM.Geometry; using System.Collections.Generic; +using BH.oM.Structure.Elements; +using BH.Engine.Spatial; + namespace BH.Adapter.Adapters.MidasCivil { @@ -32,32 +35,36 @@ 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; + 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], , , ," + 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"; + 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], , , ," + 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"; + 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; } 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/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]; - } - - /***************************************************/ - - } -} - - - - diff --git a/MidasCivil_Engine/MidasCivil_Engine.csproj b/MidasCivil_Engine/MidasCivil_Engine.csproj index e78c316a..690b4779 100644 --- a/MidasCivil_Engine/MidasCivil_Engine.csproj +++ b/MidasCivil_Engine/MidasCivil_Engine.csproj @@ -100,7 +100,6 @@ - @@ -114,6 +113,7 @@ + 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); 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_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 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")]