When Civil 3D subassemblies share the same underlying link code, label styles assigned through a Code Set Style are applied to every matching link. This can result in duplicate labels and makes it difficult to display different slope formats for different parts of an assembly - for example, showing pavement grades as a percentage while displaying shoulder slopes as a rise-to-run ratio.
Example:
In this example, a Lane subassembly is paired with a Shoulder subassembly. The goal is to display format as:
• Lane links: as Grade (%)Â
• Shoulder links: as Slope (X:1)

Â
THE PROBLEM:
Reviewing the Autodesk Help documentation shows that both the Lane Superelevation AOR and Shoulder Extend All subassemblies assign the same codes to their top links (L1)
| Lane Superelevation AOR | Â Shoulder Extend All |
|
https://help.autodesk.com/view/CIV3D/2026/ENU/?guid=GUID-98C93726-64C9-42D9-8213-9CBCD95CBFA9
|
https://help.autodesk.com/view/CIV3D/2026/ENU/?guid=GUID-904838B2-5B98-42CB-A605-75D1747792CB
|
Because both subassemblies use the Pave link code, any label style assigned to that code through the Code Set Style is applied to both links. The result is duplicate labels using the same formatting, even though different formats are desired.
Â
THE SOLUTION:
The solution is to create two expressions that control the visibility of label components based on the slope value:
| Grade Show | Slope Show |
|
This expression displays labels only when the slope is less than 10%, making it ideal for pavement grades displayed as a percentage.
|
This expression displays labels only when the slope is 10% or greater, allowing steeper shoulder slopes to be shown in a rise:run.
|
Once both expressions have been created, use a single label style containing two text components:
| Grade Text Component | Â Slope Text Component |
|
Assign the Grade Show expression to the component's Text Height property.
|
Assign the Slope Show expression to the component's Text Height property.
|
 As the assigned slopes within the subassemblies change, the labels automatically switch between displaying Grade (%) for flatter pavement links and Slope (X:1) for steeper shoulder links. 
This approach produces cleaner sections and more accurately communicates the design intent without requiring separate label styles or manual editing.
If you enjoyed this post, you might enjoy some of our other posts where expressions are applied to Civil 3D Labels:
• Hiding Zero Length Corridor Lables
• Hiding Corridor Vertical LabelsÂ
• Dynamically Spaced Line bearing & distance
• Slope Arros that Alwasy point Downhill
About the Author
More Content by Leo Lavayen















![Failed to retrieve a Autodesk Vehicle Tracking license [Error code 3- this product has not been registered with the licensing service yet]](https://content.cdntwrk.com/mediaproxy?url=https%3A%2F%2Fres.cloudinary.com%2Fuf-554092%2Fimage%2Fupload%2Fv1781788620%2FVTError_gp5cfk.png&size=1&version=1784012402&sig=90d6bf9682772a28997f22a8034d6215&default=)












