Here’s an issue I ran into recently. A client of mine was creating profile views for his sheets and noticed that the grade labels where always at the midpoint of the line. The problem with this is if less then half of the line was being displayed in the profile view, there was no label to display! So, after thinking about it for a few moments, I came up with a solution.

The Problem

By default, when a grade label is placed on the tangent line of a profile it is placed at the midpoint of the line. If you are using only one profile view for the entire profile, this is no big deal at all. However, if you have your profile split up into multiple views, the grade label for the line will only show up if the midpoint of the line is within the station range of the profile view.


One profile line, three profile views, one label

I don’t want this, I want the grade label to show up in ALL profile views regardless of how long the line is. So, here’s the solution.


The Solution

Here’s what I came up with, if I attach the label to the feature, my only options are to attach it at the beginning, middle, or end of the line. Well, I want it to be half way between the start of the line in the view and the end of the line in the view so, create line that goes from those two points.


Create line within label style

The basics of this line is you want it to anchor the start and end to the feature (in this case, the feature is the line) and you want it to start where the line starts in the profile view (Anchor Tangent Start in View) and end where the line ends in the profile view (Anchor Tangent End in View). I don’t necessarily want to see the line in the profile view so set the visibility to “False”.


Now, we have something that will always be drawing in our profile view if there is a line in the view and now I can attach the label to the middle of that line.


Attach label to the middle of the line

Once this is done, if the profile view has even the smallest bit of the line being displayed, the line will be labeled.


One profile line, three profile views, three labels

Will I provide you with a drawing that contains this label style? Nah. It’s pretty simple. Just go create it yourself!


<note: In Civil 3D 2018.1, there are some new system variables that deal with these glyphs so go install it now! Just start typing “labelover…” and the autocomplete will finish it off for you>

So, you’ve downloaded Civil 3D 2017 Service Pack 1 to fix those pesky issues. Which issues? These issues. Great, so you close out of Civil 3D, install the service pack, and the next time you’re in your drawing, you notice a whole bunch of warning symbols!


Glyphs Glyphs Everywhere!

What are these things? Well, they are a new feature that was added to Civil 3D 2017 in Service Pack 1. They let you know when a label has a text override. If you hold your mouse over the glyph, it will tell you what it’s there for.


Tooltip when hovering over glyph

Just like the other warning symbols in Civil 3D, when the drawing is regened (run the REGEN command), the glyphs will always go back to a certain percentage of the screen size (I’m not exactly sure what that is and I don’t have a ruler handy to do the calculations).

I can see these symbols pretty much taking over a drawing so, how do you turn them off? Well, there are two ways:
1) Don’t override the text in your labels. I didn’t say they were both GOOD ways.
2) Turn off all the symbols like this in your drawing. I didn’t say either way were GOOD ways!

Yup, if you want them turned off, you have to disable the display of ALL of these warning symbols (Pressure Network Design Checks, Alignment Tangency Checks, Alignment Design Criteria Violations, Profile Horizontal Changes, etc.). To do this go into your AutoCAD OPTIONS and on the AEC Editor tab you’ll see a section called “Solution Tips” (these symbols are called “Solutions Tips” apparently). The two radio buttons allow you to control if you see the tips when drafting (i.e. in your drawing) and when your plot.


Solutions Tips

I suppose the other option is to simply not install Service Pack 1. If you aren’t having any of the issues it says it fixes, and you don’t want these obnoxious symbols all over your drawing, I don’t see any super compelling reason to install it.

What do you think? Do you like the symbols? Do you hate them? Personally, I’ll give them a try. I always recommend to people that when Autodesk does something new to the software, give it a month. If after a month you don’t like it, then go back to the way it was. Now, if I could only figure out how to go back without uninstalling the service pack…


This question came up the other day in Civil Chat, “Is there any way I can add custom properties to a pressure part in the catalog in such a way that I can add that property to a label?”

The short answer is, “YES”.

To do this, you’ll simply need to edit the catalog in the Content Catalog Editor.

Open the Catalog

To open the catalog, you’ll need to use the Content Catalog Editor. This can be found in the same location in the start menu as whatever version of Civil 3D you are using (provided it’s version 2013 or newer).

Content Catalog Editor in Start Menu

Content Catalog Editor in Start Menu

