Calculeaf Features Blog Guide Pricing Open app

2D structural frames

Use a 2D Frame when the sheet needs member forces it cannot get from a closed-form expression. A portal, a braced bay, a beam with an awkward load pattern.

You sketch the nodes, members, supports, and loads, then press Solve. Calculeaf runs a linear-elastic plane-frame analysis with three degrees of freedom per node (ux, uy, rz).

The answers are not trapped in a picture. Reactions, member forces, deflections, and stresses become named worksheet variables. The rest of the calculation can use them like any other quantity.

Those names enter scope at the frame's own place in evaluation order. Math that uses them must sit below the frame. The variables the frame reads — load magnitudes, section dimensions, Young's modulus — must be defined above it.

A 2D frame region showing a simply-supported beam with sketch tools, the deflected shape, reactions, and the Details side panel.
A solved frame. Tools along the top, sketch in the middle, Details on the right. Solve writes names such as ss_RyA into the sheet.

Place the region

  1. On the Insert tab, choose 2D Frame. The ribbon describes it as the region where you sketch members, supports and loads, then solve.
  2. Click the page. You get an empty frame region: toolbar on top, blank sketch, and the Details panel open on its Selection tab.
  3. Set Unit and Prefix now if you already know them. Both are easier to fix before there is anything to break.

The status bar underneath the sketch reads Sketch nodes and members, add supports and loads, then Solve. It keeps you posted from then on: the running node and member count, the pointer coordinates while the Node tool is active, a Solved line after a successful run, and the solver error when the model will not stand up.

Unit, Prefix, and Snap

ControlWhat it sets
Unit Length unit for sketch coordinates and every distance field: m, mm, cm, ft, or in. Node x and y, member lengths, and load distances are all read in this unit. Changing it later does not convert the coordinates you have already typed. The same numbers are re-read in the new unit, so the model changes size.
Prefix Short identifier prepended to every result name. Up to 16 characters, and it must be a valid variable name. The default is fr. Give each frame on a sheet its own prefix so their answers cannot collide. The demo beam below uses ss.
Snap When ticked, node placement snaps to the spacing in the adjacent number field, shown in the current Unit. Untick it to place nodes freely.

The sketch tools

The first toolbar row holds the six things you do to a frame. Whichever tool you pick stays active until you choose another. You can place a run of nodes without going back to the toolbar.

ToolWhat it does
Select Moves nodes and members. Shift-click a member, or ⌘-click / Ctrl-click , to add members to the selection. Alt-drag, right-drag, or middle-drag pans the view. With Callouts on, clicking a diagram pins a value.
Node Clicking empty space places a joint. Clicking an existing member splits it at that station. The original member becomes two, sharing the new node.
Member Click two nodes to connect them. A rubber band follows the pointer after the first click.
Load Click a node for a joint load (Fx, Fy, M), or a member for a member load, which can be a point load or a UDL.
Delete Click a support symbol to remove that support and leave the node in place. Otherwise it deletes the current selection, whether that is a node, a member, or a load.
Solve Analyses the frame. The region also re-solves on its own when you change a property that affects the model.

Build the geometry

  1. Choose Unit — m for a building frame, mm for a detail.
  2. Set Prefix, for example ss or portal.
  3. With Node, place the joints. Select each one and give it a Support and a short Label such as A, B, or C. Labels become the suffix on the names Solve writes, so pick them with the formulas below in mind.
  4. With Member, connect the nodes. Select each member, set its End i and End j releases, and assign a Section.
  5. On Details → Sections, add a section, set E and the dimensions, then use Apply to selected or Apply to all.
  6. With Load, click the loaded nodes and members and type the magnitudes.
  7. Press Solve, tick the overlays you want to see, then press Fit so the whole model sits in the canvas.
  8. In math below the frame, type the prefix and let autocomplete offer the names: ss_RyA =, ss_MmAB =.

Supports

Select a node and Details → Selection gives you its x, y, Support, and Label. The support you choose fixes which of the three degrees of freedom are held.

SupportRestrainedFree
Freenoneux, uy, rz
Pinux, uyrz (rotation)
Fixedux, uy, rz
Rolleruy (vertical)ux, rz — a horizontal roller
V-rollerux (horizontal)uy, rz — a vertical-wall roller

After a solve the same panel adds Deflections (x, y, Total, and rz) and Reactions. Only the restrained directions get a reaction row, so a pin shows Rx and Ry but no M. Every value in these blocks is a button. Click it to copy the matching variable name to the clipboard, ready to paste into a math region.

