Assemblies & the Composer
The cross-section template a corridor sweeps along the alignment. Two tools share the work, the Civil-3D way: the Composer authors ONE subassembly’s internals as a flowchart; the Assemblies tab visually composes those subassemblies into complete assemblies.
Looking for a specific subassembly? The subassembly reference lists all built-in subassemblies and section presets with their parameters and the point / link / shape codes each one publishes.
The three geometry kinds
| Entity | Is | Becomes in the corridor |
|---|---|---|
| Point | A named position at an offset and height from the centreline. | A 3D feature line (stringline). |
| Link | A straight segment between two points. | A surface strip. |
| Shape | A closed area bounded by points. | A 3D solid (a pavement / material course). |
The Assembly Designer
Tools › Open Assembly Designer. It is corridor-independent — you design, save and edit here, and preview on a built-in demo alignment (a tangent → curve → tangent → spiral → curve, so the whole superelevation story is visible).
The flowchart (centre)
A program executed once per station. Nodes:
| Node | Does |
|---|---|
| Point | Create a named point from a reference + a method (offset, angle/distance, slope, intersection, on-surface, slope-to-surface daylight, …). Can also emit its link and choose whether it banks with superelevation. |
| Link | Connect two existing points. |
| Shape | Close a ring over a list of point names. |
| Variable (ƒ) | Define a value from an expression. |
| Decision (◊) | Run one branch or another by a condition (e.g. add a ditch only in cut). |
| Switch | Branch on a discriminant value. |
| ForEach (↻) | Loop a count, binding an index variable. |
| Output | Publish a named output value. |
| Mark / Report | Record a point for later reference / emit a diagnostic. |
Expressions
Every numeric field accepts an expression (names are case-insensitive; Civil-3D SAC formulas paste in directly):
| Category | Reference |
|---|---|
| Operators | + − * / ^ (power), comparisons
< <= > >= == !=, logic && || ! |
| Functions | if(cond,a,b), min max clamp abs sign,
sqrt pow exp ln log log10, sin cos tan asin acos atan atan2
sinh cosh tanh, floor ceil round trunc deg rad; constants
pi, e, station |
| Point members | P1.Offset (= P1.X),
P1.Y (height above origin), P1.Elevation,
P1.IsValid |
| Link members | L1.length, L1.slope |
| Targets | Name.IsValid, Name.Offset,
Name.Elevation for each declared target parameter |
| Superelevation | the eight cross-slope keys
(RightOutsideLaneSlope, …) and their SAC spellings
SE.RightLO / SE.HasRightLO … — station-tracked
when a corridor (or the preview slider) supplies a rate; PivotOffset |
| Cant (rail) | Cant.IsDefined, Cant.PivotType,
Cant.LeftRailDeltaElevation, Cant.RightRailDeltaElevation,
Cant.TrackWidth |
| Runtime flags | SA.IsLayout (1 in editor previews, 0 in a
corridor run), SA.IsInCut (ground above the attach point) |
2D Sketch
Draw the section directly — point, line and polygon (shape) tools — and the flowchart and sketch stay in sync. A snap indicator marks the snapped point; lines rubber-band while you drag.
2D & 3D Preview
- 2D Preview — the baked section at a station. The Codes toggle overlays code names; Fit resets zoom/pan; left-drag pans, the wheel zooms. With superelevation active it tilts with the slider and writes each link's live grade %.
- 3D Preview — the assembly swept along the demo alignment.
Packet Settings
| Tab | Contents |
|---|---|
| Input Parameters | The named inputs (lane width, slope, …) — change a number, not the geometry. |
| Output | The named graph the assembly publishes. |
| Target Parameters | Declared targets the geometry binds at corridor time —
Surface (a TIN to intersect / daylight against), Offset
(a lateral offset that overrides a point’s Delta X) and
Elevation (an elevation that overrides a point’s height).
Each row carries a Preview Value and an Enabled In Preview
check: in the editor an enabled target stands in as a flat guide line at that value
(drawn labelled in the sketch), and clearing the check tests the
target-not-found branches — exactly Civil 3D’s preview semantics.
Points reference a declared target from dropdowns in their properties;
expressions read Name.IsValid / Name.Offset /
Name.Elevation. The combo above the table binds the corridor’s
real target surface. |
| Cant | Rail preview stand-ins mirroring Civil 3D’s Cant tab:
CantPivotType (Left Rail / CenterLine / Right Rail), the rail
point names, delta elevations and the track gauge. They feed the
Cant.* expression identifiers in editor previews; in a corridor the
real per-station cant takes over (see Corridors). |
| Superelevation | The Auto superelevation from curvature toggle, the design Standard (AASHTO / RAL / VSS / KGM) and design speed, and the per-lane / per-shoulder cross-slope table. See Superelevation & widening. |
The Assemblies tab — the visual builder
The project’s assemblies live as blocks in the Assemblies tab, and that is where you build them:
- New Assembly starts a fresh assembly (a lone CL origin).
- Click a block to select it; click one of its point markers to pick the attach point (an orange ring marks it — the hint line above the workspace guides each step).
- Double-click a subassembly in the left Subassemblies palette — or simply drag it onto a marker — to compose it there. Each placement gets its own independent parameters (two Lanes → two widths), and its points/links/shapes stay fully editable in the Composer.
- The right Parameters panel edits the selected assembly in place, grouped per placement (Lane1, Curb2, …).
- Save to Library… exports the selection as a library file; right-click a block › Edit in Composer opens its flowchart bound to the project instance (edits are undoable document edits).
Conditional subassemblies
The palette’s built-in Conditional element is the Civil 3D conditional subassembly: everything attached behind it is processed at a corridor station only while its condition holds. Pick an attach point and double-click Conditional; the dialog offers three condition kinds:
- Horizontal Target — a target alignment/offset is Found (or Not Found) within a Minimum–Maximum distance window of the attach point. The distances become regular parameters (Cond1_MaximumDistance, …) editable in the Parameters panel.
- Marked Point — the same window test against a marked point
set elsewhere in the assembly (
Mark Pointin the Composer). - Cut or Fill — the attach point sits in a Cut (surface
above) or Fill (surface below) situation against a surface target;
Minimum/Maximum bound the cut depth or fill height
(continue while
min ≤ depth < max). - Expression — any flowchart expression
(
Mark.MP.IsValid && LaneWidth > 3).
The workspace draws the conditional as a dashed diagonal marker (sloping down for Found, up for Not Found — the Civil 3D convention) that stays visible even when its branch doesn’t bake. Attach the guarded subassemblies to the diamond at its endpoint; attach a second Conditional with the opposite type to the same point to build a Found / Not Found pair whose branches are mutually exclusive.
Importing Civil 3D subassemblies (.pkt)
Assembly Designer › File › Import Civil 3D PKT… converts Subassembly Composer packages — including the whole stock catalog shipped with Civil 3D — into library subassemblies. Parameters (with display names and descriptions), target parameters (with their preview values), the full flowchart (decisions, switches, loops, curves, fillets), codes and the catalog description all carry over; a summary dialog lists anything that needed a stand-in (open Show Details). Imported subassemblies appear in the palette and behave like native ones.
The assembly library
The Assembly Library dock is a program-level library — assembly files stored next to the application, independent of any project.
- Drag a library assembly onto the Assemblies tab (or double-click) to import a copy into the project.
- Each import becomes its own project assembly with a unique name, remembering the source it came from and its own parameter values — so you can import the same source many times with different names and parameters.
- Edit from the browser opens the source in the Designer; Save to Library writes it back beside the application. The save dialog’s Kind chooses Assembly (a whole cross-section) or Subassembly (a composable part — requires exactly one Origin point, its insertion point).
Assigning to a corridor
Bind assemblies to corridor regions on Corridor Properties › Parameters (the Assembly column). See Corridors.