Wednesday, August 15, 2012

Civil 3D and VDC

The people at Sundt are at it again writing about VDC. A recent article was published over at ENR (PDF) on how they’ve leveraged Civil 3D corridors to help in creating quantities for construction projects. It would appear they have fully embraced modeling and used SubAssembly Composer to model retaining walls, pipe excavations, and other linear construction. Having done construction quantity take offs earlier in my career, I can definitely see the benefits of using design software to come up with the quantities.
Go check out the article and think about how you should be designing your projects. Shouldn’t we incorporate what they are doing into the design. This benefit would be more accurate designs, the ability to recognize conflicts with other utilities. Shouldn’t a BIM product have theses features? Why aren’t you asking for them?
P.S.: If you are the person asking for a conceptual design tool, please knock it off so Autodesk can spend money on BIM instead.

Ask for BIM

Please ask for BIM if anyone asks. Not the fake, crappy BIM that Autodesk calls Civil 3D, but real BIM. I’d love to model a site with curbs, gutters, pavement, sidewalk, cross gutters, retaining walls, curb ramps, and the like. Instead I’m managing surface labels to make sure I’m using the correct expression. It’s really disappointing to get a monthly email telling you to watch how Civil 3D and BIM can make your designs better, when in reality the program sucks at BIM.

It would be great to be able to easily label the top of wall, top of footing, and finish surface on both sides of the wall without being totally lost on where to put the stupid surface labels with expressions to get the correct elevations. Do I really need to manage labels to do the design and convey the design intent? Shouldn’t I be able to use the M in BIM to do the modeling? I’m beginning to think BIM, in respect to Civil 3D, means Building Is Missing. I certainly have a hard time building any of my, or other’s, designs in Civil 3D.

I recently was working on a project which is adjacent to another project in the bidding process. I thought hey I can model their design in Civil 3D. Unfortunately it became clear that using feature lines as curbs is sorely lacking. My tie in point was going to be a short distance into their improvements. How the heck am I supposed to model that? It’s definitely more difficult then it needs to be. Draw the feature lines representing the curbs, trim to the join line, making sure none of the elevations get inadvertently changed. Then hope and pray when you come back to the model that you didn’t accidently adjust the tie in elevations. Why can’t there be a curb object? Why can’t there be any of the objects we design?

This concludes my rant for today. Remember to ask for BIM, because if you don’t ask for it, you’re probably not going to get it. I have very little pull in getting Autodesk to add features, collectively we might just be able to make a business case for BIM in civil design.

Tuesday, August 14, 2012

Profile Grades in Plan

Sometimes we miss some helpful features in Civil 3D. One such feature is the ability to label profile elevation grades in plan view. There are two ways to accomplish the task.

The first is to use an Alignment Profile Geometry Points Label.


The trick to this dialog box is to make sure to select the profile to use and select the geometry points to label. This is important since you probably want only one label at each point. If you profile doesn’t have vertical curves you’ll want to uncheck the label low point and high point. For if you don’t then you’ll end up with both a low point/high point label and grade break label when the occur at the same PVI.

The other way to label profile grades in plan is to use reference text in a line/curve label. Adding the instantaneous grade to the label component will provide the capability.


Now you can label the alignment with the line and curve label to get the grade. This may also be used on polylines or lines if you want to label on the curb line or another location. I sometimes use this to label swale slopes if I have a profile on the centerline that represents the swale slope. Unfortunately this usually is a case where I’m faking in the slope, since the slope of the swale won’t be the correct slope since the centerline of the slope slopes towards or away from the centerline of the roadway due to the length of the swale being different then what is at the centerline. But that’s usually what is shown on the plans and is kind of correct since it will be staked based on the centerline elevations. It’s just good to keep mindful of the faking to make sure a minimum slope is achieved.


Sunday, August 12, 2012

Skew Angles

Sometimes calculating values in AutoCAD can be difficult if you aren’t quite sure where to look. For instance if you want to calculate the skew between two crossing alignments it might seem difficult. Thankfully there is some useful tools in the API to help calculate it.

The first helpful tool is the GetFirstDerivative method. This method calculates a vector value which provides you with the instantaneous direction of the alignment at the point provided. Using this method on the main alignment (riverAlign) and rotating the resulting value by pi / 2 (or 90 degrees) we can get the direction perpendicular to the alignment. We can then calculate the instantaneous direction of the crossing alignment (align). Depending on how we want to calculate the skew, we may want to rotate the vector by pi (180 degrees). We can then use the vectors calculated to get the angle between the two vectors.

Vector3d vector3DRiver = riverAlign.GetFirstDerivative(pt3DcollTempLine[0]);
Vector3d vector3DSection = align.GetFirstDerivative(pt3DcollTempLine[0]);
Matrix3d curUCSMatrix =

CoordinateSystem3d curUCS = curUCSMatrix.CoordinateSystem3d;
vector3DRiver = vector3DRiver.TransformBy(Matrix3d.Rotation(Math.PI / 2,
new Point3d(pt3DcollTempLine[0].X, pt3DcollTempLine[0].Y, 0)));
vector3DSection = vector3DSection.TransformBy(Matrix3d.Rotation(Math.PI,
new Point3d(pt3DcollTempLine[0].X,
pt3DcollTempLine[0].Y, 0)));
skew = vector3DRiver.GetAngleTo(vector3DSection) * 180 / Math.PI;

The above is small snipped of code to accomplish the calculation. The calculations may also be done with polylines and other AutoCAD objects that are derived from curves.


Blog Widget by LinkWithin