Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/origin/release/10.2.14' into task/
Browse files Browse the repository at this point in the history
GSAGH-499-modal-task

# Conflicts:
#	GsaGH/Components/4_Analysis/CreateAnalysisTask.cs
#	GsaGH/Parameters/4_Analysis/GsaAnalysisTask.cs
  • Loading branch information
SandeepArup committed Jan 21, 2025
2 parents 0a4e553 + 463b4e9 commit 88dfc68
Show file tree
Hide file tree
Showing 103 changed files with 7,264 additions and 2,572 deletions.
Binary file modified ExampleFiles/Parameters/1_Properties/CreateBool6Test.gh
Binary file not shown.
Binary file modified ExampleFiles/Parameters/ParametersCast.gh
Binary file not shown.
70 changes: 37 additions & 33 deletions GsaGH/Components/0_Model/CreateGridLine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,28 @@

using OasysGH;
using OasysGH.Components;
using OasysGH.Units.Helpers;

using Rhino.Geometry;
using OasysUnits.Units;

using Line = Rhino.Geometry.Line;
using Rhino.Geometry;

namespace GsaGH.Components {
/// <summary>
/// Component to create a new <see cref="GsaGridLine" />
/// Component to create a new <see cref="GsaGridLine" />
/// </summary>
public class CreateGridLine : GH_OasysComponent, IGH_PreviewObject {
public override Guid ComponentGuid => new Guid("2f28e2d2-5e6b-4931-ae3a-f27e471e053c");
public override GH_Exposure Exposure => GH_Exposure.quarternary | GH_Exposure.obscure;
public override OasysPluginInfo PluginInfo => GsaGH.PluginInfo.Instance;
protected override Bitmap Icon => Resources.CreateGridLine;

public CreateGridLine() : base("Create Grid Line", "CreateGridLine",
"Create a GSA Grid Line from a line or arc.", CategoryName.Name(), SubCategoryName.Cat0()) { }
public CreateGridLine() : base("Create Grid Line", "CreateGridLine", "Create a GSA Grid Line from a line or arc.",
CategoryName.Name(), SubCategoryName.Cat0()) { }

protected override void RegisterInputParams(GH_InputParamManager pManager) {
pManager.AddCurveParameter("Curve", "C", "Straight line or circular arc to create a GSA Grid Line", GH_ParamAccess.item);
pManager.AddCurveParameter("Curve", "C", "Straight line or circular arc to create a GSA Grid Line",
GH_ParamAccess.item);
pManager.AddTextParameter("Label", "L", "The name by which the grid line is referred", GH_ParamAccess.item);
pManager[1].Optional = true;
}
Expand All @@ -46,35 +48,37 @@ protected override void SolveInstance(IGH_DataAccess da) {
}

GH_Curve curve = null;
GsaGridLine gridLine = null;
if (da.GetData(0, ref curve)) {
var ghLine = new GH_Line();
var ghArc = new GH_Arc();
var polyCurve = new PolyCurve();
if (ghLine.CastFrom(curve)) {
Line line = ghLine.Value;
// project onto WorldXY
line.FromZ = 0;
line.ToZ = 0;
gridLine = new GsaGridLine(line, label);
} else if (ghArc.CastFrom(curve)) {
Arc arc = ghArc.Value;
// project onto WorldXY
Point3d startPoint = arc.StartPoint;
startPoint.Z = 0;
Point3d midPoint = arc.MidPoint;
midPoint.Z = 0;
Point3d endPoint = arc.EndPoint;
endPoint.Z = 0;
gridLine = new GsaGridLine(arc, label);
} else {
string message = "Invalid input geometry, curve needs to be a straight line or a circular arc.";
this.AddRuntimeWarning(message);
return;
}
GsaGridLine gsaGridLine = null;
if (!da.GetData(0, ref curve)) {
return;
}

da.SetData(0, new GsaGridLineGoo(gridLine));
var ghLine = new GH_Line();
var ghArc = new GH_Arc();
if (ghLine.CastFrom(curve)) {
Line line = ghLine.Value;
// project onto WorldXY
line.FromZ = 0;
line.ToZ = 0;
gsaGridLine = new GsaGridLine(line, label);
} else if (ghArc.CastFrom(curve)) {
Arc arc = ghArc.Value;
// project onto WorldXY
Point3d startPoint = arc.StartPoint;
startPoint.Z = 0;
Point3d midPoint = arc.MidPoint;
midPoint.Z = 0;
Point3d endPoint = arc.EndPoint;
endPoint.Z = 0;
gsaGridLine = new GsaGridLine(arc, label);
} else {
string message = "Invalid input geometry, curve needs to be a straight line or a circular arc.";
this.AddRuntimeWarning(message);
return;
}

var goo = new GsaGridLineGoo(gsaGridLine);
da.SetData(0, goo);
}
}
}
10 changes: 8 additions & 2 deletions GsaGH/Components/0_Model/SaveGsaModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public class SaveGsaModel : GH_OasysDropDownComponent {
public override OasysPluginInfo PluginInfo => GsaGH.PluginInfo.Instance;
protected override Bitmap Icon => Resources.SaveGsaModel;
private string _fileNameLastSaved;
internal string FileNameLastSavedFullPath => $"\"{Path.GetFullPath(_fileNameLastSaved)}\"";
private bool _saveInputOverride = false;

public SaveGsaModel() : base("Save GSA Model", "Save",
Expand Down Expand Up @@ -91,7 +92,7 @@ protected override void SolveInternal(IGH_DataAccess da) {
return;
}

var gsaModel = new GsaModel();
GsaModel gsaModel;
if (ghTyp.Value is GsaModelGoo modelGoo) {
gsaModel = modelGoo.Value;
Message = string.Empty;
Expand Down Expand Up @@ -175,8 +176,13 @@ internal void OpenGsaExe() {
GsaModel gsaModel = tempModel.Value;
Save(ref gsaModel, tempPath);
}
RunGsa();
}

Process.Start(_fileNameLastSaved);
internal Process RunGsa() {
string programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
string fullPath = Path.Combine(programFiles, @"Oasys\GSA 10.2\GSA.exe");
return Process.Start(fullPath, FileNameLastSavedFullPath);
}
}
}
6 changes: 4 additions & 2 deletions GsaGH/Components/2_Geometry/CreateSupport.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ public override bool Read(GH_IReader reader) {
_xx = reader.GetBoolean("xx");
_yy = reader.GetBoolean("yy");
_zz = reader.GetBoolean("zz");
return base.Read(reader);
bool flag= base.Read(reader);
Params.UpdateRestrainedBool6Parameter();
return flag;
}

