Skip to content

Commit c082458

Browse files
7.3 Deployment (#387)
2 parents 082c36b + 9ada7b7 commit c082458

File tree

12 files changed

+167
-160
lines changed

12 files changed

+167
-160
lines changed

MidasCivil_Adapter/CRUD/Create/Loads/AreaUniformlyDistributedLoads.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
using BH.oM.Adapters.MidasCivil;
2424
using BH.Engine.Adapter;
25+
using BH.Engine.Base;
2526
using BH.oM.Structure.Loads;
2627
using BH.oM.Structure.Elements;
2728
using BH.oM.Geometry;
@@ -38,11 +39,12 @@ public bool CreateCollection(IEnumerable<AreaUniformlyDistributedLoad> areaUnifo
3839

3940
foreach (AreaUniformlyDistributedLoad areaUniformlyDistributedLoad in areaUniformlyDistributedLoads)
4041
{
42+
AreaUniformlyDistributedLoad load = areaUniformlyDistributedLoad.ShallowClone();
4143
List<string> midasPressureLoads = new List<string>();
42-
string FEMeshLoadPath = CreateSectionFile(areaUniformlyDistributedLoad.Loadcase.Name + "\\PRESSURE");
44+
string FEMeshLoadPath = CreateSectionFile(load.Loadcase.Name + "\\PRESSURE");
4345
string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(areaUniformlyDistributedLoad);
4446

45-
List<IAreaElement> assignedElements = areaUniformlyDistributedLoad.Objects.Elements;
47+
List<IAreaElement> assignedElements = load.Objects.Elements;
4648

4749
List<string> assignedFEMeshes = new List<string>();
4850

@@ -55,23 +57,23 @@ public bool CreateCollection(IEnumerable<AreaUniformlyDistributedLoad> areaUnifo
5557
}
5658
}
5759

58-
List<double> loadVectors = new List<double> { areaUniformlyDistributedLoad.Pressure.X,
59-
areaUniformlyDistributedLoad.Pressure.Y,
60-
areaUniformlyDistributedLoad.Pressure.Z};
60+
List<double> loadVectors = new List<double> { load.Pressure.X,
61+
load.Pressure.Y,
62+
load.Pressure.Z};
6163

6264
Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 };
6365

6466
for (int i = 0; i < 3; i++)
6567
{
66-
areaUniformlyDistributedLoad.Pressure = zeroVector;
68+
load.Pressure = zeroVector;
6769

6870
if (loadVectors[i] != 0)
6971
{
70-
areaUniformlyDistributedLoad.Pressure = CreateSingleComponentVector(i, loadVectors[i]);
72+
load.Pressure = CreateSingleComponentVector(i, loadVectors[i]);
7173

7274
foreach (string assignedFEMesh in assignedFEMeshes)
7375
{
74-
midasPressureLoads.Add(Adapters.MidasCivil.Convert.FromAreaUniformlyDistributedLoad(areaUniformlyDistributedLoad, assignedFEMesh, m_midasCivilVersion, m_forceUnit, m_lengthUnit));
76+
midasPressureLoads.Add(Adapters.MidasCivil.Convert.FromAreaUniformlyDistributedLoad(load, assignedFEMesh, m_midasCivilVersion, m_forceUnit, m_lengthUnit));
7577
}
7678
}
7779
}

MidasCivil_Adapter/CRUD/Create/Loads/BarPointLoads.cs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
using BH.oM.Structure.Loads;
2525
using BH.oM.Geometry;
2626
using BH.Engine.Adapter;
27+
using BH.Engine.Base;
2728
using System.IO;
2829
using System.Collections.Generic;
2930
using System.Linq;
@@ -42,35 +43,36 @@ private bool CreateCollection(IEnumerable<BarPointLoad> barPointLoads)
4243

4344
foreach (BarPointLoad barPointLoad in barPointLoads)
4445
{
46+
BarPointLoad load = barPointLoad.ShallowClone();
4547
List<string> midasBarLoads = new List<string>();
46-
string barLoadPath = CreateSectionFile(barPointLoad.Loadcase.Name + "\\BEAMLOAD");
48+
string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD");
4749
string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(barPointLoad);
4850

4951
List<string> assignedBars = barPointLoad.Objects.Elements.Select(x => x.AdapterId<string>(typeof(MidasCivilId))).ToList();
5052

51-
List<double> loadVectors = new List<double> { barPointLoad.Force.X,
52-
barPointLoad.Force.Y,
53-
barPointLoad.Force.Z,
54-
barPointLoad.Moment.X,
55-
barPointLoad.Moment.Y,
56-
barPointLoad.Moment.Z};
53+
List<double> loadVectors = new List<double> { load.Force.X,
54+
load.Force.Y,
55+
load.Force.Z,
56+
load.Moment.X,
57+
load.Moment.Y,
58+
load.Moment.Z};
5759

5860
Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 };
5961

6062
for (int i = 0; i < 6; i++)
6163
{
62-
barPointLoad.Force = zeroVector;
63-
barPointLoad.Moment = zeroVector;
64+
load.Force = zeroVector;
65+
load.Moment = zeroVector;
6466

6567
if (loadVectors[i] != 0)
6668
{
6769
if (i < 3)
6870
{
69-
barPointLoad.Force = CreateSingleComponentVector(i, loadVectors[i]);
71+
load.Force = CreateSingleComponentVector(i, loadVectors[i]);
7072

7173
foreach (string assignedBar in assignedBars)
7274
{
73-
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(barPointLoad, assignedBar, "Force", m_forceUnit, m_lengthUnit));
75+
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(load, assignedBar, "Force", m_forceUnit, m_lengthUnit));
7476
}
7577
}
7678
else
@@ -79,7 +81,7 @@ private bool CreateCollection(IEnumerable<BarPointLoad> barPointLoads)
7981

8082
foreach (string assignedBar in assignedBars)
8183
{
82-
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(barPointLoad, assignedBar, "Moment", m_forceUnit, m_lengthUnit));
84+
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarPointLoad(load, assignedBar, "Moment", m_forceUnit, m_lengthUnit));
8385
}
8486
}
8587

