Elements
Files
- BeamComponentBase.cs
This file defines `BeamComponentBase`, an abstract base class for Grasshopper components that generate structural beam elements within the FeMM framework. It inherits from `GH_Component` to integrate with Rhino’s visual scripting environment, accepting inputs such as a generating curve, material properties, groups, rotation angle, and offset. The core logic resides in the `SolveInstance` method, which processes these inputs to instantiate and configure a `GH_Beam` object before outputting it. Key architectural features include abstract methods like `RegisterAdditionalInputs` and `AddAlignmentProperties`, allowing derived classes to extend functionality while maintaining a consistent input/output structure. This design promotes code reuse and modularity across different beam-related components in the plugin.
- BeamComponentV1_OBSOLETE.cs
This file defines an obsolete Grasshopper component named `BeamComponentV1_OBSOLETE` within the FeMM plugin framework. It inherits from `BeamComponentBase`, indicating it is part of a larger suite of structural analysis tools for Rhino/Grasshopper. The class is marked as hidden in the interface via its `Exposure` property and carries a unique GUID to ensure compatibility with older definitions. Notably, it implements empty methods for registering inputs and alignment properties, suggesting it serves primarily as a placeholder or legacy reference rather than an active computational node. This structure allows the system to recognize deprecated components without executing new logic.
- BeamComponentV2.cs
`BeamComponentV2.cs` is a Grasshopper component class that extends `BeamComponentBase` to define specific behavior for tapered beam elements. It primarily handles the registration and processing of two additional integer inputs: "AlignmentX" and "AlignmentY," which control the cross-sectional alignment of tapered beams. The code dynamically populates these input parameters with named values derived from the `BeamTaperAttributeModel.AlignmentCodes` enumeration, allowing users to select specific alignment options like Center or Top. During execution, it retrieves these user-defined alignment values and applies them to a `BeamNonPrismaticPropertyModel` if valid data is provided. This ensures that non-prismatic (tapered) beam properties are correctly configured within the FeMM modeling environment.
- BeamOverrideComponent.cs
This file defines `BeamOverrideComponent`, a Grasshopper plugin component for Rhino that modifies beam creation parameters within the FeMM framework. It accepts an input beam and optional overrides for properties, groups, rotation angle, or positional offset to generate a modified output beam. The key components include specific input handlers for these four optional parameters and a core logic method (`SolveInstance`) that applies the changes to a new beam instance. If no override parameters are provided, it issues a warning while passing through the original beam unchanged.
- LinkComponent.cs
This file defines `LinkComponent`, a Grasshopper plugin component for the FeMM structural analysis framework that generates 1D link elements. It operates by taking a geometric line, an associated property definition, and optional group assignments as inputs to construct a specific `GH_Link` object. The key components include input parameter registration for curves and generic data, a core logic method (`SolveInstance`) that instantiates the link using start/end points and properties, and standard Grasshopper metadata like icons and unique GUIDs. Ultimately, it outputs the generated link object for use in downstream structural modeling workflows.
- NodeComponent.cs
This file defines a Grasshopper component named `NodeComponent` within the FeMM framework, which is used to create structural analysis nodes. It functions by accepting a single 3D point coordinate as input and wrapping it into a custom `GH_Node` data type for output. The key components include standard Grasshopper kernel methods like `RegisterInputParams`, `RegisterOutputParams`, and `SolveInstance` that handle parameter definition and execution logic. Additionally, it implements metadata properties such as a unique GUID, exposure level, and an associated icon to ensure proper integration within the Rhino/Grasshopper interface.
- NodeOverrideComponent.cs
This file defines `NodeOverrideComponent`, a Grasshopper plugin component designed to modify existing node properties within the FeMM structural analysis framework. It accepts an input node and optional parameters for groups, coordinate systems, or positional offsets, allowing users to override specific attributes without recreating the element entirely. The core logic resides in the `SolveInstance` method, which validates inputs, applies changes to a new `GH_Node` instance, and handles runtime warnings if no overrides are provided. Key components include custom input/output registration methods that define the data flow and a GUID ensuring unique identification across sessions. Ultimately, it outputs the modified node, enabling dynamic updates to structural model definitions during the design process.
- PlateComponent.cs
`PlateComponent.cs` is a Grasshopper definition component that generates a structural plate element from a mesh input. It processes a source mesh face and assigns specific material properties, group memberships, local axis angles, and thickness offsets to create the final object. Key components include input parameters for the generating mesh, property definitions, optional groups, and geometric adjustments like angle and offset. The logic validates that the mesh has between three and four vertices before extracting edge points to define the plate geometry. Finally, it outputs a `GH_Plate` object if the property input is valid, otherwise it triggers an error message.
- PlateOverrideComponent.cs
`PlateOverrideComponent.cs` is a Grasshopper plugin component designed to modify the properties of structural plate elements within the FeMM framework. It accepts an input `GH_Plate` and optionally allows users to assign new material properties, group assignments, rotation angles, or translation offsets. The core logic resides in the `SolveInstance` method, which creates a modified copy of the plate by updating its internal `Value` object based on provided inputs. Key components include input parameters for property models, groups, and geometric transformations, as well as validation logic that warns if no modifications are specified. The component outputs the resulting modified plate, enabling dynamic parametric adjustments in computational design workflows.