Application reference: controls, fields and workflows. Worked examples are in Tutorial; analysis theory is in White paper.

1. Application reference

Stack is an offline desktop application for creating, editing and reporting dimensional tolerance analyses. This reference explains its commands and settings. Projects are stored as .stack files; analysis does not require an internet connection.

2. Your first result

  1. Materials — define each material and its thermal expansion.
  2. Parts — add each part and assign its material. Optionally set a general (UOS — unless-otherwise-specified) ± tolerance per part.
  3. Features — add the dimensions and geometric tolerances that live on those parts.
  4. Requirements — create the assembly dimension you want to verify and set its MIN/MAX limits.
  5. Calculations — draw the stack-up chain on the canvas, assign a feature to every vector, and read the live results.
  6. Results — summary, interactive charts and process-capability statistics; export everything to PDF or Excel.
Open a sample: Help → Getting started → Open the sample project. For guided practice, follow the Tutorial.

3. Using this reference

This manual describes application controls, inputs and outputs. Use the Tutorial to follow a worked project and the White paper for analysis theory and derivations.

Follow the workspace sections below to find a command. The reference covers project files, feature entry, chain editing, analysis settings and reports.

4. The workspace

The dark title bar hosts the section tabs — Project, Parts, Features, Requirements, Calculations, Results, Materials, Settings, Help — plus the window controls. Below it, a contextual ribbon offers the actions for the active tab (New / Duplicate / Delete, CSV import/export, exports). Undo and Redo always sit first on the ribbon.

The status bar at the bottom shows one info line: contextual guidance for the active view, replaced by the result of your last action. The right side shows the project name and active section.

5. Projects & files

A project is a single .stack file (JSON) holding materials, parts, features, requirements, drawn chains and image references. Double-clicking a .stack file in Explorer opens it in the application. Saves are atomic — a failed write can never truncate your file.

New, Open…, Save (Ctrl+S) and Save As… (Ctrl+Shift+S) live in the File panel of the Project tab. Save As… writes the project under a new name or location and continues working in the new file — the previous file is left as it was, and its autosave sibling is cleaned up so it can't resurface later as "newer" work.

The Project tab also selects the tolerancing standard the drawings follow — ISO GPS (ISO 1101/8015/14405), ASME Y14.5-2018 or ASME Y14.5-2009. The choice gates which GD&T symbols and frame modifiers the pickers offer (Y14.5-2018 withdrew concentricity and symmetry) and picks the unequal-zone notation (ASME Ⓤ vs ISO UZ). Existing features and annotations are never rewritten — only availability for new ones is filtered.

Autosave & recovery

  • Autosave (interval set in Settings) writes a sibling file <name>.autosave.stack — it never overwrites your project in place, so experiments stay discardable.
  • Unsaved projects park a recovery copy in %APPDATA%\F3Stack.
  • If the application crashes, an emergency copy is written to %APPDATA%\F3Stack\recovery. On the next start you are offered to restore it; opening a project whose autosave is newer offers the autosave.
  • A real save deletes the recovery copies it supersedes.

Version control

Enable version control on the Project tab to record a revision entry (author, timestamp, change list) with every save. The change list is computed automatically by diffing against the previous save.

6. Materials

Each material carries a thermal expansion coefficient (per °C or per °F, following the project units). For nonlinear behaviour open the CTE curve editor and enter instantaneous α(T) sample points — thermal strain is then integrated over the temperature range.

  • Add from library — a bundled reference library of common engineering materials.
  • Import CSV — columns: MaterialName, ThermalCoefficient.
Typing coefficients. The coefficient cells (here and in the CTE curve editor) accept scientific and plain notation alike — 23e-6, 2.3E-05, 0.000023 — with either decimal separator (comma or dot). The value commits when the edit ends (Enter, Tab or clicking away); Esc cancels; an entry that isn't a number quietly reverts to the stored value. Nothing reformats the text while you type.

7. Parts

Parts tie features to materials. The expandable row editor (corner triangle) holds the part's UOS general tolerances — the title-block "unless otherwise specified" ± value that Linear Dim (UOS) features inherit automatically.

A part is identified by its number; the name is optional and starts empty. The short name — the prefix every feature ID carries — is derived automatically: from the part name (its words joined with underscores, e.g. Front Cover → Front_Cover) or, while the name is empty, from the part number. Type your own short name to override it: your value then stays put no matter how the name or number changes. Clear the cell to hand it back to the automatic rule.

  • Import CSV — columns: PartNumber, PartName, ShortName, MaterialName.
  • Export CSV — writes all parts including the UOS tolerance.

8. Features

A feature is a single toleranced dimension or geometric tolerance on a part. Feature IDs are generated automatically from the numbering scheme configured on the Project tab (per-part or global).

The PART column shows the part's short name together with its part number (one token only when the two are the same, as they are for an unnamed part). Opening the picker lists number — name for every part, and typing while the list is open jumps to the first part matching what you typed — by number, name or short name alike. The same picker is used for a requirement's source part and for the part column of a stack-up row.

Feature types

TypeInputsNotes
Linear Dimnominal size, +/− toleranceThe standard dimension.
Linear Dim (UOS)nominal size± pulled from the part's UOS general tolerance; shown read-only.
Basic Dimnominal sizeTheoretically exact — zero variation in every analysis.
Ⓤ zone shift (basic)shift valueThe offset of an unequally disposed (Ⓤ/UZ) tolerance zone's midpoint, modelled as its own chain vector. Behaves like a basic dimension: the value only, no tolerance width. The direction of the shift is yours to choose by how you draw the vector (right/up = +) — the callout alone cannot tell which side the zone favours. See Unequally disposed zones.
Boundarynominal size, +/− toleranceVirtual-condition size; behaves like a linear dimension.
GD&T (Straightness … Total Runout)tolerance zone sizeEnters the stack halved: the frame states a whole zone, a contributor is a ± half-width, so a Ø0.1 position zone contributes ±0.05. Clear the /2 toggle on the row to take the whole zone instead — the INFO column then flags that conservative reading. Take the whole zone in the special cases where the chain does not run from the zone's middle to its edge but crosses the entire zone — e.g. two chain members bolted to a surface carrying a flatness tolerance: one part can sit at the bottom of the zone and the other at its top, so the full zone width drives the extreme result.
MMC / LMC / MMB / LMBtolerance zone sizeMaterial-condition modifiers (bonus tolerance), shown with the circled Ⓜ/Ⓛ symbol.

Features carry no zone-disposition columns: the modifiers that qualify a zone (Ⓤ unequally disposed, Ⓟ projected) belong on the drawing's feature control frame, not on the feature's numbers. The projected zone Ⓟ does not change a 1D stack at all — the zone value contributes unchanged — and the unequal zone Ⓤ needs a direction you choose in the chain, as below.

Unequally disposed zones (Ⓤ / UZ)

