Batch-labels every feature-line segment on a chosen layer with its slope and optionally point elevations: at the first and last point, at every PI, at every PI plus every elevation point, or at the elevation points only, per the dialog's points-to-label radio group, as native Civil 3D labels (v1.34+): slopes are segment labels whose style (default
Grade) computes the grade LIVE, elevations are surface spot-elevation labels (default style Spot) reading the graded surface LIVE. Values follow every regrade with no refresh pass.
Feature line + PIs
Slope label (per segment, LIVE)
Spot elevation label (LIVE)
Curve seg (curve style)
First / last PI
What it does
- Collects feature lines on the chosen source layer (or all feature-line layers), host model space only.
- Per segment: one native segment label; the style (dropdowns, defaults
Grade/Gradefor line / curve) computes the grade LIVE, regrades and geometry edits flow into the plotted number by themselves. - Point elevations: surface spot-elevation labels (style dropdown, default
Spot) on a chosen surface (blank = the drawing's only surface), also LIVE. Scope radios: first & last point only, every PI, every PI + every elevation point, elevation points only, elevation points being the Z-only grade breaks a PI-only pass would miss, or only where the grade changes: the ends plus every vertex whose grade in and out differ by more than the tolerance (default 0.10 %), for sheets that show spots instead of slope labels; same-grade vertices are counted in the summary. Coincident points are deduped. - Appearance (size, precision, sign, rotation, dragging) is the label style's business, no text-height math, no CANNOSCALE re-runs.
- XData tag
VDC_FLLABEL(kind, source layer, anchor XY) scopes wipes and identifies our labels. - Curves: arc segments get the curve label style and measure the true arc length. Label curve radii adds one live label per curve segment in a curve style whose contents show the radius (blank = the first style named Radius, else the curve grade style); kind
Rso the scoped wipe clears them too.
Modes & settings
- Run (default): dialog, then relabel, wipe scoped to the source layer, so pads then swales stack additively;
<All>= full reset. Old MText labels (pre-v1.34) are wiped/converted by the same rule. - Refresh: values are live, so Refresh only relocates elevation anchors when an endpoint moved (
RefreshMatchTolerance 5.0) and updates any legacy MText labels in place. - Pick: click feature lines one at a time; ESC to finish.
- Label layer
0-NPLT(non-plotting, auto-created);MinSegmentLength 2.0skips shorts. - Toggles:
LabelSlopes,LabelEndElevations; style + surface picks persisted to JSON. - Unknown style names fall back to the drawing's default styles (noted on the command line).
Dialog

VDCFLLABELSettings file:
%APPDATA%\VDC\LabelFeatureLines\curbradii.json | %APPDATA%\VDC\LabelFeatureLines\settings.json | %APPDATA%\VDC\LabelFeatureLines\tcbc.jsonWhen to use it
- Annotating grading feature lines with slopes and spot elevations.
- Values never go stale - re-run only to cover new/moved feature lines.
How to run it
- Run VDCFLLABEL - the dialog opens with the mode dropdown (Run / Refresh / Pick) and every option.
- Run and Refresh process every feature line on the chosen layer across the whole drawing - no window step; Pick still labels only what you select.
- Choose the source layer of the feature lines to label.
- Pick the line/curve label style (default "Grade") and, for elevations, the surface + "Spot" style. Tick "Label curve radii" for one live radius label per curve segment (style blank = the first curve style named Radius).
- Pick the points to label: first & last point only, every PI, every PI plus every elevation point, elevation points only (the Z-only grade breaks), or only where the grade changes - ends plus every vertex whose grade in and out differ by more than the tolerance (default 0.10%), for sheets that show spots instead of slope labels.
Options
- Run: label the feature lines on the chosen layer across the whole drawing (old MText labels are wiped/converted).
- Refresh: relocate elevation anchors after geometry moves and update legacy MText labels, across the whole drawing.
- Pick: label only the feature lines you select - no window prompt, your picks are the bound.
Watch out for
- Elevation labels read the SURFACE - the feature lines must be baked into it (Auto-Grade Lots does this).
- Set the correct source layer or nothing is labeled.
- Every-vertex scope on long feature lines places a lot of labels - keep it for pads and short grading lines, or plan to declutter.
- Run and Refresh cover every feature line on the layer in one pass; use Pick when you want to label only a selected subset.
Related: Auto-Grade Lots · Pad Label · Refresh All