public void SetRestraints(bool resx, bool resy, bool resz, bool resxx, bool resyy, bool reszz) {
Expand Down Expand Up @@ -85,7 +87,7 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) {
GH_ParamAccess.item);
pManager.AddPlaneParameter("Plane", "Pl", "[Optional] Plane for local axis",
GH_ParamAccess.item, Plane.WorldXY);
pManager.AddParameter(new GsaBool6Parameter(), "Restraints", "B6",
pManager.AddParameter(new GsaRestraintParameter(), "Restraints", "B6",
"[Optional] Restraint in Bool6 form", GH_ParamAccess.item);

pManager[1].Optional = true;
Expand Down
10 changes: 5 additions & 5 deletions GsaGH/Components/2_Geometry/Edit1dElement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public override bool Read(GH_IReader reader) {
Params.ReplaceInputParameter(new GsaPropertyParameter(), 3, true);
Params.ReplaceOutputParameter(new GsaPropertyParameter(), 3);
}

Params.UpdateReleaseBool6Parameter();
return flag;
}

Expand All @@ -79,9 +79,9 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) {
pManager.AddParameter(new GsaOffsetParameter(), "Offset", "Of", "Set Element Offset",
GH_ParamAccess.item);

pManager.AddParameter(new GsaBool6Parameter(), "Start release", "⭰",
pManager.AddParameter(new GsaReleaseParameter(), "Start release", "⭰",
"Set Release (Bool6) at Start of Element", GH_ParamAccess.item);
pManager.AddParameter(new GsaBool6Parameter(), "End release", "⭲",
pManager.AddParameter(new GsaReleaseParameter(), "End release", "⭲",
"Set Release (Bool6) at End of Element", GH_ParamAccess.item);

pManager.AddAngleParameter("Orientation Angle", "⭮A", "Set Element Orientation Angle",
Expand Down Expand Up @@ -118,9 +118,9 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) {
pManager.AddParameter(new GsaOffsetParameter(), "Offset", "Of", "Get Element Offset",
GH_ParamAccess.item);

pManager.AddParameter(new GsaBool6Parameter(), "Start release", "⭰",
pManager.AddParameter(new GsaReleaseParameter(), "Start release", "⭰",
"Get Release (Bool6) at Start of Element", GH_ParamAccess.item);
pManager.AddParameter(new GsaBool6Parameter(), "End release", "⭲",
pManager.AddParameter(new GsaReleaseParameter(), "End release", "⭲",
"Get Release (Bool6) at End of Element", GH_ParamAccess.item);

pManager.AddNumberParameter("Orientation Angle", "⭮A", "Get Element Orientation Angle",
Expand Down
10 changes: 5 additions & 5 deletions GsaGH/Components/2_Geometry/Edit1dMember.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public override bool Read(GH_IReader reader) {
Params.ReplaceInputParameter(new GsaPropertyParameter(), 3, true);
Params.ReplaceOutputParameter(new GsaPropertyParameter(), 3);
}

Params.UpdateReleaseBool6Parameter();
return flag;
}

Expand Down Expand Up @@ -100,9 +100,9 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) {
GH_ParamAccess.item);
pManager.AddParameter(new GsaOffsetParameter(), "Offset", "Of", "Set Member Offset",
GH_ParamAccess.item);
pManager.AddParameter(new GsaBool6Parameter(), "Start release", "⭰",
pManager.AddParameter(new GsaReleaseParameter(), "Start release", "⭰",
"Set Release (Bool6) at Start of Member", GH_ParamAccess.item);
pManager.AddParameter(new GsaBool6Parameter(), "End release", "⭲",
pManager.AddParameter(new GsaReleaseParameter(), "End release", "⭲",
"Set Release (Bool6) at End of Member", GH_ParamAccess.item);
pManager.AddBooleanParameter("Automatic Offset End 1", "AO1",
"Set Automatic Offset at End 1 of Member", GH_ParamAccess.item);
Expand Down Expand Up @@ -149,9 +149,9 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) {
GH_ParamAccess.item);
pManager.AddParameter(new GsaOffsetParameter(), "Offset", "Of", "Get Member Offset",
GH_ParamAccess.item);
pManager.AddParameter(new GsaBool6Parameter(), "Start release", "⭰",
pManager.AddParameter(new GsaReleaseParameter(), "Start release", "⭰",
"Get Release (Bool6) at Start of Member", GH_ParamAccess.item);
pManager.AddParameter(new GsaBool6Parameter(), "End release", "⭲",
pManager.AddParameter(new GsaReleaseParameter(), "End release", "⭲",
"Get Release (Bool6) at End of Member", GH_ParamAccess.item);
pManager.AddBooleanParameter("Automatic Offset End 1", "AO1",
"Get Automatic Offset at End 1 of Member", GH_ParamAccess.item);
Expand Down
23 changes: 21 additions & 2 deletions GsaGH/Components/2_Geometry/Edit2dElement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
using System.Drawing;
using System.Linq;

using GH_IO.Serialization;

using Grasshopper.Kernel;
using Grasshopper.Kernel.Parameters;
using Grasshopper.Kernel.Types;
Expand All @@ -28,6 +30,15 @@ public class Edit2dElement : Section3dPreviewComponent {
protected override Bitmap Icon => Resources.Edit2dElement;
private AngleUnit _angleUnit = AngleUnit.Radian;


private readonly Param_Geometry _geometryAttributes = new Param_Geometry {
Name = "Geometry",
NickName = "G",
Description = "Get analysis mesh for FE element and polyline for load panel",
Access = GH_ParamAccess.item,
Optional = true,
};

public Edit2dElement() : base("Edit 2D Element", "Elem2dEdit", "Modify GSA 2D Element",
CategoryName.Name(), SubCategoryName.Cat2()) { }

Expand All @@ -38,6 +49,14 @@ protected override void BeforeSolveInstance() {
}
}

public override bool Read(GH_IReader reader) {
bool flag = base.Read(reader);
if (Params.Output[2].Name == "Analysis Mesh") {
Params.ReplaceOutputParameter(_geometryAttributes, 2);
}
return flag;
}

protected override void RegisterInputParams(GH_InputParamManager pManager) {
pManager.AddParameter(new GsaElement2dParameter(), GsaElement2dGoo.Name,
GsaElement2dGoo.NickName,
Expand Down Expand Up @@ -73,7 +92,7 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) {
GsaElement2dGoo.NickName, GsaElement2dGoo.Description + " with applied changes.",
GH_ParamAccess.item);
pManager.AddIntegerParameter("Number", "ID", "Get Element Number", GH_ParamAccess.list);
pManager.AddMeshParameter("Analysis Mesh", "M", "Get Analysis Mesh", GH_ParamAccess.item);
pManager.AddGeometryParameter(_geometryAttributes.Name, _geometryAttributes.NickName, _geometryAttributes.Description, _geometryAttributes.Access);
pManager.HideParameter(2);
pManager.AddParameter(new GsaProperty2dParameter(), "2D Property", "PA",
"Get 2D Property. Input either a GSA 2D Property or an Integer to use a Property already defined in model",
Expand Down Expand Up @@ -182,7 +201,7 @@ protected override void SolveInstance(IGH_DataAccess da) {
// #### outputs ####
da.SetData(0, new GsaElement2dGoo(elem));
da.SetDataList(1, elem.Ids);
da.SetData(2, elem.Mesh);
da.SetData(2, elem.Geometry());
da.SetDataList(3, elem.Prop2ds == null ? null
: new List<GsaProperty2dGoo>(elem.Prop2ds.Select(x => new GsaProperty2dGoo(x))));
da.SetDataList(4, elem.ApiElements.Select(x => x.Group));
Expand Down
6 changes: 3 additions & 3 deletions GsaGH/Components/2_Geometry/EditNode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public override bool Read(GH_IReader reader) {
Params.ReplaceInputParameter(new GsaSpringPropertyParameter(), 7, true);
Params.ReplaceOutputParameter(new GsaSpringPropertyParameter(), 7);
}

Params.UpdateRestrainedBool6Parameter();
return flag;
}

Expand Down Expand Up @@ -100,7 +100,7 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) {
GH_ParamAccess.item);
pManager.AddPlaneParameter("Node local axis", "Pl", "Set Local axis (Plane) of Node",
GH_ParamAccess.item);
pManager.AddParameter(new GsaBool6Parameter(), "Node Restraints", "B6",
pManager.AddParameter(new GsaRestraintParameter(), "Node Restraints", "B6",
"Set Restraints (Bool6) of Node", GH_ParamAccess.item);
pManager.AddIntegerParameter("Damper Property", "DP", "Set Damper Property by reference",
GH_ParamAccess.item);
Expand Down Expand Up @@ -131,7 +131,7 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) {
pManager.AddPlaneParameter("Node local axis", "Pl", "Local axis (Plane) of Node",
GH_ParamAccess.item);
pManager.HideParameter(3);
pManager.AddParameter(new GsaBool6Parameter(), "Node Restraints", "B6",
pManager.AddParameter(new GsaRestraintParameter(), "Node Restraints", "B6",
"Restraints (Bool6) of Node", GH_ParamAccess.item);
pManager.AddIntegerParameter("Damper Property", "DP", "Get Damper Property reference",
GH_ParamAccess.item);
Expand Down
10 changes: 2 additions & 8 deletions GsaGH/Components/4_Analysis/AnalyseModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -222,21 +222,15 @@ protected override void SolveInternal(IGH_DataAccess da) {
if (_analysis) {
IReadOnlyDictionary<int, AnalysisTask> gsaTasks = model.ApiModel.AnalysisTasks();
if (gsaTasks.Count < 1) {
var task = new GsaAnalysisTask {
Id = model.ApiModel.AddAnalysisTask(),
};
task.CreateDefaultCases(model);
int taskId = TaskHelper.CreateDefaultStaticAnalysisTask(model);
var task = new GsaAnalysisTask(taskId, model.ApiModel);
if (task.Cases == null || task.Cases.Count == 0) {
this.AddRuntimeWarning(
" Model contains no loads and has not been analysed, but has been assembled.");
} else {
this.AddRuntimeRemark(
" Model contained no Analysis Tasks. Default Task has been created containing " +
"all cases found in model");
foreach (GsaAnalysisCase ca in task.Cases) {
model.ApiModel.AddAnalysisCaseToTask(task.Id, ca.Name, ca.Definition);
}

gsaTasks = model.ApiModel.AnalysisTasks();
}
}
Expand Down
11 changes: 6 additions & 5 deletions GsaGH/Components/4_Analysis/CreateAnalysisTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,9 +155,10 @@ public override void VariableParameterMaintenance() {
SetInputAttributes(_casesParamIndex, _modalDynamicParameterInputAttributes);
break;
case AnalysisTaskType.Static:
default:
SetInputAttributes(_casesParamIndex, _analysisCaseInputAttributes);
break;
default:
break;
}
}

Expand Down Expand Up @@ -263,12 +264,12 @@ private bool GetAnalysisCases(IGH_DataAccess da, out List<GsaAnalysisCase> cases
cases.Add(goo.Value.Duplicate());
} else {
UnsupportedValueError(ghTypeWrapper);
return false;
}
}
}
if (cases == null) {
this.AddRuntimeRemark("Default Task has been created; it will by default contain all cases found in model");
return false;
}
break;
default:
Expand Down Expand Up @@ -380,7 +381,7 @@ private bool CreateFootfallTask(IGH_DataAccess da, string name, out AnalysisTask
return true;
}

private bool CreateModalDynamicTask(IGH_DataAccess da, string name, out AnalysisTask task) {
private static bool CreateModalDynamicTask(IGH_DataAccess da, string name, out AnalysisTask task) {
GsaModalDynamicAnalysisGoo gsaModalDynamicAnalysisGoo = null;
if (da.GetData(2, ref gsaModalDynamicAnalysisGoo)) {
GsaModalDynamicAnalysis dynamicAnalysisParameter = gsaModalDynamicAnalysisGoo.Value;
Expand Down Expand Up @@ -593,12 +594,12 @@ private void UpdateDropdownItems() {
_selectedItems.Add(_dropDownItems[0][3]);
break;
case AnalysisTaskType.Static:
default:
_dropDownItems.Add(_solverTypes.Keys.ToList());
_selectedItems.Add(_dropDownItems[0][0]);
break;
default:
break;
}

ReDrawComponent();
}

Expand Down
Loading

0 comments on commit 88dfc68

Please sign in to comment.