A profile zone disposed unequally (ASME Ⓤ, ISO UZ) shifts the zone's midpoint off the nominal surface — but the callout alone does not say in which chain direction that shift acts; it depends on which way the surface faces in your stack. The tool therefore models the two effects separately:

  • The profile feature carries the zone width as usual — a plain symmetric zone, halved by the /2 default (zone 1.0 → ±0.5).
  • The midpoint shift is an explicit extra vector in the chain, carrying a Ⓤ zone shift (basic) feature with the shift value (for zone 1.0 disposed Ⓤ0.8, the shift is 0.8 − 1.0/2 = 0.3). Draw the vector in the direction the zone actually favours — the sign follows the drawing (right/up = +), exactly like every other link.

Example: zone 1.0 Ⓤ0.8 → draw the profile's GD&T point (contributes ±0.5) plus a 0.3 shift vector; the result band is the surface's true −0.2 … +0.8 disposition, on whichever side you drew it. The Ⓤ value in a feature control frame on the drawing is unaffected — it is notation; only the chain models the shift's direction.

Formulas

Any numeric feature cell accepts an Excel-style formula starting with =. Reference other features by column and ID:

=N@FT012/2 + 0.1

N nominal size · U tol + · L tol − · G geo zone. Operators + − * / ^ plus the functions sqrt() and abs(). References resolve recursively with cycle detection; results recompute on every edit.

Use =abs(U@ID-L@ID) to reference a full size range. Assign to vector can create the source formula for you.

Deviation signs: U and L are signed deviations: for 10 ±0.05, enter U = 0.05 and L = −0.05. The full range is abs(U − L) = 0.1. An invalid formula, unknown ID, division by zero or a cycle yields a blank result. A blank cell does not establish a zero tolerance; correct the formula before interpreting results.

Creating a Boundary feature

  1. Select Boundary in the Features table.
  2. Click ⛓ in its NOMINAL cell, or in FEATURE TYPE in the Calculations grid.
  3. Select the feature of size and specify Internal feature for a hole or slot.
  4. Select the location tolerance and the modifiers shown on the drawing.
  5. For a datum modifier, select the datum feature of size and its location tolerance.
  6. Review the preview and confirm. Alternatively, choose State the two boundaries by hand.

The dialog can pre-select modifiers from a mapped drawing frame; verify them before confirming. Read the analysis warnings if the chain contains both a Boundary and its component features. Keep source links when you need dependent recalculation. A manually entered envelope has no component links.

9. Requirements

A requirement is the assembly dimension being verified: an ID, a source part, a name and MIN/MAX limits. Each requirement owns one calculation sheet.

  • FINAL RESULT BY — which method (Worst case / RSS / Monte Carlo) the PASS/FAIL verdict is judged against. Selecting a statistical method force-enables that analysis.
    Worst case and RSS ask whether their result band fits inside the limits. Monte Carlo asks the question you configured in the Monte Carlo panel: does the simulated yield reach your target, and — when you set one — does Cpk reach its target? That is the same test the panel's PASS/FAIL badge runs, so the badge, the results strip, the Results tab and the exported reports always agree. With no acceptance target set, Monte Carlo falls back to the band test.
  • RSS and Monte Carlo toggles — opt each analysis in or out per requirement; they control the extra rows in the results panel and the Monte Carlo panel.

10. Calculations

Each requirement is a tab card at the top (scrollable; + adds a sheet). The top bar carries the tools, the requirement identity, MIN/MAX (an edit re-judges every result and asks for confirmation), the verdict method and the RSS / Monte Carlo toggles.

One-sided requirements are fine. Leave MIN or MAX empty and the requirement is judged on the side you stated — "minimum clearance ≥ 1" needs no upper limit, and the missing side never constrains the verdict. Only a sheet with neither limit has nothing to judge; its status stays —.

Drawing the chain

  1. Image mode: load (or paste with Ctrl+V) your 2D drawing; pan, zoom, rotate. Multiple image layers are supported — or draw the views yourself with the drawing module.
  2. Stack-up mode: draw the requirement vector first — the dimension being verified (double arrows). Lock X/Y snaps it horizontal/vertical; unlocked follows your exact angle and rotates the whole stack frame.
  3. Draw contributor vectors tip-to-tail (click-and-drag; the chain continues from the last endpoint). Right-click ends or breaks the chain — a break link bridges to the next segment.
  4. Assign a feature to every vector in the grid. The first assignment with a known size calibrates the drawing scale (px/unit); later vectors can be filtered by matching length.
  5. Geo tol points attach zero-length tolerance entries to a vector endpoint, joint or guide line (square marker + leader label). Stack several characteristics into one frame via the right-click menu.
  6. Guide lines bridge offsets perpendicular to the stack axis. Dragging an endpoint re-aims it (Shift squares it to 90°); dragging the body slides the joint — attached vectors resize.
Sense. The convention is absolute: horizontally right is +, left is −; vertically up is +, down is −. The requirement — a two-headed, direction-less arrow — plays no part in the signs. The sign follows the drawn arrow: reverse a vector on the canvas (or flip the +/− cell in the grid) and the other side updates automatically — the arrow and the SENSE column can never disagree. When the requirement gets too short for its double arrows, they flip to the outside automatically.
Geo tol placement. A geo-tol point dragged along a guide keeps its stacked frames together; dragged off its guide it receives its own extension line so the chain stays connected (hidden for the n-th frame of a stacked pile).
The requirement carries no feature. The requirement vector is the result of the chain, so a feature cannot be assigned to it — its geometry can be edited, and the grid lists contributors only. Its MIN/MAX limits live in the top bar.

Selecting several vectors — and copying them to another sheet

Selection on the stack-up canvas works the same way as in the drawing module: every click adds. Click a vector and it joins the selection; click it again and it drops out. Nothing is replaced behind your back, so building a set of five links is five clicks.

  • Click a vector, a guide line or an image — toggles it in the selection.
  • Ctrl+click does the same explicitly, and keeps working while a group is already up.
  • Shift+click a vector pulls in its whole partial stack-up (every link of that piece of the chain, plus the guides they hang on). On a guide line it pulls in every partial the guide touches.
  • Alt+drag rubber-bands a rectangle: every vector with an endpoint inside, every guide crossing it and every image it overlaps join the selection.
  • Click empty canvas to clear. Dragging any selected object moves the whole group; dragging one that is not selected behaves as usual.

Right-clicking inside a selection of two or more opens the group menu: colour, thickness, line style, Copy to… and Delete — each applied to the whole set as a single undo step.

Copy to… — the same links on a second sheet

Chains repeat. The same three links that set a bearing seat on R-001 often belong on R-002 as well. Select them, right-click, choose Copy to ▸ and pick the destination sheet. What travels:

  • The geometry, the sign, the ÷2 divisor, the distribution, the shrink-fit state and the vector's colour / thickness / line style — verbatim. The destination sheet's own stack axis is not touched.
  • The assigned feature — the same one. Features belong to parts, parts belong to the project, so two sheets measuring the same hole legitimately read the same callout. Edit that feature once and both sheets follow. Editing size or tolerance cells in the Calculations grid changes the shared feature, including other sheets using it. For independent values, create a separate feature on the Features tab and assign it to the copied row through FEATURE ID.
  • The connections between the copied vectors — an extension line that two copied vectors are anchored on comes along, and so does a break link whose two ends are both in the selection. A line or link reaching a vector you did not select is left behind, so a copy is never tied to geometry it does not own.

