Skip to content

Commit

Permalink
GSAGH-482-Always-export-PolyLineDefinition-for-grid-area-loads-in-.NE…
Browse files Browse the repository at this point in the history
…T-API (#670)
  • Loading branch information
tlmnrnhrdt committed May 6, 2024
2 parents 148ef66 + 1ac4e57 commit e343fd0
Show file tree
Hide file tree
Showing 12 changed files with 182 additions and 123 deletions.
38 changes: 15 additions & 23 deletions GsaGH/Components/0_Model/GetModelLoads.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using System.Linq;
using Grasshopper.Kernel;
using GsaAPI;
using GsaGH.Helpers.GH;
using GsaGH.Parameters;
using GsaGH.Properties;
Expand Down Expand Up @@ -92,29 +92,21 @@ public class GetModelLoads : GH_OasysDropDownComponent {
GsaModelGoo modelGoo = null;
da.GetData(0, ref modelGoo);

GsaAPI.Model model = modelGoo.Value.Model;
ReadOnlyDictionary<int, GsaAPI.LoadCase> loadCases = model.LoadCases();
List<GsaLoadCaseGoo> cases = GsaLoadFactory.CreateLoadCasesFromApi(loadCases);
List<GsaLoadGoo> gravity = GsaLoadFactory.CreateGravityLoadsFromApi(model.GravityLoads(), loadCases);
List<GsaLoadGoo> node = GsaLoadFactory.CreateNodeLoadsFromApi(model, loadCases);
List<GsaLoadGoo> beam = GsaLoadFactory.CreateBeamLoadsFromApi(model.BeamLoads(), loadCases);
List<GsaLoadGoo> beamThermal = GsaLoadFactory.CreateBeamThermalLoadsFromApi(model.BeamThermalLoads(), loadCases);
List<GsaLoadGoo> face = GsaLoadFactory.CreateFaceLoadsFromApi(model.FaceLoads(), loadCases);
List<GsaLoadGoo> faceThermal = GsaLoadFactory.CreateFaceThermalLoadsFromApi(model.FaceThermalLoads(), loadCases);

IReadOnlyDictionary<int, GsaAPI.GridSurface> srfDict = model.GridSurfaces();
IReadOnlyDictionary<int, GsaAPI.GridPlane> plnDict = model.GridPlanes();
IReadOnlyDictionary<int, GsaAPI.Axis> axDict = model.Axes();
List<GsaLoadGoo> point = GsaLoadFactory.CreateGridPointLoadsFromApi(
model.GridPointLoads(), srfDict, plnDict, axDict, loadCases, _lengthUnit);
List<GsaLoadGoo> line = GsaLoadFactory.CreateGridLineLoadsFromApi(
model.GridLineLoads(), srfDict, plnDict, axDict, loadCases, _lengthUnit);
List<GsaLoadGoo> area = GsaLoadFactory.CreateGridAreaLoadsFromApi(
model.GridAreaLoads(), srfDict, plnDict, axDict, loadCases, _lengthUnit);

Model model = modelGoo.Value.Model;
List<GsaLoadCaseGoo> cases = GsaLoadFactory.CreateLoadCasesFromApi(model);
List<GsaLoadGoo> gravity = GsaLoadFactory.CreateGravityLoadsFromApi(model);
List<GsaLoadGoo> node = GsaLoadFactory.CreateNodeLoadsFromApi(model);
List<GsaLoadGoo> beam = GsaLoadFactory.CreateBeamLoadsFromApi(model);
List<GsaLoadGoo> beamThermal = GsaLoadFactory.CreateBeamThermalLoadsFromApi(model);
List<GsaLoadGoo> face = GsaLoadFactory.CreateFaceLoadsFromApi(model);
List<GsaLoadGoo> faceThermal = GsaLoadFactory.CreateFaceThermalLoadsFromApi(model);
List<GsaLoadGoo> point = GsaLoadFactory.CreateGridPointLoadsFromApi(model, _lengthUnit);
List<GsaLoadGoo> line = GsaLoadFactory.CreateGridLineLoadsFromApi(model, _lengthUnit);
List<GsaLoadGoo> area = GsaLoadFactory.CreateGridAreaLoadsFromApi(model, _lengthUnit);

IReadOnlyDictionary<int, GridSurface> srfDict = model.GridSurfaces();
var gps = srfDict.Keys.Select(key
=> new GsaGridPlaneSurfaceGoo(GsaLoadFactory.CreateGridPlaneSurfaceFromApi(srfDict, plnDict, axDict, key,
_lengthUnit))).ToList();
=> new GsaGridPlaneSurfaceGoo(GsaLoadFactory.CreateGridPlaneSurfaceFromApi(model, key, _lengthUnit))).ToList();

da.SetDataList(0, cases);
da.SetDataList(1, gravity);
Expand Down
8 changes: 8 additions & 0 deletions GsaGH/Helpers/Assembly/Loads/Loads.cs
Expand Up @@ -237,6 +237,10 @@ internal partial class ModelAssembly {
$"({Length.GetAbbreviation(_unit)})";
}

if(load.ApiLoad.PolyLineReference > 0) {
_model.AddPolyline(load.ApiPolyline);

Check warning on line 241 in GsaGH/Helpers/Assembly/Loads/Loads.cs

View check run for this annotation

Codecov / codecov/patch

GsaGH/Helpers/Assembly/Loads/Loads.cs#L241

Added line #L241 was not covered by tests
}

if (load.GridPlaneSurface == null) {
_gridAreaLoads.Add(load.ApiLoad);
return;
Expand Down Expand Up @@ -265,6 +269,10 @@ internal partial class ModelAssembly {
$"({Length.GetAbbreviation(_unit)})";
}

if (load.ApiLoad.PolyLineReference > 0) {
_model.AddPolyline(load.ApiPolyline);

Check warning on line 273 in GsaGH/Helpers/Assembly/Loads/Loads.cs

View check run for this annotation

Codecov / codecov/patch

GsaGH/Helpers/Assembly/Loads/Loads.cs#L273

Added line #L273 was not covered by tests
}

GsaGridPlaneSurface gridplnsrf = load.GridPlaneSurface;

if (gridplnsrf.GridPlane != null) {
Expand Down
31 changes: 11 additions & 20 deletions GsaGH/Helpers/MergeModels.cs
Expand Up @@ -133,37 +133,28 @@ public class MergeModels {
}).ToList();

var gooloads = new List<GsaLoadGoo>();
ReadOnlyDictionary<int, LoadCase> loadCases = appendModel.Model.LoadCases();
gooloads.AddRange(GsaLoadFactory.CreateGravityLoadsFromApi(appendModel.Model.GravityLoads(), loadCases));
gooloads.AddRange(GsaLoadFactory.CreateNodeLoadsFromApi(appendModel.Model, loadCases));
gooloads.AddRange(GsaLoadFactory.CreateBeamLoadsFromApi(appendModel.Model.BeamLoads(), loadCases));
gooloads.AddRange(GsaLoadFactory.CreateBeamThermalLoadsFromApi(appendModel.Model.BeamThermalLoads(), loadCases));
gooloads.AddRange(GsaLoadFactory.CreateFaceLoadsFromApi(appendModel.Model.FaceLoads(), loadCases));
gooloads.AddRange(GsaLoadFactory.CreateFaceThermalLoadsFromApi(appendModel.Model.FaceThermalLoads(), loadCases));
gooloads.AddRange(GsaLoadFactory.CreateGravityLoadsFromApi(appendModel.Model));
gooloads.AddRange(GsaLoadFactory.CreateNodeLoadsFromApi(appendModel.Model));
gooloads.AddRange(GsaLoadFactory.CreateBeamLoadsFromApi(appendModel.Model));
gooloads.AddRange(GsaLoadFactory.CreateBeamThermalLoadsFromApi(appendModel.Model));
gooloads.AddRange(GsaLoadFactory.CreateFaceLoadsFromApi(appendModel.Model));
gooloads.AddRange(GsaLoadFactory.CreateFaceThermalLoadsFromApi(appendModel.Model));

IReadOnlyDictionary<int, GridSurface> srfDict = appendModel.Model.GridSurfaces();
IReadOnlyDictionary<int, GridPlane> plnDict = appendModel.Model.GridPlanes();

gooloads.AddRange(GsaLoadFactory.CreateGridPointLoadsFromApi(
appendModel.Model.GridPointLoads(), srfDict, plnDict, appendModel.ApiAxis, loadCases,
LengthUnit.Meter));
gooloads.AddRange(GsaLoadFactory.CreateGridLineLoadsFromApi(
appendModel.Model.GridLineLoads(), srfDict, plnDict, appendModel.ApiAxis, loadCases,
LengthUnit.Meter));
gooloads.AddRange(GsaLoadFactory.CreateGridAreaLoadsFromApi(
appendModel.Model.GridAreaLoads(), srfDict, plnDict, appendModel.ApiAxis, loadCases,
LengthUnit.Meter));
gooloads.AddRange(GsaLoadFactory.CreateGridPointLoadsFromApi(appendModel.Model, LengthUnit.Meter));
gooloads.AddRange(GsaLoadFactory.CreateGridLineLoadsFromApi(appendModel.Model, LengthUnit.Meter));
gooloads.AddRange(GsaLoadFactory.CreateGridAreaLoadsFromApi(appendModel.Model, LengthUnit.Meter));
var loads = gooloads.Select(n => n.Value).ToList();

var gpsgoo = srfDict.Keys.Select(key => new GsaGridPlaneSurfaceGoo(
GsaLoadFactory.CreateGridPlaneSurfaceFromApi(
srfDict, plnDict, appendModel.ApiAxis, key, LengthUnit.Meter))).ToList();
GsaLoadFactory.CreateGridPlaneSurfaceFromApi(appendModel.Model, key, LengthUnit.Meter))).ToList();
var gps = gpsgoo.Select(n => n.Value).ToList();