I always recommend to leave the default files that come with Civil 3D alone when possible. In other words, make a copy of the catalog and then edit the copy. To do this, simply open the catalog and save it as a new catalog. The default catalogs that come with Civil 3D are found at “C:\ProgramData\Autodesk\C3D 2016\enu\Pressure Pipes Catalog\Imperial” (adjust for your version and unit use).

Edit a copy

Edit a copy

Now that you have the catalog open and saved, simply choose the part you want to add the custom properties to. On the right hand side, choose a property that you aren’t using and add the data to that. In this example, I chose the 10″x10″ Tee and I added the custom property to the “Model Name” field.

Custom Property Added to the Part

Custom Property Added to the Part

Once you are done modifying the properties in your catalog, simply save the catalog.

Back in Civil 3D, make sure your drawing is referencing the catalog you just edited. To choose the catalog, go to the Home Tab, expand out the Create Design panel and run the “Set Pressure Network Catalog” command.

Set Pressure Network Catalog

Set Pressure Network Catalog

Once a part from your catalog is created in the drawing, the custom property you set in the catalog can be added to a label, simply edit the label style and add that field to your label. Don’t forget to hit the stupid, little, unlabeled, white arrow (I hate that stupid, little, unlabeled, white arrow)!

Add Field to Label

Add Field to Label

Now that property will show up in your drawing when you label your pressure network!

Finished Label

Finished Label


Yes, we’ve all heard it before, Civil 3D makes contours that sometimes look like the recording of an earthquake on a Seismometer:

Seismometer Recording

Seismometer Recording

Really, it’s not the fault of Civil 3D, it’s the data. Add the same data to any other civil design program and you’ll get the same results. This seems to crop up quite a bit when you have cross grades. In the following image you can see that there are two roads going opposite directions and this is where the jagged contours are coming from:

Jagged Contours

Jagged Contours

No contractor would build it this way so, let’s see what our options are.

Option 1: Smooth the Contours

You can smooth the contours of the surface. In the style the surface is using, you can toggle on the option to smooth the contours. This is a great way to make a drawing “look pretty”. It will take the contours and smooth them out. This is only editing the display of the surface. If you have a profile through this area, smoothing contours does nothing to the profile because we aren’t smoothing the surface, we are smoothing the display of the surface.

To smooth the contours, go into the style the surface is using and, on the contours tab, toggle the option to smooth the contours to True. Once you have this toggled on, you can select the type of smoothing you want to apply to the surface as well as how aggressive you want the contour smoothing to be. Play around with these settings and see what looks best for you. There isn’t a correct setting for this because your goal, when smoothing contours, is to make the contours look pretty.

Contour Smoothing Options

Contour Smoothing Options

And here is the same area of that surface with the contour smoothing option set to True, the Smoothing Type set to “Add Vertices” and the contour smoothing maxed out.

Surface with Smoothed Contours

Surface with Smoothed Contours

There are some things to be concerned with when smoothing contours, you are sacrificing the accuracy of the contours to make them “look pretty”. If you have a spot elevation that happens to fall very close to a contour or perhaps a point that was used in the surface creation that’s really close to the contour elevation, you might see some discrepancies. In the following image, I placed a spot elevation and snapped to the contour and you can see it’s not the exact same elevation as the contour:

Smoothed Contours Labeled

Smoothed Contours Labeled

Another issue with smoothing contours is you might end up with contours that cross each other. You’ll see this sort of thing primarily where you have some really steep areas such as retaining walls.

Crossing Contours

Crossing Contours

Anyone that’s done any amount of surface modeling knows this is not allowed.

The last issue that I’m aware of with smoothing your contours is, it’s all or nothing. You can’t smooth just a portion of the contours of your surface. This is because it’s a part of the style.

Option 2: Smooth the Surface

The other option is to smooth the surface directly. This is an edit that is done to the surface and is found in the same place you can raise/lower the surface or paste in another surface.

Smooth Surface Command

Smooth Surface Command

There are two options when smoothing surfaces, “Natural neighbor interpolation” and “Kriging”. I’m not going to go into detail on how the different methods work or what settings to use. You’ll need to read the HELP FILE and do your own research to find out which method works best for your situation. In this example, I’m going to use the natural neighbor interpolation method.

Smothing Options

Smothing Options

So, how does this differ from smoothing the contours? Well, when you smooth contours, you are smoothing the display of the surface. When you smooth the surface, you are actually editing the surface and not just the display. Here is an image of the surface with the smoothing edit applied to it:

Smoothed Surface

Smoothed Surface