The Details Selection panel for node A, with Support set to Pin and reaction results listed after Solve.
Selection for a node. Support and Label drive both the sketch symbol and the name suffix, so node A gives ss_RyA.

Members and their releases

Select a member and the Selection tab offers:

  • Label is the suffix on that member's names, so AB gives ss_MmAB.
  • L is read-only. It comes from the two node positions and the current Unit.
  • End i and End j are each Fixed, meaning moment-resisting, or Pin, which releases the moment at that end. Pin both ends for a truss bar. Leave both Fixed for a beam-column.
  • Section picks from the Sections catalogue. A preview shows A, I, and c, the extreme-fibre distance, as soon as the dimensions are valid.
  • Add load attaches a member load without switching to the Load tool.

Shift-click several members to assign one section to all of them in a single move. Once solved, the panel lists peak Forces (Moment, Shear, Axial), Stresses where a section is assigned, and Deflections — each with the station along the member at which the peak occurs. Click that station and the sketch jumps to it with a callout pinned.

A member with no section still solves, using the frame defaults for E, A, and I. What you lose is stress. The stress overlay has nothing to draw on that member, and no stress names are written for it.

Sections

Details → Sections is a catalogue local to this frame. Choose a type, press Add, and edit the section that appears:

  • Name is what you see in the list and in the member Section dropdown.
  • Colour is the square to the left of each section in the list. Click it to open the same picker as text colour. While the Sections tab is open, members assigned that section draw in that colour so you can see which beams share a catalogue entry. Leave the tab and they return to the usual ink.
  • Type is one of I-beam, Square hollow (SHS), Rectangular hollow (RHS), Circular hollow (CHS), Angle, Circular bar, Square bar, Rectangle bar, or Custom.
  • Dims sets the unit for the dimension fields — mm, cm, m, in, or ft — independently of the sketch Unit.
  • E is Young's modulus, entered as a number or a sheet variable, with a unit of Pa, kPa, MPa, GPa, psi, or ksi.
  • Axis appears on I-beam, RHS, and Angle and decides which second moment of area is used in bending. I-beam, RHS, and Rectangle bar offer Strong and Weak. Angle offers Strong, X-X, and Y-Y.
  • The dimension fields take numbers or sheet variables, and a diagram labels each one — h, b, tw, tf on an I-beam; B and t on an SHS; and so on.
  • The preview line reports A, I, and c once the dimensions resolve.
  • Apply to selected and Apply to all assign the section to members without visiting each one.
  • Delete section removes it from the catalogue. Members that used it lose the assignment and fall back to the frame defaults.
The Details Sections tab with an I-beam editor, its dimension diagram, and the A, I, and c preview.
Sections. Add a type, set E and the dimensions as numbers or sheet variables, then Apply to selected or Apply to all.
TypeDimensions
I-beamh overall depth, b flange width, tw web, tf flange
Square hollowB outer width, t wall
Rectangular hollowH outer depth, B outer width, t wall
Circular hollowD outer diameter, t wall
Angled vertical leg, b horizontal leg, t thickness
Circular bard diameter
Square bara side
Rectangle barb width, h depth
CustomA area, I second moment, y to furthest fibre

Loads

Every magnitude field takes either a number or the name of a sheet variable defined above the frame. That is how you drive a frame from the inputs at the top of the calculation. The sketch Y axis points up, so a downward force or UDL is a negative number.

Nodal load

Click a node with the Load tool. The Selection panel is titled Nodal load.

  • Fx and Fy are global components.
  • M is an in-plane moment. Its unit follows the force unit: N gives N·m, kN gives kN·m, MN gives MN·m, lbf gives lbf·ft, and kip gives kip·ft.
  • Unit is one of N, kN, MN, lbf, or kip.

Member load — Point

Click a member instead and Type lets you choose Point or UDL. A point load has:

  • Fx and Fy, again global components.
  • From, which end the distance is measured from — end i or end j.
  • Dist, the distance from that end, in the frame Unit or as a sheet variable.
  • Unit, the same force units as a nodal load.

Member load — UDL

  • Dir is either Global Y, the sketch vertical, or Local y, perpendicular to the member.
  • From, Start, and End define the loaded segment, measured from the chosen end. Leave Start at 0 and End at the member length for a full-span UDL.
  • w1 and w2 are the intensities at Start and End. Equal values give a uniform load. Different values give a trapezoid or a triangle.
  • Unit is one of N/m, kN/m, N/mm, lbf/ft, or kip/ft.

