The Reactions Diagram is used throughout the modern platform to plot all the reactions for each support in a member. It uses diagram widget type "beamReactions".

Implementation

{
    "type": "sheetTemplateWidgets",
    "attributes": {
        "type": "diagram",
        "diagram": [
            {
                "type": "beamReactions"
            }
        ],
        "equation": [
            {
                "result": "{PARAMETERS}",
                "condition": "CONDITIONS"
            }
        ],
        "referenceId": "reactions_diagram"
    }
}

Plot Parameters

ParameterFormatDefaultDescription
Lnumber-The length of the member
dispRarray of strings[]Example: ["UltMax", "UltMin", "G", "Q"]. A list of the load types to plot in the reactions diagram. All load types, along with โ€œUltโ€, โ€œUltMaxโ€, and โ€œUltMinโ€ are available
dispTooltiparray of stringsdispRA list of the load types to display in the tooltip
allRarray of dicts[]Example: remote.plot.allR. All of the reactions data from the solver
lenConvertnumber1Conversion factor for length
lenUnitstring"m"Unit for lengths
bearingUnitstring"mm"Unit for length of bearing, if different
plUnitstring"kN"(defaults to "kN") Unit for point reactions
mlUnitstring"kNm"(defaults to "kNm") Unit for moment reactions
columnbooleanfalse(defaults to false) Plots the reactions on a vertical axis and adjusts other text locations appropriately
scaleArrowsbooleantrue(defaults to true) Whether or not to scale the reaction arrows according to the absolute value of the ultimate maximum reactions
upstreamReferenceIdstring-If you want to display a button to link the reaction to other sheets as an upstream sheet

Reaction Data Format

The allR parameter contains comprehensive reaction data from the solver:
allR: [
    {
        x: 0,                    // Support location
        supportType: "fixed",    // Type of support
        reactions: {
            "G": {               // Dead load reactions
                Ry: 45.2,        // Vertical reaction (kN)
                Rx: 0,           // Horizontal reaction (kN) 
                Mz: 0            // Moment reaction (kNm)
            },
            "Q": {               // Live load reactions
                Ry: 30.8,
                Rx: 0,
                Mz: 0
            },
            "UltMax": {          // Ultimate maximum
                Ry: 98.5,
                Rx: 0,
                Mz: 0
            },
            "UltMin": {          // Ultimate minimum
                Ry: 76.0,
                Rx: 0,
                Mz: 0
            }
        }
    },
    // ... more supports
]

Load Type Display

Use dispR to control which load combinations are displayed:
{
    dispR: ["G", "Q", "UltMax", "UltMin"],  // Show dead, live, and ultimate reactions
    dispTooltip: ["G", "Q", "W", "UltMax", "UltMin"]  // Include wind in tooltips
}

Example Implementation

{
    "type": "sheetTemplateWidgets",
    "attributes": {
        "type": "diagram",
        "diagram": [
            {
                "type": "beamReactions"
            }
        ],
        "equation": [
            {
                "result": "{
                    L: beam_length,
                    allR: remote.plot.allR,
                    dispR: [\"G\", \"Q\", \"UltMax\"],
                    dispTooltip: [\"G\", \"Q\", \"W\", \"UltMax\", \"UltMin\"],
                    lenUnit: \"m\",
                    plUnit: \"kN\",
                    mlUnit: \"kNm\",
                    lenConvert: 0.001,
                    scaleArrows: true
                }",
                "condition": "@default"
            }
        ],
        "referenceId": "beam_reactions",
        "label": "Support Reactions",
        "showInSuperSummary": true
    }
}

Column Mode

For vertical members, set column: true:
{
    "result": "{
        L: column_height,
        allR: column_reactions,
        dispR: [\"G\", \"Q\", \"UltMax\"],
        column: true,
        lenUnit: \"m\",
        plUnit: \"kN\"
    }"
}

Upstream Linking

The upstreamReferenceId parameter enables linking reactions to upstream sheets:
{
    "result": "{
        // ... other parameters
        upstreamReferenceId: \"linkMembersY\"
    }"
}
Tutorial: Upstream Linking VideoIf you want to display a button to link the reaction to other sheets as an upstream sheet, the value should be the type of reaction that the diagram represents such as linkMembersY.Clicking the button will open a modal with options of which sheets you can link to the reaction. Compatible sheets are those with templates where this upstreamReferenceId value is in the importReferenceIds array of the template.

Upstream Reference Setup

In the target templateโ€™s header, include the reference ID in importReferenceIds:
{
    "importReferenceIds": [
        "linkDL",
        "linkLine", 
        "linkMembers"
    ]
}

Arrow Scaling

Control reaction arrow scaling with scaleArrows:
{
    scaleArrows: true,   // Scale arrows based on ultimate maximum reactions
    scaleArrows: false   // Use uniform arrow sizes
}
Setting scaleArrows: true helps visualize the relative magnitude of reactions, making it easier to identify critical supports.

Best Practices

  1. Load Selection: Choose appropriate load types for display based on design requirements
  2. Units: Ensure consistent units for all reaction components
  3. Tooltips: Include more load types in tooltips than displayed for comprehensive information
  4. Linking: Use upstream linking for templates that feed loads to other calculations
  5. Scaling: Use arrow scaling to help visualize reaction magnitudes
Only one upstreamReferenceId can currently be passed per diagram. If you need multiple linking options, consider using separate diagrams or custom implementations.

Integration with Beam Solvers

Reactions diagrams work seamlessly with beam solver results:
{
    "type": "sheetTemplateWidgets",
    "attributes": {
        "type": "remote",
        "solver": "beam",
        "equation": [
            {
                "condition": "@default", 
                "result": "{
                    L: beam_length,
                    r: support_data,
                    PL: point_loads,
                    DL: distributed_loads,
                    loadCombinations: load_combinations
                }"
            }
        ],
        "referenceId": "beam_analysis"
    }
}
The solver automatically generates the allR data structure with reactions for all specified load combinations.