As you can see, the contours look much different then when the contour smoothing was applied. If you take a look at the triangles of the surface, you can get a better idea of what happened here (I did a 5′ grid in this example):

Smoothed Surface Triangles

Smoothed Surface Triangles

A couple things to note here, I didn’t smooth the entire surface, just the  area that needed it. Second, any data that was added to the surface was not modified in any way at all. If there are points, or breaklines, or corridors, or gradings, they are preserved (including the triangulation along the breaklines). This only affects the way the triangulation in the areas between data are calculated. Basically, instead of doing a straight grade between one point and the next, it rounds it out.

Something to be aware of, this can add a LOT of data to your surface and can make it very slow to work with so play around with the settings and get the results you want without adding too many points to the surface.

Hopefully this helps out when someone is complaining about your ugly contours!

So a little while ago, someone in the discussion group asked how to go about dropping the zeros at the end of a label. For example, if a value was 100.1111, they wanted to see 100.111. If the value was 100.0001, they wanted to see 100. Apply this to the entire range and you get an idea of what was wanted;

One Label Style, Different Precisions

One Label Style, Different Precisions

In the image above, you can see the total length of the line in the component on the bottom and the component on the top is displaying with different precision based on the value of the label.

NOTE: The method I came up for solving this issue only works if the values can never be negative. If the values you are labeling can be negative (such as a surface elevation) this technique won’t work

Setting Up the Style

What you’ll need: 1 component for each precision you’ll want in the label and one expression for each of those. I’ll start this off by creating the component if the label rounds to the nearest ones place.

The expression basically does this: It checks to see if the number is the same when rounded to the nearest one and when it’s rounded to the nearest one thousandth. If they are the same, return the value. If they are different, return -1 (negative one). The expression will look like this (for a line label):
IF(ROUND({General Segment Length})=ROUND({General Segment Length}*1000)/1000,{General Segment Length},-1)

Expression for Display to the Ones Place

Expression for Display to the Ones Place

I called this expression “ones”.

Now use this expression within a label component. Instead of using the length of the line in the label, use this expression. The trick here is to change the precision to the ones place and then set the “Sign” value to “hide negative value”. That’s what the -1 is used for. If the test in the expression is false, then don’t display anything, if it’s true, display the value at a precision of 1.

Label Component Used to Display the Ones Place

Label Component Used to Display the Ones Place

Repeat the expression/component process for the rest of the precisions you want to use in the label (tip: just copy the “ones” component for the rest of them). For the tenths place, add an additional IF statement to the expression. If the “ones” expression is greater then or equal to zero, then return -1, otherwise, test for the next precision. This expression looks like this:
IF(ones>=0,-1,IF(ROUND({General Segment Length}*10)/10=ROUND({General Segment Length}*1000)/1000,{General Segment Length},-1))

Expression for Display to the Tens Place

Expression for Display to the Tens Place

The expression for the hundredths place is very similar but with an extra IF statement to check both the “ones” and “tenths” expressions.

Finally, you’ll need one last expression for everything else. This one is really simple, basically, if “ones” is greater then 0 or if “tens” is greater then 0 or if “hundreds” is greater then 0 then return -1. Otherwise, return the value.

IF(ones>=0,-1,IF(tens>=0,-1,IF(hundreds>=0,-1,{General Segment Length})))

Expression for Display to the Thousands Place

Expression for Display to the Thousands Place

Wrap Up

Once you have the expressions created and added to your label, it works like a charm. HERE is a quick little video I made showing the expression at work. I took a line and labeled it and then changed the length of the line using the dynamic input.

Additionally, if you would like a copy of the file that I showed in the video, you can download it HERE.

Have fun playing with your new label knowledge!

Checking comments on my blog this morning I ran into this question:

Thank you very much for nice post. I have one more query. I want to display elavations of contours for each contour line at some fixed interval. I don’t want to draw lable lines. Is there any way to do that. If u know it please help me

Most likely they want an automatic contour labeling routine but it got me thinking, what about labeling every third contour? Or every seventh? Or every whatever the heck you want contour! It’s pretty simple, you just need an expression that will check the interval and then control it’s display. Here’s how to do it.

For this example I am going to label every third contour line. First, create an expression. This expression will see if the contour is at the interval. If it is, then return the contour elevation. If it’s not, return a negative one. To create the expression, expand out Surface on the Settings tab of the prospector, then Label Styles, and finally Contour. Right click on Expressions and select New…