MidasCivil_Adapter/CRUD/Create/Loads/BarUniformlyDistributedLoads.cs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
using System.IO;
2828
using System.Collections.Generic;
2929
using System.Linq;
30+
using BH.Engine.Base;
3031

3132
namespace BH.Adapter.MidasCivil
3233
{
@@ -42,44 +43,45 @@ private bool CreateCollection(IEnumerable<BarUniformlyDistributedLoad> barUnifor
4243

4344
foreach (BarUniformlyDistributedLoad barUniformlyDistributedLoad in barUniformlyDistributedLoads)
4445
{
46+
BarUniformlyDistributedLoad load = barUniformlyDistributedLoad.ShallowClone();
4547
List<string> midasBarLoads = new List<string>();
46-
string barLoadPath = CreateSectionFile(barUniformlyDistributedLoad.Loadcase.Name + "\\BEAMLOAD");
48+
string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD");
4749
string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(barUniformlyDistributedLoad);
4850

49-
List<string> assignedBars = barUniformlyDistributedLoad.Objects.Elements.Select(x => x.AdapterId<string>(typeof(MidasCivilId))).ToList();
51+
List<string> assignedBars = load.Objects.Elements.Select(x => x.AdapterId<string>(typeof(MidasCivilId))).ToList();
5052

51-
List<double> loadVectors = new List<double> { barUniformlyDistributedLoad.Force.X,
52-
barUniformlyDistributedLoad.Force.Y,
53-
barUniformlyDistributedLoad.Force.Z,
54-
barUniformlyDistributedLoad.Moment.X,
55-
barUniformlyDistributedLoad.Moment.Y,
56-
barUniformlyDistributedLoad.Moment.Z};
53+
List<double> loadVectors = new List<double> { load.Force.X,
54+
load.Force.Y,
55+
load.Force.Z,
56+
load.Moment.X,
57+
load.Moment.Y,
58+
load.Moment.Z};
5759

5860
Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 };
5961

6062
for (int i = 0; i < 6; i++)
6163
{
62-
barUniformlyDistributedLoad.Force = zeroVector;
63-
barUniformlyDistributedLoad.Moment = zeroVector;
64+
load.Force = zeroVector;
65+
load.Moment = zeroVector;
6466

6567
if (loadVectors[i] != 0)
6668
{
6769
if (i < 3)
6870
{
69-
barUniformlyDistributedLoad.Force = CreateSingleComponentVector(i, loadVectors[i]);
71+
load.Force = CreateSingleComponentVector(i, loadVectors[i]);
7072

7173
foreach (string assignedBar in assignedBars)
7274
{
73-
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(barUniformlyDistributedLoad, assignedBar, "Force", m_forceUnit, m_lengthUnit));
75+
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(load, assignedBar, "Force", m_forceUnit, m_lengthUnit));
7476
}
7577
}
7678
else
7779
{
78-
barUniformlyDistributedLoad.Moment = CreateSingleComponentVector(i - 3, loadVectors[i]);
80+
load.Moment = CreateSingleComponentVector(i - 3, loadVectors[i]);
7981

8082
foreach (string assignedBar in assignedBars)
8183
{
82-
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(barUniformlyDistributedLoad, assignedBar, "Moment", m_forceUnit, m_lengthUnit));
84+
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarUniformlyDistributedLoad(load, assignedBar, "Moment", m_forceUnit, m_lengthUnit));
8385
}
8486
}
8587

