Parameters
Files
- BeamParam.cs
`BeamParam.cs` is a Grasshopper component class that defines a persistent parameter for handling `GH_Beam` data types within the FeMM plugin ecosystem. It extends `GH_PersistentParam<GH_Beam>` to facilitate the selection and transfer of beam objects between Rhino geometry and Grasshopper definitions. The file implements two primary interaction methods: `Prompt_Singular` for selecting a single beam and `Prompt_Plural` for selecting multiple beams, both of which extract underlying `BeamModel` data from Rhino objects. These prompts utilize Rhino’s input commands to interactively gather user selections and convert them into the appropriate Grasshopper data structure. Additionally, the class provides a custom icon and a unique GUID to ensure proper identification and visual representation within the Grasshopper canvas.
- BeamSectionParam.cs
`BeamSectionParam.cs` defines a custom Grasshopper parameter class that manages beam cross-section data within the FeMM structural analysis framework. It facilitates user interaction by providing context menus to select sections from a database, toggle mirror orientations, and adjust unit systems dynamically. Key components include methods for prompting singular or plural section inputs and handling unit conversions between different measurement standards. The class integrates with `GH_BeamSection` objects and leverages helper utilities like `NamingConventionHelper` to resolve section names into model data.
- BeamSectionParamV2.cs
`BeamSectionParamV2.cs` is a Grasshopper component parameter class that manages beam section data for the FeMM structural analysis plugin. It inherits from `GH_PersistentParam<GH_BeamSection>` to store and persist specific section properties, such as unit systems and mirror configurations, within the definition file. The component facilitates user interaction through custom context menus, allowing users to select profiles from a database, toggle mirroring settings, adjust gap values, and convert units dynamically. Key methods like `Prompt_Singular` handle profile selection dialogs, while `PreferredCast` enables string-to-section conversion via naming conventions. Additionally, it overrides serialization logic (`Write`/`Read`) to ensure custom state variables like `_units` are correctly saved and restored during document loading.
- CompositeSectionStiffenersParameter.cs
This file defines a custom Grasshopper parameter class named `CompositeSectionStiffenersParameter`, which inherits from `GH_Param` to handle data of type `GH_CompositeSectionStiffeners`. It serves as a specialized data container for defining stiffeners within composite sections, specifically tailored for the "MeCheck2" analysis workflow. The class is configured with specific metadata, including a unique GUID and exposure settings that mark it as hidden in the user interface. Key components include its constructor, which sets the display name and category hierarchy, and overrides for icon and exposure properties to control visibility and appearance.
- CoordinateSystemParam.cs
This file defines a custom Grasshopper parameter class named `CoordinateSystemParam` that manages coordinate system definitions within the FeMM plugin. It inherits from `GH_PersistentParam<GH_FunctionDefinition>` to store and persistently save `GH_FunctionDefinition` objects, specifically representing local or global coordinate systems. The component provides a context menu with "Local" and "Global" toggle options that update the persistent data and trigger a solution expiration when selected. Key components include state tracking for the current coordinate mode via boolean flags and integration with standard Grasshopper UI helpers for wire display and data management. This class serves as a specialized data container to ensure consistent coordinate system handling across the simulation environment.
- FreedomCaseCombinationsParam.cs
This file defines a custom Grasshopper parameter class, `FreedomCaseCombinationsParam`, designed to manage structural load case combinations within the FeMM plugin. It extends `GH_PersistentParam` to store and persistently hold lists of `GH_Combination` objects representing different engineering load scenarios. The core logic resides in the `UpdateLoadCases` method, which synchronizes existing combinations with new input data by adding missing cases and removing obsolete ones while maintaining persistent state. Additionally, it includes a companion attributes class that handles the visual rendering of the component on the canvas and opens a dialog form for manual editing via double-click interaction.
- GroupParam.cs
This file defines `GroupParam`, a custom Grasshopper parameter class that manages collections of `GH_Group` objects within the FeMM plugin ecosystem. It extends `GH_PersistentParam<GH_Group>` to provide specialized handling for group data, including a custom separator string used to parse and reconstruct groups from input strings. The implementation overrides `PreferredCast` to convert incoming string data into nested group structures based on a user-defined delimiter. Additionally, it integrates with the Grasshopper UI by appending specific context menu items, such as options to set the separator or apply standard parameter transformations like flattening and grafting. This component serves as a bridge between textual inputs and complex group hierarchies in the visual scripting environment.
- LoadCombinationsParam.cs
This file defines a custom Grasshopper parameter class, `LoadCombinationsParam`, which manages structural load combination data within the FeMM framework. It inherits from `GH_PersistentParam` to store and display lists of `GH_Combination` objects, specifically handling updates to associated load cases via the `UpdateLoadCases` method. The class includes logic to synchronize persistent data with volatile inputs, ensuring that invalid references are removed and new cases are added automatically. A nested `LoadCombinationsAttributes` class handles the visual rendering, drawing a capsule UI that lists individual combinations while managing dynamic sizing and error palette coloring. Key components include the parametric data structure, synchronization logic for load case integrity, and custom canvas rendering for user interface feedback.
- MaterialParam.cs
`MaterialParam.cs` defines a Grasshopper parameter component that manages material data for the FeMM structural analysis framework. Its primary function is to prompt users to select specific materials (such as steel, concrete, or aluminium) from an integrated database via a custom dialog interface. The class handles the conversion of selected database items into standardized `GH_Material` objects, mapping distinct physical properties like elastic modulus and yield strength based on the material type. It extends `GH_PersistentParam` to retain data across sessions and includes logic for casting string inputs to material objects. Key components include the `Prompt_Singular` method for user selection, the `GetMaterial` helper for property extraction, and menu customization methods for enhanced usability.
- NodeParam.cs
`NodeParam.cs` is a Grasshopper parameter component that manages `GH_Node` data types within the FeMM FEM plugin ecosystem. It inherits from `GH_PersistentParam`, enabling it to store and retrieve node references persistently across session updates. The class implements core interaction methods like `Prompt_Singular` and `Prompt_Plural` to allow users to select single or multiple nodes directly from the active Rhino document via standard input prompts. It bridges Rhino geometry by casting selected `RhinoObject`s to `NodeObject` instances, extracting underlying `NodeModel` data to wrap in `GH_Node` containers. Additionally, it provides custom identification through a specific GUID and displays a dedicated icon for visual recognition in the canvas.
- PlateParam.cs
`PlateParam.cs` is a Grasshopper parameter component that manages the input of structural plate data within the FeMM (Finite Element Method for Rhino) plugin. It inherits from `GH_PersistentParam<GH_Plate>` to handle single or multiple selections of `GH_Plate` objects, bridging Rhino geometry with Grasshopper’s data tree structure. The class implements `Prompt_Singular` and `Prompt_Plural` methods to interactively select `PlateObject` entities from the active Rhino document, extracting their underlying `PlateModel` data via custom user data handlers. Key components include integration with Rhino’s `GetObject` interface for selection logic, specific category constants for UI organization, and a unique GUID for component identification. Ultimately, it serves as a specialized data conduit to feed validated plate definitions into downstream FEM analysis workflows.
- StressAnalysisResultMeCheckParam.cs
This file defines a custom Grasshopper parameter class named `StressAnalysisResultMeCheckParam` for handling stress analysis results within the FeMM framework. It inherits from `GH_PersistentParam`, enabling it to store and manage data of type `GH_StressAnalysisResultMeCheck`. The class configures metadata such as a specific name, nickname ("MS"), description, and categorization under "Checks" and "MeCheck2". Notably, it is marked as hidden (`GH_Exposure.hidden`) and returns `cancel` for all prompt methods, indicating it is intended for internal programmatic use rather than direct user interaction in the canvas.
- VersionParam.cs
This file defines a custom Grasshopper parameter component named `VersionParam` that acts as a hidden version controller for the FeMM plugin. It inherits from `GH_PersistentParam<GH_String>` to automatically track and store the current software version during serialization processes. The key logic resides in the `Write` and `Read` methods, which save the active version upon saving definitions and validate it against the loaded data upon reading, triggering runtime errors if mismatches occur. A nested `VersionParamAttributes` class handles the visual rendering of this hidden parameter, displaying a capsule shape with text indicating the saved version or highlighting errors via color-coded palettes. This ensures that Grasshopper files remain compatible with the specific version of FeMM that created them.