List<GsaList> lists = appendModel.GetLists();
List<GsaGridLine> gridLines = appendModel.GetGridLines();
var gsaLoadCases =
GsaLoadFactory.CreateLoadCasesFromApi(loadCases).Select(n => n.Value).ToList();
var gsaLoadCases = GsaLoadFactory.CreateLoadCasesFromApi(appendModel.Model).Select(n => n.Value).ToList();
var designTasks = new List<IGsaDesignTask>();
foreach (SteelDesignTask designTask in appendModel.Model.SteelDesignTasks().Values) {
var kvp = new KeyValuePair<int, SteelDesignTask>(0, designTask);
Expand Down
16 changes: 15 additions & 1 deletion GsaGH/Parameters/3_Loads/GridLoadHelper.cs
@@ -1,4 +1,5 @@
using GsaAPI;
using System.Collections.Generic;
using GsaAPI;
using OasysUnits;
using Rhino.Collections;
using Rhino.Geometry;
Expand Down Expand Up @@ -45,6 +46,19 @@ internal static class GridLoadHelper {
return points;
}

internal static Point3dList ConvertPoints(List<Vector2> definition, LengthUnit desiredUnit, Plane localPlane) {
var map = Transform.ChangeBasis(localPlane, Plane.WorldXY);
var points = new Point3dList();

Check warning on line 51 in GsaGH/Parameters/3_Loads/GridLoadHelper.cs

View check run for this annotation

Codecov / codecov/patch

GsaGH/Parameters/3_Loads/GridLoadHelper.cs#L50-L51

Added lines #L50 - L51 were not covered by tests
foreach (Vector2 vector in definition) {
var x = new Length(vector.X, LengthUnit.Meter);
var y = new Length(vector.Y, LengthUnit.Meter);
var point = new Point3d(x.As(desiredUnit), y.As(desiredUnit), 0);
point.Transform(map);
points.Add(point);

Check warning on line 57 in GsaGH/Parameters/3_Loads/GridLoadHelper.cs

View check run for this annotation

Codecov / codecov/patch

GsaGH/Parameters/3_Loads/GridLoadHelper.cs#L53-L57

Added lines #L53 - L57 were not covered by tests
}
return points;

Check warning on line 59 in GsaGH/Parameters/3_Loads/GridLoadHelper.cs

View check run for this annotation

Codecov / codecov/patch

GsaGH/Parameters/3_Loads/GridLoadHelper.cs#L59

Added line #L59 was not covered by tests
}

private static (LengthUnit lengthUnit, string def) ClearDefGetUnit(string definition) {
LengthUnit lengthUnit = LengthUnit.Meter;
if (definition.EndsWith("(mm)")) {
Expand Down
12 changes: 12 additions & 0 deletions GsaGH/Parameters/3_Loads/GsaGridAreaLoad.cs
Expand Up @@ -6,6 +6,7 @@
namespace GsaGH.Parameters {
public class GsaGridAreaLoad : IGsaGridLoad {
public GridAreaLoad ApiLoad { get; set; } = new GridAreaLoad();
public Polyline ApiPolyline { get; internal set; }
public GsaGridPlaneSurface GridPlaneSurface { get; set; } = new GsaGridPlaneSurface();
public GsaLoadCase LoadCase { get; set; }
public ReferenceType ReferenceType => GridPlaneSurface._referenceType;
Expand Down Expand Up @@ -44,11 +45,22 @@ public class GsaGridAreaLoad : IGsaGridLoad {
Points = Points,
};

if(ApiPolyline != null) {
dup.ApiPolyline = DuplicateApiPolyline();
}

if (LoadCase != null) {
dup.LoadCase = LoadCase;
}

return dup;
}

private Polyline DuplicateApiPolyline() {
var polyline = new Polyline(ApiPolyline.Points) {
Name = ApiPolyline.Name
};
return polyline;
}
}
}
12 changes: 12 additions & 0 deletions GsaGH/Parameters/3_Loads/GsaGridLineLoad.cs
Expand Up @@ -6,6 +6,7 @@
namespace GsaGH.Parameters {
public class GsaGridLineLoad : IGsaGridLoad {
public GridLineLoad ApiLoad { get; set; } = new GridLineLoad();
public Polyline ApiPolyline { get; internal set; }
public GsaGridPlaneSurface GridPlaneSurface { get; set; } = new GsaGridPlaneSurface();
public GsaLoadCase LoadCase { get; set; }
public ReferenceType ReferenceType => GridPlaneSurface._referenceType;
Expand Down Expand Up @@ -45,11 +46,22 @@ public class GsaGridLineLoad : IGsaGridLoad {
Points = Points,
};

if (ApiPolyline != null) {
dup.ApiPolyline = DuplicateApiPolyline();
}

if (LoadCase != null) {
dup.LoadCase = LoadCase;
}

return dup;
}

private Polyline DuplicateApiPolyline() {
var polyline = new Polyline(ApiPolyline.Points) {
Name = ApiPolyline.Name
};
return polyline;
}
}
}

0 comments on commit e343fd0

Please sign in to comment.