What does not travel: the requirement vector. Every sheet owns exactly one and it is the result the chain builds up to, not a contributor — selecting it is fine (dragging it pans the whole stack), but a copy skips it and the status bar says so.

Where it lands. The fragment keeps its exact position when that spot is free on the destination. If it would overlap the chain already there, the whole block is moved straight down clear of it — rigidly, so the relative geometry of the copied links is untouched. It is never snapped onto the existing chain: joining two chains is a decision you make by drawing, not something a paste should invent. The copy lands as its own partial stack-up, ready to be dragged into place and connected.
You stay where you are. Copying does not switch the tab — the same fragment often goes to three sheets, and a canvas that jumps away under the menu loses your place. The confirmation names the destination (“Copied 3 vector(s) to R-002.”) so you can go there when you mean to. The whole copy — vectors, lines, links — is one Ctrl+Z.
Copy to… is greyed out? Either the project has no second calculation sheet yet (add one on the Requirements tab), or the selection holds nothing but the requirement vector. The tooltip on the disabled item says which.

Assign to vector — the drawing fills the grid in

Every number a chain needs is already written on the drawing. In Stack-up mode the drawing underneath stays pickable for exactly that reason: click a dimension or a feature control frame to select it, right-click it and choose Assign to vector…. You only pick the part and the vector number — everything else is read off the annotation.

Chain objects always win the same pixel (a vector, an extension line or an image is hit first), and the pick is skipped entirely while a stack-up tool is armed, so drawing vectors is never disturbed.

AnnotationFeature created
Linear / ⌀ / R dimension Linear dim — nominal = the value as drawn, ± = the dimension's own deviations, one to one.
BASIC dimension [25] Basic dim — the value only. A theoretically exact dimension carries no tolerance; the zone that controls it lives in the frame.
REFERENCE dimension (25) Refused. A reference dimension repeats a value the chain already carries — stacking it would count it twice. Convert it to a driving dimension first if it really is independent.
Angle dimension Refused — a chain adds lengths along one axis.
Feature control frame The characteristic (⌖ position, ⏥ flatness, ⌓ profile …) becomes the feature type, the frame's value becomes the zone, and the datum references are kept in the feature's name.

A frame is not one object. Its tolerance value, the Ⓜ/Ⓛ modifier on that value and the Ⓜ/Ⓛ modifier on each datum are separate contributors, so the dialog gives each its own row: a tick (take it over or not), a value, and its own target vector — they may land on different links of the chain, because a datum boundary bonus often acts on a different member than the toleranced zone.

RowTicked by defaultWhere the value comes from
Zone valueyes The frame's tolerance value. Halved by default, like every geo zone.
MMC / LMC bonusno Pre-filled with the formula =abs(U@ID-L@ID) — the full size-tolerance range of the feature of size the Ⓜ/Ⓛ points at. Retolerance that dimension and the bonus follows by itself. Type a plain number over it to state the bonus by hand (the formula is dropped and the value stays put).
MMB / LMB bonus
(one per datum with Ⓜ/Ⓛ)
no Typed by hand — a datum boundary usually cannot be read off the drawing. If that datum's Ⓜ/Ⓛ is linked to a feature of size, the same formula is pre-filled as a starting point.

Bonuses start unticked on purpose: in most chains a material modifier plays no part, and two contributors nobody asked for are worse than one extra click. A row that lands on a vector which already carries a feature becomes its own zero-length point stacked on the same spot — exactly the pile you would build by hand; a row aimed at a free geo-tol point simply fills it.

Where the Ⓜ link lives. The MMC formula needs to know which feature of size the modifier refers to — that is the Ⓜ/Ⓛ FEATURES link on the frame's ribbon panel. Without it the value box arrives empty (a frame stacked under a dimension falls back to that dimension's feature). Leaving a value blank still creates the row, and the status bar says the zone is empty — so the gap is visible in the grid instead of quietly missing from the result.
One undo. Creating the features, wiring them onto the chain and renumbering is a single step — Ctrl+Z takes the whole assignment back. The annotation is left live-linked to the feature it produced, so the frame's value and the feature's zone stay one number.

Grid-first chains & Keep Scale

You do not have to draw every vector by hand. With a requirement vector on the canvas, Add contributor (ribbon) appends a grid row and lays out its vector automatically — pick the feature, set the sign, type the values, and the canvas follows. Auto-generated contributors re-lay themselves whenever anything that changes their magnitude changes (value, tolerance, sense, /2).

  • Keep Scale ON — auto vectors are drawn to scale: length ∝ the contribution magnitude (clamped so tiny values stay clickable). Editing a value visibly re-scales the chain. Hand-drawn vectors carrying a feature re-scale on value edits too, so the picture stays honest.
  • Keep Scale OFF — every auto vector uses the same default length (a schematic chain).
  • The requirement vector is never rescaled — it stays exactly as drawn.
  • While Keep Scale is ON, a data-driven vector's length is not hand-resizable (its length is the value); whole-vector moves, the requirement and feature-less vectors stay freely draggable.
Interference fits. When the chain sums to a negative resultant (an interference, not a clearance), Keep Scale is disabled automatically for that sheet: the chain keeps its chosen orientation (clearance = +, interference = −), so the vectors go schematic while the numbers stay negative. Keep Scale re-enables itself when the stack returns to a clearance.

The stack-up grid

ColumnMeaning
No.Contributor order in the chain; the requirement vector is not a grid row.
PART / MATERIAL / FEATURE ID / NAME / TYPEThe assigned feature; TYPE is a one-click symbol picker. On a row that has no feature yet — a geometric tolerance you have just inserted into the chain, a fresh contributor — the TYPE cell shows a +: pick a characteristic there and the feature is created for you. Only the kinds that row can carry are offered (a geometric-tolerance point takes a tolerance zone, a drawn vector takes a dimension), and the app asks which part it belongs to when the project has more than one. Changing PART on a row that already carries a feature asks what you mean.
F. SIZE, F. TOL±, GEO TOLThe feature's values (editable here or on the Features tab).
+/−Sense of the vector in the chain.
/2Halves the calculated contribution (diameter→radius, geo zone→half zone). On by default for a geometric tolerance; your choice on a row is never overwritten afterwards.
DIST.Distribution for statistical methods: Normal, Uniform, Triangular (histogram glyphs). Visible when Monte Carlo is enabled.
CONTRIB. / TOLERANCE +/−The calculation columns: signed mean contribution and ± half-width. Asymmetric tolerances shift the mean (equal-bilateral conversion) — the INFO column notes the shift.
INFOConvention notes, spelled out per row: Geo zone 0.1 enters as ±0.05 (half the zone) · Whole geo zone taken — usually only min or max is real · Ⓤ zone-shift vector (basic) — direction from the drawn vector, no tolerance · Asymmetric ± — mean shifted, enters as …. Every note describes something that moves a number; empty for a plain symmetric dimension.
FITShrink-fit sheets only — the row's assembly state: Room / Heated / Cooled (see Shrink fit).
CONTRIB./TOL (T MIN / T MAX)The complete calculation at that temperature — reveal with the ◂ toggle at the grid's right edge. Both the contribution and the ± half-width are scaled by the entry's thermal factor 1 + ε, so each temperature slot is a self-consistent stack: Σ CONTRIB ± Σ TOL at a slot equals that slot's MIN/MAX in the results panel — the hand sum and the strip can never disagree. One exception: when the chain earns a Ⓜ/Ⓛ bonus from a feature that is itself in it, the bonus is zero at the end of the band where that feature reaches its specified material condition, so the band is not symmetric. The Σ cell then prints both ends (+x / −y) and says so in its tooltip; the TOL column still shows what each row declares, which is why it adds up to neither end. See A bonus is zero at its specified material condition.

