It always seems like there’s something you can’t do in Civil 3D that you used to be able to do.  For example, if my contours get really close together, i.e. the surface is steep, I would like to use a different contour interval for that area.  In Civil 3D, you can’t specify a different contour interval for different slope ranges but, if you understand how the program works, you can accomplish pretty much the same thing.  Read on for more information.

In the following image, you can see that there are areas of the surface that are simply too steep for the contour labels to show up correctly.  In these area, I would like to use a different contour interval then the rest of the surface.

Now, if we were using AutoCAD, or LDT, or some other method of creating a surface, we could simply trim out the offending contours or polylines and we would be done.  Not quite so easy in Civil 3D but it is doable.  The trick is to use multiple surfaces.

Create two new surfaces (I called mine Flat and Steep) and paste the original surface into both of them and then change the style of the original surface to a No Display style.  This will preserve the integrity of the original surface.  Change the style of the Flat surface to display the dense contours and then copy that style and have it only display the major contours and assign that style to the steep surface.

Now, here’s the trick, create a polyline around the area that needs to display the alternate contours and apply that as a hide boundary to the flat surface and then apply the same polyline as an outer boundary to the steep surface.  Want to do this to another area?  Simple, create a new polyline and add it to the flat surface as another hide boundary but add it to the steep surface as a show boundary.  Label the surfaces (you may have to duplicate the label lines to get the appropriate look) and you are done.  If the original surface changes, the Flat and Steep surfaces will both change dynamically (you may have to adjust the boundaries manually though).

I did try to accomplish this using surface masks but you can only add one hide mask to any surface.

If you have a different way of doing this or can see of some way I can improve on this, please let me know by leaving a comment.