New Expression

In the new expression dialog box give the expression a name and a description. Have a little forethought on this as you can’t go back and rename or change the description of the expression. The actual expression itself will look something like this (remember I’m doing this for every third contour):

Expression Settings

So, what does this expression do? The test in the IF statement is “{Surface Elevation}/3=TRUNC({Surface Elevation}/3)”. This tests to see if the contour is the third contour or not. If this test is true (the contour IS divisible evenly by three) then it returns the contour elevation, if it’s not, it returns -1. This -1 is key to how this expression works in the label style.

And make sure to format it as an elevation.

Now that the expression is created use it in your label style. You can create a new style or copy an existing style. In the style composer, edit the style. On the Layout tab, edit the contents of the text component. Remove the current text from the right hand side and insert your new expression into the label. When you do this, the important part is to set the “Sign” value to “hide negative values”. This way if the expression returns -1 it will, basically, not display anything at all.

Applying the Expression

Once you have done this to all label styles involved in your labeling process (i.e. major, minor, user, etc.) your drawing will look something like this:

Expression Used in Labels

You want to change the interval? Modify the expression or create a new one for that interval. Want to adjust the base of the calculation? Simply add a number in the surface expression to adjust it. For example, I want to label contours 1, 4, 7, and 10. The expression would look like this: IF(({Surface Elevation}+1)/3=TRUNC(({Surface Elevation}+1)/3),{Surface Elevation},-1) – Notice that I added 1 to the first two {Surface Elevation} values to adjust the test (don’t add 1 to the last one!).

So, Civil 3D 2013 is just around the corner and I wanted to let you all know a few of my favorite things in this release.


Well, I can’t really comment on the performance yet as I haven’t had much chance to push the software around but, if you listen to those in the know, they’ve made some serious improvements to the performance.


There are some major improvements to the survey tools in this release. In fact, there is an entire new tab on the ribbon for your survey tools. What’s the big thing? Querying your survey database. One of the things I’ve always found awkward about the survey database is the disconnect between it and the drawing. With this release you can query your survey database and add the results of the query directly to a surface. If you add additional data to the survey database that matches the query, when you rebuild your surface, it will update (in my testing, the surfaces wasn’t marked as out of data if the survey database changed).

Survey Query

Survey Query Ribbon Tab

Now that’s pretty cool and really useful for surveyors but, there is also the ability to create a line label, WITHOUT A LINE! How many times have I been asked if you can do this? I’ve lost count and now I’ll be able to say, YES!

Line Between Two Points Label

Basically this tool creates a phantom line that is labeled. Grab the label and you can adjust the points it’s labeling between.


I’m an engineer. Why did I get into engineering? I wanted to drive trains. Three years into college and I realize that I won’t be driving any trains (I was wondering what statics had to do with trains) but now with Civil 3D 2013, I can design rail lines. There are new alignment types and settings (I’ve seen many times on the discussion groups people asking about Degree of Curvature and now we have it). Honestly, I’ve not done much with the rail tools in 2013 so I’ll leave that for someone else to write up (at least for now).

Rail Cant

The corridor creation has a new dialog box that makes it a bit easier. It’s a small improvement but hey, I’ll take anything they’ll give me. The assemblies have had some very nice improvements. When you add a subassembly to another subassembly, it will detect the correct side that it’s on for you so you don’t have to constantly change the sides as you are creating the assembly. Additionally, you can replace an existing subassembly in an assembly as well as insert a subassembly between two subassemblies.

Insert Subassemblies


The Volume Dashboard Extension is now a part of the program. If you have checked out this great tool, check out the write up I did on it earlier HERE.

One thing that I always struggled with is when you need to cut out one surface at the limit of another surface. Not a difficult task but if you change these surfaces, the process for adding the boundary again is very manual in nature. Now you can simply add one surface as a hide boundary to another surface (be careful not to get into a circular reference issue).

Surface as Hide Boundary

Pressure Networks

Yup, you heard me. You can now model pressure networks in Civil 3D 2013. There is a brand new type of object, a Pressure Network. It has it’s own parts lists and everything. Bends, tees, crosses, valves, etc are all available for you to add to your network. This is a pretty big addition to Civil 3D and I haven’t had a lot of time to get down and dirty with this yet so stay tuned for more posts on this topic as I learn the ins and outs of this.

Hopefully you’ve seen something here that makes you go, “Oooh! I can use that!”