using FeMM.Grasshopper.Components.Models.MeCheck2;
using FeMM.Grasshopper.Components.Parameters;
using FeMM.Grasshopper.DataTypes.MeCheck2;
using FeMM.Grasshopper.Helpers;
using Grasshopper.Kernel;
using System;
namespace FeMM.Grasshopper.Components.MeCheck2
{
public class CompositeSectionStiffenersComponent : GH_Component
{
public CompositeSectionStiffenersComponent()
: base("Composite Section Stiffeners", "CSS", "Define the composite section stiffeners", CategoryNameConstants.CATEGORY_CHECKS, CategoryNameConstants.SUBCATEGORY_MECHECK2)
{
}
protected override void RegisterInputParams(GH_InputParamManager pManager)
{
var idx = pManager.AddNumberParameter("Beam Length", "L", "The length of the beam", GH_ParamAccess.item, 10000);
pManager[idx].Optional = true;
pManager.AddNumberParameter("Stiffener Spacing", "SS", "Stiffener geometry, distance between two consecutive", GH_ParamAccess.item);
pManager.AddNumberParameter("Stiffener Width", "SW", "Stiffener geometry, width", GH_ParamAccess.item);
pManager.AddNumberParameter("Stiffener Thickness", "ST", "Stiffener geometry, thickness", GH_ParamAccess.item);
idx = pManager.AddBooleanParameter("Symmetric", "S", "Stiffener geometry, consider symmetric stiffeners", GH_ParamAccess.item, false);
pManager[idx].Optional = true;
idx = pManager.AddBooleanParameter("Rigid", "R", "Stiffener behavior, consider rigid stiffeners (only for Symmetric stiffeners)", GH_ParamAccess.item, false);
pManager[idx].Optional = true;
}
protected override void RegisterOutputParams(GH_OutputParamManager pManager)
{
pManager.AddParameter(new CompositeSectionStiffenersParameter());
}
protected override void SolveInstance(IGH_DataAccess DA)
{
// optional
double beamLength = 10000;
bool symmetric = false;
bool rigid = false;
// required
double spacing = 0.0;
double width = 0.0;
double thickness = 0.0;
DA.GetData(0, ref beamLength);
DA.GetData(4, ref symmetric);
DA.GetData(5, ref rigid);
if (!DA.GetData(1, ref spacing)) return;
if (!DA.GetData(2, ref width)) return;
if (!DA.GetData(3, ref thickness)) return;
if (spacing <= 0)
{
AddRuntimeMessage(GH_RuntimeMessageLevel.Error,
"Stiffener Spacing must be greater than zero.");
return;
}
if (width <= 0)
{
AddRuntimeMessage(GH_RuntimeMessageLevel.Error,
"Stiffener Width must be greater than zero.");
return;
}
if (thickness <= 0)
{
AddRuntimeMessage(GH_RuntimeMessageLevel.Error,
"Stiffener Thickness must be greater than zero.");
return;
}
var stiff = new CompositeSectionStiffeners(
beamLength,
spacing,
width,
thickness,
symmetric,
rigid
);
DA.SetData(0, new GH_CompositeSectionStiffeners(stiff));
}
protected override System.Drawing.Bitmap Icon => Properties.Resources.CompositeBeamStiffenersIcon;
public override Guid ComponentGuid => new("cecc241b-da99-4b61-8d3c-b5926fe79c40");
}
}