using FeMM.Common.Helpers;
using FeMM.Common.Models;
using FeMM.Grasshopper.DataTypes.FeMM;
using FeMM.Grasshopper.Helpers;
using Grasshopper.Kernel;
using System;
namespace FeMM.Grasshopper.Components.Sections
{
public class BeamProperty2RevitGeometricComponent : GH_Component
{
/// <summary>
/// Initializes a new instance of the BeamPropertyComponent class.
/// </summary>
public BeamProperty2RevitGeometricComponent()
: base("Beam Property 2 Revit Geometry v2.0", "SG", "Section geometries", CategoryNameConstants.CATEGORY_FEMM, CategoryNameConstants.SUBCATEGORY_SECTIONS)
{
}
/// <summary>
/// Registers all the input parameters for this component.
/// </summary>
protected override void RegisterInputParams(GH_InputParamManager pManager)
{
pManager.AddGenericParameter("Beam Property", "BP", "Beam Property", GH_ParamAccess.item);
}
/// <summary>
/// Registers all the output parameters for this component.
/// </summary>
protected override void RegisterOutputParams(GH_OutputParamManager pManager)
{
pManager.AddTextParameter("Name", "N", "Section section name", GH_ParamAccess.item);
pManager.AddTextParameter("Maffeis Name", "MN", "Maffeis section name", GH_ParamAccess.item);
pManager.AddTextParameter("Material Family", "MF", "Material type", GH_ParamAccess.item);
pManager.AddTextParameter("Profile Family", "PF", "Section type", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_H", "ME_H", "Height Beam (Main)", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_B", "ME_B", "Width Beam (Main/Bottom)", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Bb", "ME_Bb", "Width Bottom Base", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Bt", "ME_Bt", "Width Top Base", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Tfb", "ME_Tfb", "Thickness flange bottom", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Tft", "ME_Tft", "Thickness flange Top", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Tf", "ME_Tf", "Thickness flange", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Tw", "ME_Tw", "Thickness web", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Twb", "ME_Twb", "Secondary thickness web", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_R1", "ME_R1", "Radius 1", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_R2", "ME_R2", "Radius 2", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Iw", "ME_Iw", "Flange Distance", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Hsa", "ME_Hsa", "Secondary Height support (sym.supports)", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Hsb", "ME_Hsb", "Secondary Height support (not sym. supports)", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Bsa", "ME_Bsa", "Secondary base support (sym.supports)", GH_ParamAccess.item);
pManager.AddNumberParameter("ME_Bsb", "ME_Bsb", "Secondary base support (not sym.supports)", GH_ParamAccess.item);
}
/// <summary>
/// This is the method that actually does the work.
/// </summary>
/// <param name="DA">The DA object is used to retrieve from inputs and store in outputs.</param>
protected override void SolveInstance(IGH_DataAccess DA)
{
GH_FunctionDefinition gH_BeamProperty = null;
if (!DA.GetData(0, ref gH_BeamProperty))
return;
var revitTable = new NamingConventionHelper.RevitTable();
if (gH_BeamProperty.Value is BeamPropertyModel beamProp)
{
revitTable = NamingConventionHelper.GetRevitTable(beamProp);
}
int item = 0;
DA.SetData(item++, revitTable.Name);
DA.SetData(item++, revitTable.MaffeisName);
DA.SetData(item++, revitTable.MaterialType);
DA.SetData(item++, revitTable.FamilyType);
DA.SetData(item++, revitTable.ME_H);
DA.SetData(item++, revitTable.ME_B);
DA.SetData(item++, revitTable.ME_Bb);
DA.SetData(item++, revitTable.ME_Bt);
DA.SetData(item++, revitTable.ME_Tfb);
DA.SetData(item++, revitTable.ME_Tft);
DA.SetData(item++, revitTable.ME_Tf);
DA.SetData(item++, revitTable.ME_Tw);
DA.SetData(item++, revitTable.ME_Twb);
DA.SetData(item++, revitTable.ME_R1);
DA.SetData(item++, revitTable.ME_R2);
DA.SetData(item++, revitTable.ME_Iw);
DA.SetData(item++, revitTable.ME_Hsa);
DA.SetData(item++, revitTable.ME_Hsb);
DA.SetData(item++, revitTable.ME_Bsa);
DA.SetData(item++, revitTable.ME_Bsb);
}
/// <summary>
/// Provides an Icon for the component.
/// </summary>
protected override System.Drawing.Bitmap Icon => Properties.Resources.SectionRevit2GeometricIcon;
public override GH_Exposure Exposure => GH_Exposure.tertiary;
/// <summary>
/// Gets the unique ID for this component. Do not change this ID after release.
/// </summary>
public override Guid ComponentGuid => new("22a94621-76c8-4e04-a6aa-f454e9aec81e");
}
}