The Σ totals row under the grid sums the calculation columns (the per-temperature Σ cells appear together with the thermal columns). The requirement vector is not a contributor — it never appears in the grid and never enters any sum.

Changing the PART of a row

On an empty row the PART cell simply scopes the FEATURE ID picker next to it. On a row that already carries a feature the same edit can mean two different things, so the app asks:

  • Move the feature to that part. The same feature changes part and keeps everything you typed into it — values, deviations, zone, formulas, name and links. Every other chain using that feature follows it (they carry the feature itself, not a copy).
  • Point this row at another feature on that part. The row is unlinked and the picker re-scoped; the feature stays where it was, untouched.

The dialog states what the move actually changes before you commit to it: the feature's id (it is derived from the part — formulas, mapped dimensions and feature control frames all follow the rename), the material behind the T MIN / T MAX columns, and — for a UOS linear dimension — the ± it inherits from the part's general tolerance, which is the one case where a move really does change a number. The whole thing is a single Ctrl+Z. A feature you have not typed anything into yet, and that nothing else uses, is simply moved without a question.

Checking bonus source links

Use the ⛓ dialog or a feature formula to link each MMC/LMC/MMB/LMB row to its source feature. A numeric zone value alone does not establish a source link. Check the source ID, Internal feature setting, SENSE and ÷2 in the grid.

The Σ row can display different + and − values. Review both ends in the results panel and check the alert strip before accepting the result. See Project migration when opening an older project.

Separate MIN / MAX chains

When to split? Use two chains when minimum and maximum need different contact paths or contributors. For a bonus linked to a source size in the same chain, the WC engine distinguishes the band ends itself; the bonus alone does not require a split.

Some chains differ between the min- and max-material condition — a different contact path, a different set of contributors. The Separate min/max ribbon toggle splits the sheet into a pair:

  • The sheet becomes the MIN chain and a deep copy right after it becomes the MAX chain; their IDs get a role suffix (R-012 MIN / R-012 MAX) and the tab strip shows the shared base ID with a min/max badge. Edit each chain for its own condition.
  • The Results tab re-aggregates the pair into one entry: MIN from the MIN sheet, MAX from the MAX sheet, and the nominal per the NOMINAL SOURCE combo that appears while split (Average / From MIN / From MAX).
  • Un-toggling asks which chain to keep (Yes = MIN, No = MAX, Cancel = stay split); the survivor gets the base ID back.

Shrink fit (thermal assembly)

The Shrink fit ribbon toggle turns the sheet into a thermal-assembly analysis: parts are heated or cooled for the assembly operation, mated, and relax back to room temperature. Enabling it reveals three sheet parameters — T HEAT, T COLD (seeded 150 °C / −40 °C on first use) and MIN CLEARANCE — plus the grid's FIT column, where each contributor is assigned its assembly state: Room, Heated or Cooled.

The sheet is judged in two states:

  • AT ASSEMBLY — every contributor at its own fit temperature (heated parts expanded, cooled parts shrunk, room parts untouched). This section replaces the T MIN / T MAX sweep in the results panel; the band's lower bound must stay at or above MIN CLEARANCE, or the parts cannot mate.
  • T ROOM — the final fit after relaxation, judged against the requirement's MIN/MAX as usual (a negative result is the retained interference).

Results panel

The bottom panel shows, per temperature (T MIN / T ROOM / T MAX), the MIN / NOMINAL / MAX band for each enabled method, with the verdict method highlighted. The per-temperature status flags are judged against the selected method; the overall flag can be manually overridden (right-click → Force PASS / FAIL, reason required — shown yellow).

Monte Carlo panel

Expand MONTE CARLO ANALYSIS under the grid for the live histogram. Sample-count presets run 1 000 … 1 000 000; the seed is fixed by default so a re-run (and a re-export) reproduces identical numbers — a fresh-seed re-run is one click away. Set the acceptance targets as a yield (the % ⇄ σ toggle re-expresses the same target either way — 99.73 % is 3σ) and a target Cpk.

The histogram overlays grey ±3σ…±6σ reference lines, red worst-case (WC−/WC+) lines and orange MIN/MAX limit lines — seeing a 5σ or 6σ line fall outside the worst-case pair is the untruncated-normal convention made visible. Below it, a per-temperature capability table (mean, σ, yield, Cp, Cpk, observed min/max) judges each slot; click a row to aim the histogram at that temperature. Drag the grip to grow the chart. Simulation runs in the background — the UI stays responsive.

Cpk target indicator

Enter the target Cpk in the Monte Carlo panel. The chart and capability table display the achieved value against the target. Click a temperature row to update the histogram. An off-chart indicator is shown at the edge. Use the table for the exact values; see the White paper for their interpretation.

11. The drawing module

The Calculations canvas doubles as a full 2D drafting surface: when no drawing image is available (or on top of one) you can draw the part views yourself, dimension them, and annotate them with GD&T — then run the stack-up chain over your own sketch. The drawing tools live on the Drawing-mode ribbon in groups — Draw, Axes, Modify, Annotate, Constrain, Transform, Align, Style, Edit — and every group is also reachable from the marking menu under the cursor. Sketch geometry is deliberately inert to the vector chain: it never contributes to the calculation.

Try it: the bundled drawing-showcase project (Examples folder) exercises every tool described in this chapter — open it and take things apart.

Drawing shapes

ToolGesture
LineDrag (or click–click) between two points. Starting a drag on an existing node moves that node instead of drawing a new line.
PolylineClick each vertex; double-click, Enter or a right-click finishes. Closing back onto the first vertex makes a closed contour.
RectangleDrag corner to corner (axis-aligned) — or the centric 3-click flow: a stationary click sets the centre, the second click sets the half-width and its direction (the rectangle may stand at an angle), the third sets the height.
CircleDrag from centre to rim — centre axes are drawn automatically.
EllipseClick the centre, then a corner point; its ΔX/ΔY set the semi-axes.
SlotThree clicks: first cap centre, second cap centre, then a point whose distance from the axis sets the radius (previewed live). Built as tangent-tied lines and arcs with equal-radius caps, so it stays a slot under every edit.
SplineClick through-points; double-click or Enter finishes. A closed spline is a smooth closed contour.
ArcThree clicks: start, end, then a point on the arc.
PolygonClick the centre, then a vertex; the number of sides (3–12) comes from the ribbon combo. Stays a regular N-gon under every edit.
PointClick to place a point marker — a snap and dimension anchor.
AxisTwo clicks or a drag; drawn dash-dot with a small overshoot. Clicking two lines instead builds the centre line between them (midline of parallels, bisector of crossing lines — born with a Symmetric constraint); clicking a circle drops its centreline cross.

