Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GSAGH-482-Always-export-PolyLineDefinition-for-grid-area-loads-in-.NET-API #670

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
38 changes: 15 additions & 23 deletions GsaGH/Components/0_Model/GetModelLoads.cs
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,10 @@
$"({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 @@
$"({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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
@@ -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 @@
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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;
}
}
}