PMI Workbench
Id: pmi · Sixth entry in the workbench dropdown
PMI (Product and Manufacturing Information) annotates a finished model without touching its feature history: dimensions with tolerances, notes and leaders, hole callouts, datums and feature control frames (GD&T), plus exploded views — organised in PMI views, each a saved camera and display state with the annotations it owns. The annotations are real PMI: the STEP exporter writes them as AP242 semantic PMI with saved views, and the importer reads AP242 PMI back into live annotations. Views are the unit a drawing sheet places — sheets are the Drawing workbench's, where a saved view goes on paper and is drawn with hidden lines removed and its annotations beside it.
What it offers
PMI creates no features. It adds:
- the PMI panel — the view tree;
- the Capture view toolbar
button (
pmi.capture_view, always offered), which snapshots the camera and visibility into a new active PMI view; - the Annotations group on the workbench actions strip (in PMI and All): one button per annotation type, in the order of the table below. A button adds that annotation to the active view with its reference fields filled from the selection, where it fits, and opens its dialog; with no active view it says so instead;
- the context bar's annotation offers, one per type whose rule accepts the selection, shown only while a view is active.
The workbench is the editing mode
Switching to PMI enters PMI editing: the modeling camera, hidden objects and wireframe setting are remembered. Exactly one view can be active at a time; activating a view applies its camera (refit to the current viewport), its hidden objects (its Hide body steps — what was hidden when it was captured is its first, baseline step), its wireframe setting and its explode offsets, and draws its annotations. Deactivating a view — switching to another, unticking it, or leaving the workbench — restores the remembered modeling state.
While a view is active, hiding or showing a body anywhere — the Scene tree's eye, the context bar's Hide, a BOM row's visibility box — and the toolbar's wireframe toggle are edits of that view (each one undo step): a hide adds a Hide body step, a show takes the body out of the view's steps (a hidden component keeps its other bodies hidden), so leaving and re-entering the view, its drawing sheets and its 3D PDF all show the same thing. To un-hide from the PMI pane, delete or suppress the step. A committed sketch's visibility is the sketch's own (the Scene tree's sketch checkbox), never a view's.
Orbiting while a view is active never rewrites its camera silently; Update camera in the view's row menu re-captures it. Annotation creation is gated on an active view: with none, the panel's summary line reads no active view and the context bar offers nothing. Everything is persisted live in the part file — there is no Finish or Cancel.
Annotation types
| Type | Id | Anchors to | Value |
|---|---|---|---|
| Linear dimension | DIM | two of vertices / edges / faces / planes, or one straight edge | the distance (optionally its X / Y / Z component) |
| Radial dimension | RAD | a cylindrical or spherical face or a circular edge | radius or diameter |
| Angle dimension | ANG | two planar faces / planes / straight edges | acute, obtuse or reflex |
| Leader | LEAD | one or more vertices / edges / faces | free text |
| Note | NOTE | a world point (the label) | free text |
| Hole callout | HOLE | a hole wall or its circular edge | d depth / THRU ALL, countersink , counterbore , optional N× |
| Datum | DTM | a face or edge | the datum letter (A–Z skipping I, O, Q; unique per part) |
| Feature control frame | FCF | a face or edge | characteristic, tolerance ( zone, /), up to three datum references |
| Explode body | EXP | solids / components | a display-only pose delta while the view is active |
| Hide body | HID | solids / components | a display-only hide step: the targets stay out of the view while it is active (nothing is drawn for it) |
| Find-number balloon | BAL | a component or its geometry | the occurrence's BOM Find Number, read live; the arrow head lands on the nearest point of the part's surface in screen space, or on an optional picked vertex / edge anchor |
Every drawn type has an annotation plane (the Annotation plane field, optional):
pick a planar face or a reference plane and the annotation lies in that plane — its
label projects onto it, dragging the label keeps it there, the dimension / extension lines
and the datum / FCF frames are drawn in it, and the STEP file places its ANNOTATION_PLANE
on it. Leave the field empty and the annotation aligns to the view camera instead (the
natural choice for leaders and notes). A picked plane must be parallel to what it carries —
a linear dimension's direction, an angle's plane, a circle's plane — or the annotation
reports an error rather than drawing a foreshortened line. A drawing sheet draws EVERY
annotation of the view it places, each one projected through that view's camera; whether its
text is laid flat on the paper or drawn as it lies in the plane is the placement's Flatten
text to sheet checkbox, which is on by default.
The three dimension types carry a tolerance block — none, symmetric (±), deviation
(+upper/−lower) or limits (upper / lower values) — a decimals count and a reference
flag (parentheses, no tolerance). Every value is a kernel measurement of the exact B-rep
(carrier lines, plane spacing, face metadata radii), never a tessellation read; a rebuilt
model re-resolves every annotation, and an anchor that no longer exists puts that one
annotation into an error status without aborting the view.
Feature control frames offer all fourteen ASME Y14.5-2009 characteristics (AP242 defines an entity for each; concentricity and symmetry stay available even though Y14.5-2018 retired them). A form tolerance takes no datum reference; orientation, runout, concentricity and symmetry need at least one; position and the two profiles may take up to three or none. Every referenced datum must be defined in the part.
Typical workflow
- Set up the viewpoint and hide what should not show, then press Capture view (or the panel's Capture view). The new view is active.
- Select geometry in the viewport — two faces, an edge, a cylinder wall — and pick the annotation from the context bar or the Annotations buttons on the actions strip, or use the panel's + Add annotation, and fill the remaining reference fields through the picker.
- Drag the label chip in the viewport to place it; double-click it to open the annotation's dialog (tolerance, decimals, style …), or right-click it for its menu — Edit, Move up / down, Delete. Delete removes the selected annotation. Pick the Annotation plane there — a planar face for a dimension that should lie on that face, empty to face the camera. Hover a chip or a panel row to see what it references. While a reference pick runs, a chip does not take the click: it goes to the part under the chip, as if the chip were not there.
- Capture more views for other viewpoints. Rename a view in its row; switch views by ticking them.
- Export STEP: the file carries the geometry AND the PMI (see below).
To put the views on paper, switch to the Drawing workbench.
Where the data lives
The part file's pmi block: { views: [{ id, name, camera, display: { textSizePt, wireframe, section }, annotations: [{ type, enabled, inputParams, labelWorld }] }], idCounter }. What a view hides is only its hide annotations; a file saved before
2026-11-05 with a display.hidden list opens with that list as the view's baseline step. References are kernel entity names (component geometry included); a vertex is
{solid}@x,y,z in world coordinates. Which view is active and which annotation's form is
open are session state, never saved. Documents without PMI carry no block.
STEP
Export writes an AP242 file: every annotation becomes semantic PMI (DIMENSIONAL_LOCATION
/ DIMENSIONAL_SIZE / ANGULAR_LOCATION with nominal values and ± or limit tolerances,
DATUM + DATUM_FEATURE, the geometric tolerance entities with datum systems, material
modifiers and zones) attached to the faces / edges / vertices through shape aspects, plus
the standard graphic presentation — lines, arrowheads, frames and the text itself as
polylines (the viewport's chips and the file's strokes come from one layout) — on
ANNOTATION_PLANEs (the view's, and one per picked plane) and one DRAUGHTING_MODEL +
CAMERA_MODEL_D3 saved view per PMI view. Import reads
the same back: dimensions, tolerances, datums, frames and saved views arrive as live
annotations on the imported body, an annotation plane that coincides with a planar face
becomes that face's plane, and plain 3D text becomes notes. A STEP file imported as an
assembly keeps its PMI too: an annotation the file attaches to a part goes into that
part's document (once for the part, however many instances place it), and one the file
attaches to a single instance goes into the assembly document naming that component's
geometry, so the panel lists it here. See File formats.
Toolbar buttons
| Button | Id | Offered | What it does |
|---|---|---|---|
| Capture view | pmi.capture_view | always | snapshot the camera and visibility into a new active PMI view |