The Free-Body Diagram is used throughout the modern platform to plot a free-body diagram with all factored loads and reactions for a specific load combination. It uses diagram widget type "beamFreeBody".

Implementation

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

Plot Parameters

ParameterFormatExampleDescription
xDataarray of numbersremote.plot.xX coordinates along the beam
PLarray of dictsremote.plot.fbPLPoint load locations and magnitudes
DLarray of numbersremote.plot.fbDLDistributed load values at each X-coordinate
MLarray of dictsremote.plot.fbMLMoment load locations and magnitudes
ALarray of dictsremote.plot.fbALAxial load locations and magnitudes
ADLarray of numbersremote.plot.fbADLAxial distributed load values at each X-coordinate
Rarray of dictsremote.plot.fbRReaction magnitudes and locations
lenConvertnumber0.001(defaults to 0.001) Conversion factor for lengths
lenUnitstring"m"(defaults to "m") Unit for lengths
plUnitstring"kN"(defaults to "kN") Unit for point loads
mlUnitstring"kNm"(defaults to "kNm") Unit for moment loads
dlUnitstring"kN/m"(defaults to "kN/m") Unit for distributed loads
columnbooleanfalse(defaults to false) Whether to plot free body diagram vertically, adjusting text locations appropriately
allFactornumber1(defaults to 1) Factor by which to adjust all load and reaction values. Useful to display FBD including k1 factors in timber
wallnumber0(defaults to 0) Height of the wall to display

Load Data Formats

Point Loads (PL)

The point loads array contains dictionaries with load information:
PL: [
    {
        x: 2.5,        // Location along beam
        P: 150,        // Load magnitude
        label: "P1"    // Optional label
    },
    // ... more point loads
]

Distributed Loads (DL)

Distributed loads are provided as an array of values corresponding to the x-coordinates:
xData: [0, 1, 2, 3, 4, 5],     // X coordinates
DL: [0, 10, 10, 15, 15, 0]     // Load values at each x coordinate

Moment Loads (ML)

Moment loads follow a similar format to point loads:
ML: [
    {
        x: 1.8,        // Location along beam
        M: 50,         // Moment magnitude
        label: "M1"    // Optional label
    }
]

Reactions (R)

Reactions include support information and magnitudes:
R: [
    {
        x: 0,          // Support location
        Ry: 125,       // Vertical reaction
        Rx: 0,         // Horizontal reaction (if any)
        Mz: 0,         // Moment reaction (if any)
        type: "pin"    // Support type
    }
]

Example Implementation

{
    "type": "sheetTemplateWidgets",
    "attributes": {
        "type": "diagram",
        "diagram": [
            {
                "type": "beamFreeBody"
            }
        ],
        "equation": [
            {
                "result": "{
                    xData: remote.plot.x,
                    PL: remote.plot.fbPL,
                    DL: remote.plot.fbDL,
                    ML: remote.plot.fbML,
                    R: remote.plot.fbR,
                    lenUnit: \"m\",
                    plUnit: \"kN\",
                    dlUnit: \"kN/m\",
                    mlUnit: \"kNm\"
                }",
                "condition": "@default"
            }
        ],
        "referenceId": "load_combination_fbd",
        "label": "Free Body Diagram - Ultimate Limit State",
        "showInSuperSummary": true
    }
}

Special Features

Column Mode

Set column: true to display the free-body diagram vertically, which is useful for column analysis:
{
    column: true,
    wall: 3000,  // Height of wall/column in mm
    // ... other parameters
}

Load Factoring

Use allFactor to apply additional factors to all loads and reactions:
{
    allFactor: 1.2,  // Apply 20% additional factor
    // ... other parameters
}
This is particularly useful in timber design where k1 factors need to be displayed in the free-body diagram.

Integration with Beam Solvers

Free-body diagrams are typically used 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,
                    // ... other beam parameters
                }"
            }
        ],
        "referenceId": "beam_analysis"
    }
}

Best Practices

  1. Units: Ensure consistent units throughout all load and dimension parameters
  2. Load Combinations: Create separate diagrams for different load combinations
  3. Labels: Use clear, descriptive labels for loads and reactions
  4. Visibility: Use visibleIf conditions to show diagrams only when relevant
  5. Solver Integration: Always source data from beam solvers for accuracy
Free-body diagrams are excellent for verification and presentation. They help engineers quickly verify that loads and reactions are properly balanced and correctly applied.
The free-body diagram shows factored loads for the specified load combination. Ensure that the load factors applied in the beam solver match what you want to display in the diagram.