A normal click arms a tool for one operation. To draw a series, hold its button for 0.25 s to pin it. A pinned tool stays active until you press Esc, click its button again or select another tool. Hovering an existing shape grabs it instead of drawing over it. Nodes snap to each other, to shape nodes, to line midpoints (pickable derived nodes) and to the drawing origin; with the grid toggle on, every free click lands on a grid node (the displayed grid auto-coarsens as you zoom out).

Direct manipulation

Every shape follows one drag grammar — body pans, outline resizes, nodes reshape:

  • Line — drag the body to move it whole; drag an endpoint to reshape. The midpoint is a live node for snapping and dimensioning.
  • Circle — the centre pans the whole circle; grabbing the rim changes the radius (the rim tracks the cursor exactly).
  • Arc — the rim re-projects all three points onto a circle of the cursor's radius about the same centre: a pure radius change that keeps the angular span (an arc can never be flattened onto its chord). Grabbing the crown node itself translates the arc rigidly.
  • Slot — the caps are tied EqualRadius, so a cap's rim drag is "the slot's width" (both caps together); dragging a cap's crown stretches and swings the slot about the far cap, flanks following tangent.
  • Ellipse — the centre pans; the outline resizes the one semi-axis whose extreme you grabbed nearer, perpendicular to itself, the other axis holding.
  • Rectangle — corners resize both dimensions, edge midpoints move that edge only, the body pans.
  • Polygon — the centre pans rigidly; a vertex resizes/rotates — it stays a regular N-gon either way.
  • Axis — endpoints slide along the axis's own direction (extend/shorten, never bend), magnetising to projections of nearby nodes; rotating an axis is Ctrl+drag.

Ctrl+drag on a node rotates the whole shape about its centre (rectangles and ellipses refuse — they are axis-aligned; use Modify ▸ Transform). Shift+click on a node adds it to the pick set for constraint pairing instead of dragging. Constraint-connected geometry that is free to move carries along rigidly with a body drag.

A driving dimension or a parameter lock on the affected value simply refuses the drag — the dimension is the master (see Dimensions). If a release leaves the constraints unsolvable, the whole gesture reverts; collapsing a shape to (near) zero size reverts too, so a slipped drag can't destroy geometry.

Modifying geometry

  • Trim — click the part to remove; it trims back to the nearest boundaries: crossings with straight edges (lines, rectangle / polyline / polygon edges) and curves (arcs, circles, splines — a tangency counts), and nodes of other shapes lying on the edge. Trimming the middle of a line splits it in two; a full circle with two crossings becomes an arc. A segment with no boundary at all trims to nothing — the whole curve is deleted, NX-style, so Trim doubles as a click-eraser.
  • Extend — click near an end; it lengthens until it reaches the next crossing. Extending an arc past its full sweep closes it into a complete circle.
  • Fillet — pick two lines one after the other (they need not touch — crossing lines are cut back, short ones extended to the tangency points) or click a shared corner; an exact tangent arc of the given radius replaces the joint, with Tangent constraints recorded so later edits keep the blend. Works on polyline vertices too; rectangles and polygons degrade gracefully to polylines when a corner is cut.
  • Chamfer — same two-line pick; a symmetric cut of the given distance replaces the corner. Radius and distance share the ribbon's one value box (Offset uses it too).
  • Offset — click a line, polyline, rectangle, circle, polygon or arc; an equidistant copy is created on the clicked side. Closed contours offset as closed contours.
  • Centre axes — click a circle or an arc; two perpendicular dash-dot centre lines appear at its centre, grouped with it.

All modify tools share the dimension contract: the edit wins, parameter locks it violates come off automatically and are listed in the status bar.

Constraints

Geometric constraints keep relationships alive through every later edit. Arm a constraint tool (ribbon or marking menu, or the C radial), then pick the entities:

ConstraintHolds
FixOne node pinned at its position.
Horizontal / VerticalA straight line stays level / plumb.
CoincidentA point sits on another point or on a line.
MidpointA point sits at the midpoint of a line.
TangentLine–arc or arc–arc tangency.
Parallel / Perpendicular / CollinearLine-to-line direction relationships.
AngleTwo lines keep a fixed signed angle.
Equal length / Equal radiusThe second entity follows the first.
ConcentricShared centre (point–arc or arc–arc).
SymmetricTwo lines are mirror images across a symmetry axis — a drawn Line or Axis, or a coordinate-system axis.

Constraints render as small badges by their geometry; the solver re-applies them on every drag frame and exactly on commit, so constrained geometry moves as a mechanism, and the sketch renders slightly faded until it is fully defined — full colour is earned at zero degrees of freedom. A redundant constraint is refused (or absorbed with a note) rather than silently stacked; driving dimensions are equations the solver always honours. A long-press on a badge (see selection) picks the constraint itself — Delete removes it, no prompt.

The side panel's Constraints tab lists every constraint touching the selection as an expander row (✕ removes; expanding spotlights its entities on the canvas), offers context-aware ADD chips for what the current selection could be constrained with, and ends with the sketch's health line: fully defined, under-defined by N DoF, redundant constraints present or ⚠ conflicting.

Selection, parameters & locks

  • Selection: multi-select is the default — a click adds to the selection, clicking a selected shape deselects it, a click on empty canvas clears; Alt+drag marquee-selects. Right-click for bulk edits (colour, thickness, line style, hatch, delete…); Delete removes the selection.
  • Long-press pick: plain clicks always pick geometry. Holding the press ~0.5 s over an ambiguous spot — a constraint badge over a line, a node on a line, an axis under a shape — opens a list of every candidate under the cursor; click the one you meant.
  • Objects & Constraints panel: the side panel lists every drawing object (shapes, dimensions, annotations, hatch/fill seeds) with property expanders for direct parameter editing — colour, thickness, line style, fill/hatch, the object's layer and the kind-specific parameters — and every constraint on its second tab. Hovering an entry spotlights it on the canvas.
  • Multi-edit: with two or more objects selected (marquee, select by group, select-all-from-layer, Shift+clicks) the Objects tab leads with a Selection section: the shared properties — outline colour, thickness, line style, reference, fill/hatch, layer — applied to every selected object at once, one undo step per edit. A control shows the common value when all objects agree and an empty/indeterminate state when they differ.
  • Grouping: Ctrl+G groups the selection — it then selects and moves as one; Ctrl+U ungroups.
  • Copy & paste: Ctrl+C / Ctrl+V duplicate shapes (pasted copies land slightly offset and selected). The constraints holding the copied set together come along — a copied slot stays a slot; a constraint reaching a shape outside the copied set is dropped. Copy as image puts the whole drawing on the clipboard as a picture — paste it straight into e-mail or a document.
  • Parameters & locks: the ribbon panel shows the selected shape's node X/Y, line length, rectangle A/B or circle ⌀. The padlock locks a parameter — edits and drags then move only the unlocked geometry; the last value you type is driving, and the app warns when locks make a value unreachable.

