Horizontal alignments
The centreline — a continuous, station-referenced path of tangents, circular curves and clothoid spirals. Every surface, corridor, profile and section refers back to it.
Segment types
| Segment | Geometry | Defined by |
|---|---|---|
| Tangent | Straight line; constant bearing, zero curvature. | Start point, bearing, length. |
| Circular curve | Constant-radius arc; curvature κ = 1/R. | Radius (signed by turn direction) and arc length. |
| Clothoid (spiral) | Euler spiral; curvature changes linearly along its length. | End radius and length; the transition between a tangent and a curve (or two curves). Where superelevation runoff naturally lives. |
km+m.mm
(12+345.00). Bearing = degrees, 0° = North (+Y), clockwise.
Radius is stored signed: positive turns right, negative turns left.
Drawing in Plan
- Draw › Alignment (Ctrl+Shift+A) — click PIs to lay a tangent chain. Endpoints snap to nearby vertices.
- Draw › Curve (Ctrl+Shift+C) — fit a circular curve by PI + radius.
- Draw › Spiral (Ctrl+Shift+S) — add a clothoid by end radius + length.
- Esc — finish the tool.
The Alignment Builder dock
The precise, numeric way to build and edit. One row per segment, with these columns:
| Column | Editable? | Meaning |
|---|---|---|
| # | no | Segment index (0-based). |
| Type | no | Tangent / Curve / Spiral. |
| Start s | no | Cumulative start station (m). |
| Length | yes | Segment length (m); double-click to edit. |
| End s | no | End station (computed). |
| Radius | curves only | Magnitude shown; sign follows the turn direction. |
| Params | no | Tangent: bearing X°. Curve: left/right. Spiral: R: start → end (∞ for a straight end). |
Tangent lock (reflow)
The Tangent lock checkbox (default on) controls how edits propagate:
- On — editing a Length or Radius reflows every downstream segment to keep the centreline continuous (Civil-3D behaviour). Grip drags keep the PI tangent.
- Off — each segment is edited in place at its own anchor; gaps and kinks are allowed.
Add / Insert / Delete
| Action | Fields (defaults) |
|---|---|
| Add Tangent | First segment: E, N, Bearing, Length (0, 0, 0°, 50 m). Subsequent: start E/N/bearing locked to the previous end, only Length editable. Bearing 0–720°, length ≥ 0.001 m. |
| Add Curve | Radius (100 m, ≥ 0.01), Arc length (50 m), Direction (0 = right, 1 = left). Needs at least one segment first. |
| Add Spiral | End radius (100 m), Spiral length (30 m), Direction (pre-matched to the previous curve). Length must be > 0. |
| Insert … | Same fields, but spliced above the selected row and re-anchored to the previous segment's end. |
| Delete Selected | Removes the row and re-anchors the rest; refuses to empty the alignment. |
Deriving alignments from existing geometry
| Command | Result |
|---|---|
| Offset Alignment… | A true parallel alignment at a signed offset — per-element, so curves stay concentric (not a flat shift). You also give a cross-fall (default 2 %): when the parent has a design profile the offset gets one too, following the parent's crown dropped by cross-fall × offset. Both the plan AND the profile are dynamic — edit the parent's geometry or profile and every bonded offset re-derives. |
| Alignment from Corridor… | Extract a centreline from a corridor edge / feature line. |
| Corridor Feature Lines (all)… | Extract every breakline string from a corridor at once. |
| Alignment from Existing (copy) | Duplicate an alignment. |
| Best Fit Alignment… | Least-squares alignment through a cloud of points. |
| Connected Alignment… | A fillet (tangent–arc–tangent, given a radius) joining the END of one alignment to the START of another — the manual curb return. It is bonded to both parents, so when a parent's end moves the fillet re-solves, and its profile re-ties to the two parents' levels. This is what lets you build an intersection by hand: offset the road edges, connect them into curb returns, and the whole web stays live under a centreline edit. |
| Tie Profile to Crossing… | The manual Knotenpunkt level lock: pick a reference road (keeps its profile) and a road to adjust; the adjusted road's VPI at the crossing is moved — or inserted — so both centrelines meet at one design elevation there. An intersection is a single physical point, so this must hold or the curb returns and pavement come out wrong (see Junction level in the Design Issues audit). Undoable. |
| Junction (Intersection)… | The Civil-3D-style Create Intersection wizard where two alignments cross: pick primary/secondary road, corridor type (all crowns / primary crown maintained), curb radius (uniform or per corner) and half-widths. It generates the connected alignments (four curb-return arcs with tied profiles + four edge offsets, optional turn-lane flares) and — with Create intersection corridors on — builds the corridor model from an assembly set: one assembly per section type (Curb return fillets, Primary road through section, Secondary road through section). Each entry can be an existing project assembly, or (auto) creates a ready-made flow assembly (Point/Link/Shape, editable in the Composer) under Intersection Assemblies. The four curb-return fillets are bundled into ONE multi-baseline corridor (Civil-3D style: the curb returns are baselines of a single Intersection Corridor), each baseline carrying its own assembly and width targets and staying live when a road moves. Roads that already run a corridor get their box region split and re-assigned; roads without one get a corridor covering just the intersection box. An intersection is a single physical point, so both centrelines must reach it at the same design level; leave Tie road B's profile to the crossing level on (the default) and the secondary road's VPI at the crossing is moved — or inserted — to meet the primary's elevation, as one undoable edit. The tie is live: edit the primary road's profile or geometry later and the secondary re-ties itself at the crossing (editing the secondary is left to you, and any drift shows in the audit). Switch it off and you are warned instead, and the mismatch keeps showing in Design Issues as Junction level: nothing downstream errors on it, so an untied intersection looks built but is wrong. Editing a junction's curb radius or half-widths in Properties (per-corner radii and the crown type are editable there too) regenerates the curb returns, the edges and the carved box. The standalone crown-aware pavement TIN is opt-in (off by default) — the corridor model itself is the intersection surface. The same model can be assembled manually: create your own curb-return / edge alignments, run corridors on them, then split regions and assign assemblies per region in Corridor Properties. |
| Roundabout (Kreisel)… | The VSS 40 263 Create Roundabout wizard. Check the leg alignments (a road passing through contributes two arms — the centre lands on the crossing of the first two checked legs) and leave the dimension fields at 0 to take them from the loaded design standard: ICD mid-range for the location (inside/outside built-up), circulatory width from the norm’s Fig. 5 curve, entry radius Rc2 and exit radius Ra2. The wizard generates the circulatory ring (a real full-circle alignment) and per arm the entry/exit curb arcs, each tangent to the leg edge and the ring — all normal, editable alignments grouped under the roundabout. The system is live: move a leg and the arcs re-solve; edit the ICD or radii in Properties and the model regenerates. Manual design works two ways: edit any generated piece by hand and it freezes (regeneration keeps your version from then on), or draw your own ring first and pick it under Circulatory ring — the roundabout adopts it, taking centre and diameter from your circle (accepted by measurement: any closed constant-radius alignment qualifies, whether one 360° arc or four 90° arcs). In Plan the roundabout draws its inscribed circle, island edge, inner-ring boundary and splitter islands live from the parameters; clicking any of them selects the roundabout. On creation the status bar reports the achieved deflection of the fastest through path (VSS 40 263 §17 demands > 45 gon — the anti-speeding core of the design); With Create the roundabout corridor on, ONE multi-baseline corridor is built: the circulatory carriageway on the ring (auto-created lane assembly at ring width) plus an apron baseline per entry/exit arc — and the ring rides a plane profile fitted through the leg levels at the arms (VSS: the whole roundabout lies on a plane ≤5 %). Carve leg corridors yields each leg corridor’s span inside the circle to the ring (nothing double-bakes). The corridor refreshes in place on regeneration, and assembly reassignments made in Corridor Properties survive. The always-on Design Issues audit re-checks every roundabout live against the standard: through deflection per entry (< 45 gon shows hard/red), circulatory width against the Fig. 5 curve, the ICD range for the location class (an Inside built-up area toggle in Properties), and the plane slope over 5 % — each issue carrying its norm citation. Headless callers run the same engine command as road.roundabout.create. |
| Multi-Leg Intersection… | A T / Y / N-way junction of several crossing alignments. Each leg can be checked on/off and given its own half-width, so a wide arterial can meet narrow side streets. One curb radius rounds every corner, or tick Different radius per corner to set each curb return individually. Tick Create curb-return corridors (assembly set) to build one fillet corridor per corner — a real 3D pavement apron bound to a chosen (or (auto)-created) fillet assembly and widening to the two adjacent leg edges, the multi-leg analogue of the 2-road assembly set. Tick Split crossing corridors (box + through sections) to carve the intersection box into the corridor already running on each leg and bind that leg's through section — the first checked leg is the primary and keeps its section across the box, while the others yield the middle to it, exactly like the two-road junction. A leg with no corridor of its own gets a box-only corridor covering just the intersection. Add turn-lane widening flares a turn pocket in on every leg (per-side), emitted as edge alignments tied to each road's profile — and optionally built as real corridors (3D pavement bodies) with a chosen assembly. |
Sight distance
Tools › Sight Distance Analysis… checks how far
the driver can actually see along a road, against the stopping sight
distance the loaded design standard requires at the
local design speed (the V_P bands). The sweep casts a true 3D sight line
from the driver’s eye (standard eye height, mid-lane offset) to a low object ahead and
tests it against the ground surfaces and — optionally — the road’s own baked
corridor surfaces, so a crest hides the target behind the design surface and an
inside-curve cut slope blocks it laterally (the VSS 40 090b Fig. 3 envelope,
computed). Results come back as pass/fail station bands with available vs
required distances. The always-on Design Issues audit runs the same sweep
coarsely against the terrain and reports each failing band as a cited hard issue; headless
callers run road.sight.analyze. After a run, the Profile shows a SIGHT band under the grid (green = pass, red = fail) and the Plan flanks the failing station ranges in red. The audit also checks visibility triangles (VSS 40 273a): at every junction the yielding driver — observing from B = 3 m (5 m outside built-up) behind the priority road’s edge — must see the Tab. 1 sight distance along it in both directions at the local design speed, and every roundabout entry must see the required distance along the ring; blocked sight lines appear as hard, cited issues.
Modifying
Move (by X, Y), Rotate (around a
pivot), Mirror (across an axis/point) and
Delete act on the selected alignment — also on the
command line as MOVE / ROTATE / MIRROR /
DELETE. Editing an alignment automatically rebuilds every corridor
that references it (and extends a too-short vertical profile so the 3D ribbon
doesn't stop short).
Design-speed bands (VP)
A road does not have one speed. Swiss practice (and the design standards generally) separates VA — the stretch-wide speed that fixes the extreme elements and the cross-section — from VP, the point-wise speed that a location actually permits, which governs sight distance, vertical rounding and the superelevation assessment. The project speed in Tools ▸ Design Standard is the VA; the VP profile lives on the alignment as a list of bands.
Right-click the alignment in the Object Browser and choose
Derive Design-Speed Bands: each circular arc takes the
speed its radius permits from the standard's VP table (an
intermediate radius takes the next tabulated speed up),
tangents take VA, and a transition curve inherits the slower
of its neighbours. Tune the result in Properties as
station=speed; station=speed....
The audit then evaluates every speed-dependent rule at the local VP — minimum radius, minimum arc and maximum tangent lengths, crest and sag K-values — so a tight curve designed for 60 km/h is judged at 60, not at the project speed. It also checks the standard's speed diagram: where VP drops, the preceding element must be long enough for the driver to slow down at 0.8 m/s², otherwise the drop is reported as a Speed step.
Station equations (broken chainage)
When a revision shortens or lengthens a stretch after the chainage is already in drawings, stakes and land-acquisition files, re-numbering the whole road is not an option. Instead you place a station equation at the splice: everything before keeps its numbering, everything after continues from a new value — the classic «2+500 back = 2+580 ahead».
Enter them in the Properties dock of the alignment as
raw=ahead; raw=ahead... where raw is the true
distance from the alignment start and ahead the station to
display from there on; append d to make the numbering
count down after the point. Station labels in Plan, the Profile
station band and VPI labels, section captions and the Design Issues list
all switch to the project's numbers immediately.
Equations change numbering, never geometry. Every
computation — sampling, corridor bakes, volumes, exports of
coordinates — keeps running on the true distance from the start,
so adding an equation can never move the road. LandXML import/export
carries them as <StaEquation>.
Design checks
Each circular curve is checked against the minimum radius for the active standard and design speed. Substandard curves are listed in the Design Issues dock (double-click to jump to the station) and marked on the Plan. The radius formula and the per-speed friction table are in the Formula reference.
Worked example
A 60 km/h road (AASHTO, emax 8%, f at 60 km/h = 0.17):