Solve, and what to do when it refuses

Solve assembles the stiffness matrix, solves it, and pushes the answers into the worksheet, which then re-evaluates. A model that cannot stand up produces a message in the status bar and no answers at all: Add at least two nodes, Add at least one member, Add at least one support so the frame is stable, or The stiffness matrix is singular — the frame is a mechanism or poorly supported. That last one usually means a missing release, a support that restrains too little, or a member floating unconnected.

Read the answer off the sketch

The second toolbar row controls what is drawn on top of the model after a successful solve.

  • Deflection draws the displaced shape as a dashed line, and is on by default.
  • Moment, Shear, and Axial draw force diagrams along each member. Axial is tension-positive: blue is tension (T), red is compression (C). Details and callouts tag the peak with T or C.
  • Stress draws the combined stress diagram. Members without a section have nothing to draw.
  • Reactions shows the support arrows and their values, and is on by default.
  • Callouts is off by default. Tick it and hovering a moment, shear, axial, stress, or deflection diagram gives a tooltip that tracks the station. Click to pin it, and click a pinned callout to remove that one. Pins are stored with the region.
  • Scale is a 20–100% slider for diagram amplitude, covering moment, shear, axial, stress, and deflection.
  • Fit frames the whole model in the canvas. Use it after sketching, or when Details is covering a support.
  • The zoom readout shows the current camera zoom. Scroll the sketch to zoom. Alt-drag, right-drag, or middle-drag to pan.

Two controls are not on that row. Grid lives on the status bar. Hide on the sketch collapses the toolbar and becomes Tools to bring it back. Details re-opens the side panel after the panel's own Hide has collapsed it.

What Solve writes into scope

Once the frame solves, its names appear in autocomplete for any math below it. The scheme is {Prefix}_{quantity}{Label} with exactly one underscore. The label is glued straight onto the quantity, so a node labelled B gives ss_uyB and never ss_uy_B. Whole-model peaks use a fixed word where the label would go. An unlabelled node or member falls back to its internal id. Anything in a label that is not a letter, digit, or underscore becomes an underscore, and the name is trimmed to 20 characters.

Whole-model peaks

NameMeaningUnit
{p}_dmaxPeak resultant deflectionm
{p}_MmaxPeak bending momentN·m
{p}_VmaxPeak shearN
{p}_NmaxPeak |axial| forceN
{p}_axmaxPeak axial stressPa
{p}_bmaxPeak bending stressPa
{p}_tmaxPeak shear stressPa
{p}_smaxPeak combined stressPa

Per node, shown for label A

NameMeaning
{p}_uxA, {p}_uyA, {p}_rzADisplacement and rotation
{p}_RxA, {p}_RyA, {p}_RmAReactions, written only if the node is restrained

Per member, shown for label AB

NameMeaning
{p}_NAB, {p}_VABAxial (tension positive) and shear at end i
{p}_MiAB, {p}_MjABMoments at ends i and j
{p}_NmAB, {p}_VmAB, {p}_MmABPeak |axial|, shear, and moment on the member
{p}_dxAB, {p}_dyAB, {p}_dABPeak |ux|, peak |uy|, and peak resultant deflection
{p}_axAB, {p}_bAB, {p}_tAB, {p}_sABPeak axial, bending, shear, and combined stress

Take the demo beam: Prefix ss, a pin at A, a roller at B, a 6 m span, and a UDL of −8 kN/m on member AB. Four math regions below the frame give you the whole check.

ss_RyA =
ss_RyB =
ss_MmAB =
ss_dmax =

Each reaction comes back as 24 kN, half the 48 kN total. ss_MmAB comes back as 36 kN·m, which is the wL²/8 you would expect for a simply supported span. Display units follow the sheet unit system. SI moves to kN and mm when values get large or small. USCS uses lbf, kip, and inches. You can pin a display unit on the answer chip exactly as on any math region.

The frame as part of the sheet

A frame is a region, and it takes part in Evaluate All at its own order and position. Loads and section dimensions that reference sheet variables read them from scope above the frame. The answers are available to everything below it, including as the output of a plot sweep or a sweep table.

Copy and paste the region like any other block. The Prefix, the sections, and the pinned callouts travel with it, so remember to change the Prefix on the copy. Deleting a frame removes both the sketch and its names from the next evaluate.

Next, put the math that reads ss_* names below the frame on the page.