Dimensions that drive geometry

Dimensions in Stack are constraints, not decorations: double-click one, type a value, and the geometry moves to match.

  • Linear / distance / diameter — one context-aware tool; what you click decides the type: two nodes give a linear dimension (aligned / horizontal / vertical via right-click), a line plus a node or the drawing origin (the small cross-and-circle) gives a perpendicular distance, two parallel lines give their spacing, a circle gives a diameter immediately, an arc a radius, and a line followed by a click on empty space its length.
  • Angle — click two lines, then place the arc; the measured sector follows the cursor. Double-click to type the angle and a line or axis rotates to match. When you drag one of the dimensioned objects, the angle dimension stays pinned to the static one.
  • Ordinate — click a node; an ordinate dimension from the drawing origin is created (X or Y decided by where you place it).

When you type a value the free end of the geometry is moved by preference; if parameter locks over-constrain the edit the dimension wins — the conflicting locks are removed automatically and listed in the status bar. Dimensions follow the geometry when it moves, can be dragged to a new position (even while the dimension tool is armed — grabbing an existing dimension beats creating a new one), and are deleted with their shape. Values show in real units once the drawing scale is calibrated, otherwise in canvas units. Dimension text keeps a constant on-screen size regardless of zoom.

Dimensions carry a style — driving (toleranced; ± suffixes render inline when symmetric, stacked when not), basic (framed, exact) or reference (parenthesised, measure-only). A new dimension whose quantity is already pinned — a duplicate, or a value the constraints fix anyway — is auto-demoted to reference, with the status bar saying so (right-click ▸ Convert to driving reverses it). The app also warns when a sketch becomes over-dimensioned.