MidasCivil_Adapter/CRUD/Create/Loads/BarVaryingDistributedLoads.cs

Lines changed: 61 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,17 @@
2222

2323
using BH.oM.Adapters.MidasCivil;
2424
using BH.Engine.Adapter;
25+
using BH.oM.Structure.Elements;
2526
using BH.oM.Structure.Loads;
2627
using BH.oM.Geometry;
2728
using System.IO;
2829
using System.Collections.Generic;
2930
using System.Linq;
31+
using BH.Engine.Base;
32+
using BH.Engine.Spatial;
33+
using BH.Engine.Geometry;
34+
using BH.Adapter.Adapters.MidasCivil;
35+
using System.Data;
3036

3137
namespace BH.Adapter.MidasCivil
3238
{
@@ -42,67 +48,90 @@ private bool CreateCollection(IEnumerable<BarVaryingDistributedLoad> barVaryingD
4248

4349
foreach (BarVaryingDistributedLoad barVaryingDistributedLoad in barVaryingDistributedLoads)
4450
{
45-
if (!barVaryingDistributedLoad.RelativePositions)
51+
BarVaryingDistributedLoad load = barVaryingDistributedLoad.ShallowClone();
52+
53+
if (load.StartPosition >= load.EndPosition)
4654
{
47-
Engine.Base.Compute.RecordError("The midas adapter can only handle BarVaryingDistributedLoads with relative positions. Please update the loads to be set with this format.");
55+
Engine.Base.Compute.RecordError("MidasCivil only supports start positions less than end positions for BarVaryingDistributedLoads.");
4856
continue;
4957
}
5058

51-
if (barVaryingDistributedLoad.StartPosition >= barVaryingDistributedLoad.EndPosition)
59+
List<double> startPosition = new List<double>();
60+
List<double> endPosition = new List<double>();
61+
62+
63+
foreach (Bar bar in load.Objects.Elements)
5264
{
53-
Engine.Base.Compute.RecordError("Midas civil only supports start positions less than end positions for BarVaryingDistributedLoads.");
54-
continue;
65+
if (load.RelativePositions == false)
66+
{
67+
double length = bar.Length();
68+
69+
startPosition.Add(barVaryingDistributedLoad.StartPosition / length);
70+
endPosition.Add(barVaryingDistributedLoad.EndPosition / length);
71+
72+
if (load.StartPosition / length > 1 || load.EndPosition / length > 1)
73+
Engine.Base.Compute.RecordError("The load start or end position is outside one or more bars");
74+
}
75+
else
76+
{
77+
startPosition.Add(barVaryingDistributedLoad.StartPosition);
78+
endPosition.Add(barVaryingDistributedLoad.EndPosition);
79+
}
5580
}
5681

82+
5783
List<string> midasBarLoads = new List<string>();
58-
string barLoadPath = CreateSectionFile(barVaryingDistributedLoad.Loadcase.Name + "\\BEAMLOAD");
59-
string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(barVaryingDistributedLoad);
84+
string barLoadPath = CreateSectionFile(load.Loadcase.Name + "\\BEAMLOAD");
85+
string midasLoadGroup = Adapters.MidasCivil.Convert.FromLoadGroup(load);
86+
87+
List<string> assignedBars = load.Objects.Elements.Select(x => x.AdapterId<string>(typeof(MidasCivilId))).ToList();
6088

61-
List<string> assignedBars = barVaryingDistributedLoad.Objects.Elements.Select(x => x.AdapterId<string>(typeof(MidasCivilId))).ToList();
6289

63-
List<double> startLoadVectors = new List<double> { barVaryingDistributedLoad.ForceAtStart.X,
64-
barVaryingDistributedLoad.ForceAtStart.Y,
65-
barVaryingDistributedLoad.ForceAtStart.Z,
66-
barVaryingDistributedLoad.MomentAtStart.X,
67-
barVaryingDistributedLoad.MomentAtStart.Y,
68-
barVaryingDistributedLoad.MomentAtStart.Z};
90+
List<double> startLoadVectors = new List<double> { load.ForceAtStart.X,
91+
load.ForceAtStart.Y,
92+
load.ForceAtStart.Z,
93+
load.MomentAtStart.X,
94+
load.MomentAtStart.Y,
95+
load.MomentAtStart.Z};
6996

70-
List<double> endLoadVectors = new List<double> { barVaryingDistributedLoad.ForceAtEnd.X,
71-
barVaryingDistributedLoad.ForceAtEnd.Y,
72-
barVaryingDistributedLoad.ForceAtEnd.Z,
73-
barVaryingDistributedLoad.MomentAtEnd.X,
74-
barVaryingDistributedLoad.MomentAtEnd.Y,
75-
barVaryingDistributedLoad.MomentAtEnd.Z};
97+
List<double> endLoadVectors = new List<double> { load.ForceAtEnd.X,
98+
load.ForceAtEnd.Y,
99+
load.ForceAtEnd.Z,
100+
load.MomentAtEnd.X,
101+
load.MomentAtEnd.Y,
102+
load.MomentAtEnd.Z};
76103

77104
Vector zeroVector = new Vector { X = 0, Y = 0, Z = 0 };
78105

79106
for (int i = 0; i < 6; i++)
80107
{
81-
barVaryingDistributedLoad.ForceAtStart = zeroVector;
82-
barVaryingDistributedLoad.MomentAtStart = zeroVector;
83-
barVaryingDistributedLoad.ForceAtEnd = zeroVector;
84-
barVaryingDistributedLoad.MomentAtEnd = zeroVector;
108+
load.ForceAtStart = zeroVector;
109+
load.MomentAtStart = zeroVector;
110+
load.ForceAtEnd = zeroVector;
111+
load.MomentAtEnd = zeroVector;
85112

86113
if (!(startLoadVectors[i] == 0 && endLoadVectors[i] == 0))
87114
{
88115
if (i < 3)
89116
{
90-
barVaryingDistributedLoad.ForceAtStart = CreateSingleComponentVector(i, startLoadVectors[i]);
91-
barVaryingDistributedLoad.ForceAtEnd = CreateSingleComponentVector(i, endLoadVectors[i]);
117+
load.ForceAtStart = CreateSingleComponentVector(i, startLoadVectors[i]);
118+
load.ForceAtEnd = CreateSingleComponentVector(i, endLoadVectors[i]);
92119

93-
foreach (string assignedBar in assignedBars)
120+
for (int j = 0; j < assignedBars.Count; j++)
94121
{
95-
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(barVaryingDistributedLoad, assignedBar, "Force", m_forceUnit, m_lengthUnit));
122+
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load,
123+
assignedBars[j], "Force", m_forceUnit, m_lengthUnit, startPosition[j], endPosition[j]));
96124
}
97125
}
98126
else
99127
{
100-
barVaryingDistributedLoad.MomentAtStart = CreateSingleComponentVector(i - 3, startLoadVectors[i]);
101-
barVaryingDistributedLoad.MomentAtEnd = CreateSingleComponentVector(i - 3, endLoadVectors[i]);
128+
load.MomentAtStart = CreateSingleComponentVector(i - 3, startLoadVectors[i]);
129+
load.MomentAtEnd = CreateSingleComponentVector(i - 3, endLoadVectors[i]);
102130

103-
foreach (string assignedBar in assignedBars)
131+
for (int j = 0; j < assignedBars.Count; j++)
104132
{
105-
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(barVaryingDistributedLoad, assignedBar, "Moment", m_forceUnit, m_lengthUnit));
133+
midasBarLoads.Add(Adapters.MidasCivil.Convert.FromBarVaryingDistributedLoad(load,
134+
assignedBars[j], "Moment", m_forceUnit, m_lengthUnit, startPosition[j], endPosition[j]));
106135
}
107136
}
108137

0 commit comments

Comments
 (0)