GD&T, datums & notes

  • Feature control frame — click a node, line or circle to attach a frame, then build it in the dialog: characteristic symbol, optional ⌀/S⌀, the tolerance value with optional Ⓜ/Ⓛ (plus legacy Ⓢ under ASME), and up to three datum references (each with optional Ⓜ/Ⓛ). The modifier row adds Ⓤ/UZ (unequally disposed profile zone — drawing notation only, following the project's standard; to make the shift act on a stack-up, add a Ⓤ zone shift (basic) vector to the chain), Ⓟ with its height (projected zone — notation too; it qualifies where the zone applies and does not alter a 1D chain), Ⓕ free state and — under ASME — Ⓣ tangent plane. The dimension right-click menu offers Ⓔ (envelope, ISO) or ⟨ST⟩ (statistical, ASME) on size dimensions. Symbols the selected standard does not define are hidden from new frames (Y14.5-2018 drops concentricity and symmetry).
  • Datum — places a boxed datum letter on geometry, drawn as a short horizontal stub with the leg normal to the surface — or on a feature control frame (click the frame body), where it moves and is deleted together with the frame.
  • Note — free text with a leader; attach it to a node, a line, a circle, another annotation or empty space. The text editor carries a one-click symbol palette (⌀ □ ° ± Ⓜ Ⓛ, all GD&T characteristics) and expands aliases as you type — <dia> becomes ⌀ the moment you close the bracket.
  • Composite frames — for position and profile characteristics the builder offers a two-row composite frame (one symbol cell spanning both rows). Datum targets place the split-circle target symbol (area over label).

Like dimensions, all annotations keep a fixed on-screen size while you zoom. Leaders leave a frame from its left or right side, and grabbing a frame always moves it — even with a tool armed. Double-click edits, right-click deletes.

Hatching, fills & line styles

  • Hatch and Fill are area tools: arm one, then click inside a region bounded by any primitives — a closed shape, or an area enclosed by stitched lines and arcs. Hovering pre-highlights the region a click would take; for nested regions the smallest enclosing area wins, so a plate with a bore hatches like a real section view. Closed contours inside the region are punched out as holes.
  • Reference geometry never bounds an area. Centre lines/axes and anything flagged as construction are ignored when the region is traced, so a symmetry axis drawn across a section does not cut the hatching in half. If you want a boundary there, draw an ordinary line — real geometry still divides the area.
  • Every hatch/fill is a parametric object of its own: selectable by its area, editable (angle, spacing, crosshatch, opacity, fill colour — inline on the ribbon, under right-click → Hatch properties…, or from the Objects panel) and deletable. Fill and hatch coexist. An edit that re-opens the outline removes the hatching and says so.
  • Drawing order — layers are painted bottom-to-top: background image · hatch/fill areas · dimension lines (witness, dimension, arrows) · reference geometry (axes, construction) · object geometry · dimension values, GD&T frames and notes · selection highlights. So a real edge is never hidden by a witness line, while a dimension value is never crossed by an edge. The exported PNG/report uses the same order as the screen.
  • Line styles — every shape can be solid, dashed or dash-dot, with per-shape colour and thickness (the Axis kind is always dash-dot).
  • Select by group — the ribbon's group button takes a whole category of the sheet in one click: Reference geometry (centre lines/axes and anything flagged as reference — the construction layer), Object geometry (the material outline: lines, arcs, circles, rectangles, splines, polygons, slots, ellipses) or Dimensions & annotations (dimensions, GD&T frames, datums, notes and the parametric hatch/fill areas). Each entry shows how many objects it holds and is greyed out when the sheet has none. Ctrl+click ADDS the category to the current selection, so categories stack.
  • Smart colour — one button, two jobs. With nothing selected it picks the working-area background colour. With a selection it picks the object colour and paints every selected shape, dimension and annotation at once — one click, one undo step. Pair it with Select by group to recolour a whole category: select the group, click a colour, done. Shape fills keep their own picker (Hatch/Fill) so a recolour never overwrites them.

Layers

Every drawing object — shapes, dimensions, GD&T frames, notes and the parametric hatch/fill areas — carries a layer number (1–256; every sheet starts on layer 1). Layers organise a drawing the CAD way: put construction on one layer, the outline on another, annotations on a third — then hide or lock whole layers at once.

  • Layers ▾ — the ribbon button opens the layer manager; its badge (Layers · 3) always shows the active layer. The manager lists layers 1 to the project's layer count (a Project-tab property, default 16, up to 256 — reducing it below the highest layer in use is refused) plus any higher layer in use; empty layers are dimmed and the bottom field reaches any number up to the count. Each row shows the object count, four labelled checkbox columns — Active, Visible, Locked, Selectable — and three icon actions: select all from layer, move here, copy here. Select all from layer also lives in the ribbon's select-by-group menu.
  • Active layer — the Active column: ticking a layer moves the tick there (exactly one layer is always active — the ticked box cannot be un-ticked). Everything you create — drawn shapes, pasted copies, dimensions, GD&T, hatch regions, constraints — lands on the active layer. It is remembered per sheet and saved with the project. An object's layer can also be changed directly in the Objects panel (per object, or for the whole selection via multi-edit).
  • Constraints have layers too — a constraint's canvas badge carries a layer like any object: hiding the layer hides the badge (and it stops being pickable), moving a set of objects to a layer takes the constraints that tie that set along, and a copied set's constraints land on the target layer with the copies. The layer governs the badge only — the solver always sees every constraint, so hiding a layer never breaks the geometry. Founding constraints of a fillet or a trim split stay on their geometry's layer (they are part of that surgery), everything else lands on the active layer.
  • Move here / Copy here — send the current selection to that row's layer: Move re-tags the objects, Copy creates independent copies there (the copies come back selected, ready to drag — and they keep the constraints that held the copied set together; a constraint reaching an object outside the selection is dropped, so the copy never stays chained to the original). Both are one undo step.
  • Hidden layer — not drawn, not snappable, not selectable, and it never bounds a hatch region: a region "divided" by a hidden line hatches as one area, exactly as the screen shows it. Exports (PNG, report, Excel) skip hidden layers too — what you see is what prints. Constraints keep solving through hidden geometry: hiding never breaks the model.
  • Locked layer — the layer is welded into one rigid object: clicking any part selects the whole layer, and a drag translates it as one piece — internal constraints ride along untouched. When an outside link pins the layer (a Fix, a constraint to geometry on another layer, a coordinate-system reference, a driving dimension against outside geometry or the origin) the drag is refused with a hint — the layer moves whole or not at all, never partially. Per-object edits are blocked: node drags, resizing, trim/extend/fillet, re-placing its dimensions and deleting single objects all refuse (the Objects panel shows its properties read-only). Properties stay editable — Smart colour and multi-edit work on a locked layer, because locking restricts transforms, not appearance.
  • Selectable off — the layer stays visible, snappable and still bounds hatch regions, but no click, marquee, group selection or select-from-layer can pick it: the classic untouchable reference underlay. (Locked + Selectable off = not clickable, so not movable either; Hidden outranks both.)
  • DXF — layers travel with the file: layer 1 exports to the classic GEOMETRY / DIMENSIONS / ANNOTATIONS split, higher layers as L002…L256, and the same names import back to their numbers. Foreign layer names land on the active layer — the import report says which.

Transform, mirror & arrays

  • Mirror — reflected copies of the selected shapes across a line you pick.
  • Linear array — copies along an X/Y step.
  • Circular array — copies rotated around a centre.
  • Transform — move / rotate / scale the selection by exact typed values.

The marking menu

Hold the right mouse button on empty canvas for a quarter second and a radial menu opens under the cursor, mirroring the ribbon 1:1 — the same groups, the same tools, the same order, so muscle memory transfers between the two surfaces. Slide onto a group to fan out its tools, release over a tool to arm it; a quick right-click (or moving away) still does what it always did. With the Stack-up context active the ring offers the chain tools instead (Requirement, Vector, Guide line, Geo tol, Lock X/Y).

Single-key radial shortcuts open one category's ring directly at the cursor: D draw tools, C constraints, A annotations (dimensions, GD&T, notes). Scrolling the wheel while RMB is held cycles through the active group's tools — with the ring open it walks the highlighted ring instead.

Pin a tool. Hold LMB for 0.25 s over a tool — on the ring or on a ribbon button — and it pins: the tool stays armed after every use instead of one-shot disarming. Pinning covers draw tools, constraint picks, dimension / GD&T / note placement, region fill and the stack-up chain tools; Esc unpins.

DXF / DWG interchange

CAD exchange is split by intent between the two ☰ menus:

  • The DRAWING section's menu owns the editable exchange: Import DXF/DWG converts the file's geometry, dimensions and annotations into live sketch shapes you can edit, constrain and dimension; Export DXF writes the sketch back out (layers GEOMETRY / DIMENSIONS / ANNOTATIONS, millimetres; GD&T frames export as portable text). Export is DXF only — import reads both DXF and DWG.
  • The IMAGE section's menu carries Import DXF/DWG as image: the file is rendered to a PNG (saved next to the source) and attached as a background underlay — nothing editable is created, which is the right choice when the CAD file is only a reference to chain over.

12. Selecting analysis methods

Choose the verdict method in Requirements or on the calculation sheet. Enable RSS and Monte Carlo to include their results alongside Worst Case. The highlighted method determines the status; enabling a comparison does not change that selection.

  1. Check each contributor's DISTRIBUTION, SENSE and ÷2.
  2. Set the Monte Carlo sample count and targets in the project or Monte Carlo panel.
  3. Run the analysis and read the warning strip and per-temperature results.
  4. Use the seed control when you want to compare a repeated or fresh simulation.

For formulas, distribution conventions and limitations, use the White paper.

13. Temperature settings

  1. Set T MIN, T ROOM and T MAX on the Project tab.
  2. In Materials, enter a CTE or its temperature curve.
  3. Assign the material to each part in Parts.
  4. Enable the optional thermal columns and inspect all three result slots.

Nominals refer to T ROOM. Missing material or temperature input leaves the factor at 1; verify the setup before relying on the thermal result. For different part temperatures during assembly, use Shrink fit.

14. Results & reports

The Results tab has three sub-views:

  • Summary — one panel per requirement with its own chart: the three temperature rows (min / nominal / max per method) next to the Monte Carlo histogram (σ scale, Cp/Cpk, yield) or a hatched worst-case span. Click a temperature row to switch the chart; a separated MIN/MAX pair appears as one aggregated entry.
  • Charts — pick a requirement and a sample count, re-run with a fresh seed, and read three interactive charts: the Monte Carlo distribution at T ROOM (mouse-over readout), method ranges vs the requirement limits, and a contribution Pareto by variance share.
  • Statistics — a sortable grid, one row per requirement and temperature: WC MIN/MAX, RSS MIN/MAX, MC mean, σ, Cp, Cpk, yield %, status.

PDF report

One document for the whole project: identity, materials, parts, features, version history, then every requirement with its chain drawing, the contributor table (nominal, tolerances, ÷2, sense, contribution and its ±), per-temperature result tables and the contribution ranking (WC share, variance share). A footer spells out the conventions: contributions are mean-centred, the ± is a half-width, Σ Contribution ± Σ ± is the result band for ordinary rows. Linked material bonuses require separate endpoints; see Material bonuses.

Excel report

Export Excel writes a styled, client-ready workbook:

  • Summary — project identity, units, temperatures, the Monte Carlo sample count and seed (fixed seed → a re-export reproduces identical numbers), and a colour-coded verdict table of every requirement.
  • One report sheet per requirement — what is being checked, the stack-up drawing rendered to an embedded image, the contributor table (with a Note column carrying the grid's INFO notes verbatim and live Σ formulas), a plain-language "how the results are computed" section, per-temperature WC / RSS / Monte Carlo tables (yield, Cp, Cpk), embedded Monte Carlo histograms per temperature and the contribution ranking with data bars.
  • A parametric Calc sheet per requirement — every derived number is a live Excel formula over highlighted input cells (temperatures, limits, senses, ÷2, tolerances, α), so a reviewer can play what-if without the application.
  • Materials / Parts / Features / History reference sheets (History when version control is on).

The Calculations ribbon's Export sheet writes just the current requirement's report + Calc sheets. Shrink-fit sheets carry their fit parameters, the FIT states and the AT ASSEMBLY judgement in every export.

15. Units

The Project tab's Metric / Imperial toggle converts every physical value in the project — lengths (mm ↔ in), temperatures (°C ↔ °F) and CTE (1/°C ↔ 1/°F) — and is stored with the project. Dimension values display with 5-decimal precision.

16. Settings

  • Appearance — eight colour schemes: Light, Dark, Mono Light and Mono Dark (black-and-white), Solarized, Red Night (all-red, submarine-style — preserves dark adaptation for night work), Nocturne (deep dark with muted accents) and High Contrast (orange on black). Plus canvas background, drawing colours and text & interface size. All schemes are held to contrast floors for readability. The canvas background is a separate choice from the scheme, and the chain follows it: when you have not set a colour of your own, vectors, geometric-tolerance points, the requirement vector and the guides take their default ink from the background — held to a 3:1 contrast ratio against it, with the X and Y axes kept apart. A colour you set yourself, per vector or as a default here, always wins.
  • Behaviour — autosave interval, hints, default RSS / Monte Carlo for new requirements, author name for version control.
  • Diagnostics — opt-in event log written to %APPDATA%\F3Stack\debug.log.

17. Help, updates & troubleshooting

  • Help → Getting started — the quick-start summary, the sample project and this guide (see also The stack-up process for the full worked example).
  • Help → About — product, version, copyright, license status and Check for updates: a manual comparison of your build against the latest release on f3lab.tools. The application fetches version information over HTTPS without sending project data, a machine code or telemetry. Nothing installs automatically — if a newer version exists you get its notes and a link to the download page.
  • Help → Log — the diagnostic log. The Log technical data checkbox, when cleared, redacts every numeric value (dimensions, results, coordinates) from the displayed and copied log so it can be shared without exposing project data.
  • On a detected crash, the application attempts to write a report to %APPDATA%\F3Stack\crashes and attempt an emergency project save.

Common problems

SymptomWhat to check
Blank result after entering a formulaCheck =, feature IDs, N/U/L/G, parentheses, division by zero and reference cycles. L is a signed deviation. See Formulas.
Status “—”Check that at least one MIN/MAX limit is set and that contributors have assigned features with numeric values. An unknown status is not PASS.
Missing row value or incomplete resultCheck FEATURE ID, feature inputs and every formula result. A blank field is not a confirmed zero; read warnings and INFO.
Open chainCheck vector endpoints and guide connections. Visually overlapping lines alone do not prove connectivity. Close the loop by snapping to the requirement endpoint.
Editing one sheet changed anotherBoth use a shared feature. Undo the unintended edit; for independent inputs create another feature and assign it through FEATURE ID.
Results differ from the tutorialCheck the tutorial stage, units, signs, ÷2, CTE, temperatures, bonus formulas and internal/external feature setting. For MC, also compare distributions, sample count, seed and targets.
The application closed before savingOn restart, check the recovery prompt; when opening the project, check for a newer autosave. Save recovered work with Save As and compare it with your last manual save. See Autosave and recovery.

Project migration

Boundary rows: the older composer applied Ⓜ arithmetic even to RFS callouts. A stored boundary keeps its numbers and may reopen with Ⓜ selected. Compare that setting with the drawing; switching to RFS recalculates the envelopes. For example, a Ø10 ±0.1 shaft with position Ø0.2 gives 9.9 ±0.4 at Ⓜ, versus 10.0 ±0.3 at RFS.

Bonuses and results: opening a project saved before the change in bonus evaluation may show a one-time notice listing affected sheets. Review their WC, statistics and verdicts before using reports. Saving the project clears the notice. Preserve the original by saving the reviewed version under a new name. See Analysis methods and Material bonuses for current behaviour.

18. Keyboard shortcuts

KeysAction
← / →Previous / next section tab
Ctrl+Z / Ctrl+YUndo / redo (character-level inside an active text edit)
Ctrl+S / Ctrl+Shift+SSave project / Save As…

On the Calculations canvas:

Keys / gestureAction
D / C / AOpen the Draw / Constraints / Annotate radial ring at the cursor
Ctrl+C / Ctrl+VCopy / paste selected shapes · paste a drawing image
Ctrl+G / Ctrl+UGroup / ungroup the selected shapes
Ctrl+FFit the drawing to the viewport
EscCancel the in-flight gesture · disarm (and unpin) the tool · clear the selection
EnterFinish a polyline / spline
DeleteDelete the picked constraint · selected dimension / annotation · selected shapes / vectors / guides / images
Shift + clickAdd a node to the constraint pick set · square a guide to 90°
Ctrl + drag a nodeRotate the shape about its centre
Alt + dragMarquee-select vectors, guides, images and shapes
Hold RMB ¼ sOpen the marking menu · RMB+wheel cycles the active group's tools
Hold LMB ¼ s on a toolPin the tool — stays armed after every use
Hold LMB ½ s on canvasPick-disambiguation list (constraint badge / node / shape under the cursor)
Double-click a dimensionType a value — the geometry moves to match
Wheel · RMB dragZoom to cursor · pan

19. Trial & activation

Stack runs as a fully functional 30-day trial from first start; the remaining days show as a badge on the title bar. Activation is fully offline — no account, no server, no data leaving your computer.

  1. Open Help → About → License… and copy your machine code (format XXXX-XXXX-XXXX-XXXX).
  2. Send the code with your order to F³ Lab — you receive a license.lic file generated for this machine.
  3. In the same window choose Import license file… and select the file. The badge disappears and the About tab shows your license.
Notes. The license is bound to the machine it was issued for; moving to a new computer requires a new license file (contact F³ Lab). Perpetual licenses never expire; subscription licenses show their end date in Help → About. If the trial ends before activation, the application opens the activation window at startup and waits for a license.

20. Validation

The analysis engine is validated by an automated test suite against published worked examples from independent engineering sources — worst-case and RSS bands are asserted to the published digits, Monte Carlo against the analytic moments of the documented conventions. Two of those examples ship with the application as complete projects (with drawings) in the Examples folder:

  • pcb-enclosure-gap — PCB fit in a handheld enclosure (Gap = A − B − C): worst case fails the 0.10…0.90 spec, RSS passes — the classic argument for statistical tolerancing.
  • blocks-in-housing — three blocks in a housing (inches): gap 0.020, WC ±0.015, RSS ±0.00794.

Engineering results produced by the software are aids to analysis. Verify all results independently before making design decisions (see the EULA).

Stack by F³ Lab · © F³ Lab · User guide EN, revision 2026-09-07.
Reviewed against repository code labelled version 1.1.0. Older builds carrying the same version number may behave differently.