Thursday, April 16, 2015

Slope Stake Report Through XREF

Have you ever wanted to run the slope stake report on a corridor through an XREF? Well I have and I now am giving way the a version of the report that does just that. Here is a link to a dll and the source code:

The dll has been tested on Civil 3D 2014 and Civil 3D 2015, and should work on Civil 3D 2013. To get the report to run download and unzip the file. Go into

C:\ProgramData\Autodesk\C3D 2015\enu\Data\Reports\Net

Replace the 2015 with appropriate year you want to save replace the standard Civil 3D report.

Next rename the C3DReport.dll file to something else or move it to another location. This way if the report doesn’t work you can simply remove my version and replace it with the original.

Now go into the downloaded zip file and find the C3DReport.dll and copy it to the above location where the old report dll file was located at.

That should be it. The next time you run the slope stake report it should use the new report and allow you to run the slope stake report through an xref.

Thursday, April 02, 2015

Civil BIM

I'm looking for some votes and ideas over at the Infraworks Idea Station. I'm looking for a focus on Civil BIM features. Currently I find Infraworks greatly lacking on BIM and I figure the best way to get those features is to muster a Civil BIM Army to advocate for it. Who's up for the easy challenge of either contributing ideas or upvoting with Kudos?

I've already posted a few and will post some more. I'm looking to design with actual objects such as curb and gutter, sidewalk, pavement, and more!

Tuesday, March 31, 2015

Civil BIM Hydrology

Civil BIM shouldn’t revolutionize hydrology and hydraulic, calculations but allow us to easily extract the information to calculate the values required to do the calculations. Any Civil BIM product should provide the flexibility to do the calculations as required by the local agency’s hydrology manual. For this post I’m using the LA County Hydrology Manual and the San Diego County Hydrology Manual for examples on how I would expect the work flow to work.

First the model would be created by actual civil objects. Curb and gutters, pavement, concrete swales, grass swales, vegetated swales, etc…. Each one of these objects would be able to have the ability to communicate with the objects around them and with themselves. For instance the pavement object would know where it’s grade breaks are and where that water is flowing to. Often times in the real world this curb and gutter (or any other type of object). The pavement would communicate to the curb and gutter what area of water flows to it, the C or CN values, plus any other objects that contributed flow to the pavement object. May be there is a cut slope and water flows from offsite to onsite and the pavement object would add the information to the pavement object and then onto the curb and gutter object.  The final output from this would be an exhibit showing me where the sheet flow occurs, where the channel flow occurs, and the like (including the arrows showing the flow).


At any time I would be able to put a catch basin into the model and capture water. The catch basin would have the ability to calculate how much water flows into it and how much flows past it or offsite. The calculations could be either the default software provider’s or a formula from a hydrology manual. Ideally we would also have the ability to include a nomograph for the ancient agencies that don’t have a formula related to the capacity of an inlet (or didn’t create one). The calculation output would be something like this showing the areas and where the water is coming from. Starting at Page 223 of the San Diego Hydrology manual provides some good examples on how the workflow should go for the calculations. Everyone’s calculations appear to differ slightly and any Civil BIM product should be flexible enough to do the local agency’s methods.


Any changes to the model would update the calculations. I wouldn’t expect it to happen real time, but the ability to hit a button to update the values. I don’t think we are at a point yet where there is either enough processing power on a desktop or the ability to spread the load of the calculations over a cloud deployment of software.

An additional topic on this would be the ability to do calculations for water quality reports that seem to be all of the rage. Each county, at least in California, appear to have different approaches to the calculations. Any water quality system should have the ability to enter the agency’s formulas and the output them to their preferred format, no matter how unnecessary it might be. This would be enterable in the form.

The focus on this tool shouldn’t be solely on a slick user interface, but a help system that conveys what the user options are and what they mean. Making it a black box without concern for letting the user know what is going on or the ability to change the method of calculations will quickly make it a tool unusable by most users due to agency requirements.

I think most important capability, which is missing in most hydrology programs, is to provide a flexible reporting tool to match what the plan checkers are looking for or the ability to easily create an output of the information into a file that other programs can read. Having done conversions from Civil 3D to HEC-RAS or WSPG this shouldn’t be too hard of a task to complete since it’s usually putting things in the correct location in the output.

Friday, March 13, 2015

Slope Stake Report Blues

You ever get the feeling Autodesk is just checking off check boxes and not understanding what users actually need? I do. On such example of this is the Slope Stake Report conversion to Excel with images. The images cover the data in the Excel sheet. Not what I would consider a good result. One way to fix this is to either create a VBA code in Excel or in the report. This report will show some code pieces that can be used to fix this catastrophe.

The first thing we would need to do is to get the images. They are called a Shape.

For Each xlsShape As Excel.Shape In sheet.Shapes
' 972 is the approx width of the available space.
If xlsShape.Width > sheetWidth Then
= (sheetWidth - 2)
End If
Dim moveDistance As Single
= (sheetWidth - xlsShape.Width) / 2
= xlsShape.Top + 3
= moveDistance - firstColumnWidth

Once we have it we can then move stuff around if we want. In the code above I'm taking the shape and then adjusting the width and centering the image.

We would also want to add rows under the shape. We can get the location of the cell under the image and then insert rows.


You’d want to replace the 1 with the current row and add as many rows as you think are needed based on the image height. Once you put it all together now the images will not be over the top of the table. 

Wednesday, February 18, 2015

Civil BIM–Site Grading Example

What would you want a Civil BIM software product to perform? Well today my primary work is creating a preliminary grading plan for a tentative tract map. The project is for some condos with some challenging grading constraints. There are sidewalks, retaining walls, stairs, and landscaping areas. The buildings have retaining walls built into them. This is primarily to make them carriage units and provide the residents the feel of a traditional housing with an easy to access floor area. Carriage units are exempt from ADA requirements and are where the living space is above the garage area.

Most of the time when we get CAD drawings from other sources such as planners and architects. Tons of time an energy is spent correcting their often time sloppy linework. If Civil 3D was forgiving we could just use, but since feature lines close to each other may cause crashing it’s advisable to clean up the linework. For my project I’ve already spent 2 hours cleaning it up and probably have another 2 hours before I even start turning the polylines into feature lines. I then have to turn all of those feature lines into a design and offset them to get the desired shapes such as curbs, retaining walls, and stairs. It’s a ton of busy work that really provides a crappy user experience.

What if we could make the experience better? Well this is the way I’d envision Civil BIM working. First I’d be able to bring the architect’s linework into the program. I’d also have the actual legal linework in the drawing as well. As we all tend to know, architects tend to think of the world as square and the reality is often far off from it. So we are forced to fit their square design into a different shape.

Once in the program I’d be able to determine the constraints. In this case I know I need to tie into the existing sidewalk and curb and gutter at the south side of the project. I know from looking at the site I’m not going to be able to tie into the North, East, and West side due to the terrain without a retaining wall. If I was able to I’d shoot for a maximum of 2’ elevation difference so I wouldn’t have to design a retaining wall. Most areas in California allow a 2’ differential without calling the privacy wall a retaining wall. I’d want the ability to snap the privacy wall or privacy/retaining wall along the surveyor’s linework for the parcel. At this point it would follow the existing ground at the property line.


Next I’d want to create the sidewalk at the south of the property. This placement of the sidewalk would allow me to pick either the center of the sidewalk, an edge, or an offset from an existing feature. In this case I’d want the offset to be 7.5 from the existing curb and gutter. I’d then want to determine the elevation of this relative from the curb and gutter. In this case it would probably be a constant 2% grade since the buildings are separated from the sidewalk with a retaining wall. If the building was closer to the roadway then the grass landscape area would have a variable slope and the sidewalk would get it’s elevation from the building entrances. Of course the sidewalk would know about ADA requirements and would automagically insert ramp resting areas, if necessary. The ramp resting areas could then be moved and adjusted. The driveway would also be placed using parametric design based on the local design requirements. I’d expect no more bullshit of ignoring these often used features in civil design to ensure the grades are adequate to place the driveway and provide ADA passage.


I’d then want to place the other sidewalk on the project site. At this time I wouldn’t be concerned too much about elevation since I’m putting everything together. I think it would be too challenging to place and set elevations since I have no real idea where my constraints will show up in relation to the grading. The sidewalk would allow me to do both linear segments at a given width and the odd shapes in front of the buildings. I’d expect to be able to make my sidewalk too large or too long. When I place other objects such as retaining walls, stairs, or trash enclosure areas that it would automagically trim it’s self to those objects.

Next I’d place the buildings. Buildings can have retaining walls or stem walls associated with them. In my case as an architectural desire or for basements in colder regions. I’d then place the buildings on the site. The buildings would have a pad elevation (floor elevation minus any building materials to the floor elevation), a floor elevation, and the ability to slope the garage area to the entrance. This way I can move the building up and down and have my model adjust to it. On each side of the building I’d be able to set elevation points like we can do using the Civil 3D feature line tools. Find a high/low point to shed water away from the building or to get a retaining or stem wall as part of the building.

The building model, sidewalk model, and stairs would create a warped surface between the elements. The last element is curb, gutter, valley gutters, and pavement. I’d probably want to start out with a preliminary grading concept to build from. In looking at the site I’d want to determine how the water would flow through the site. For this site I’d think I’d go with something like shown in the image below.


I’d expect to be able to set the grade direction relative to a reference object, in this case the sidewalk at the front of the property. Then grade to the back of the property at 1% and up each of the alleys at 1%, and at the odd ball parking area at 1%. This pavement would automagically trim itself at the sidewalk and buildings or other objects. I now want to place the curb and gutter to constrain the pavement even more (or place it earlier) in the process. The pavement would automagically get it’s elevations from the building at the garage entrances to provide for a warped surface to a valley gutter that is going to have to be designed to flow water away from the garages.

The curb would be a smart curb object. It would know if it needed to be a curb or a curb and gutter and automagically change between the two as I grade the pavement. At this preliminary stage it would get it’s elevation from from the pavement projections. I’d also need to put in a valley gutter to direct the water away from the building. It would also automagically provide for the transition between curb and curb and gutter as well as the ability to go from one curb height to another over a distance of the length.

I’m now ready to set some grades. The surface would have the ability to show me the grades by shading. The sidewalk would have longitudinal and cross slopes to indicate areas that are out of compliance. In this case I’d add stairs to the model where it was too steep. In this case the architect has given me a general area to place them. The landscape area would also indicate steep slopes, close to steep slopes, and super flat areas by coloring. The sidewalk, valley gutter, curb and gutter, and stairs would have tools like the quick elevation editor in Civil 3D to allow me to set elevations. The sidewalk and pavement would have tools to allow me to add a grade break and either use the warped elevations to the existing model objects or project a grade way from it to adjust selected curb and gutter objects to adjust to them.

I’d also want to place the retaining walls where needed into the model. I’d expect to be able to tie it to the adjacent sidewalk and buildings either longitudinally or at the ends of them. I’d expect this retaining wall to be able to design itself parametrically based on minimum cover over the footing, footing step length based on the constructability. For a concrete wall this would be in increments of 4’ or 8’ to minimize the cutting of plywoood. For block walls it would be in increments of 16”. I’d be able to look at the wall in a profile type view and be able to adjust the footing dimensions and top of footing. This profile view would show the existing ground, the ground at the back of wall, the ground at face of wall. The ability to change the elevations would be provided. The retaining wall would use these elevations to then warp the surface around them.

The retaining wall object should also have the ability to calculate structural backfill, structural excavation, drainage material behind it, and construction tools. The construction tools would allow for the modeling of shoring, formwork, and other temporary construction methods to determine quantity of work needed to perform the work. Hundreds of millions of dollars of work are wasted coming up with these numbers.  If you want more information on the process take a look at this research done at Stanford.

All of the above objects should have the ability to determine their own thicknesses and dimensions. This information should be used to calculate the amount of cut and fill earthwork for the site for a datum surface. This should also allow the ability to extract quantities. The quantities should also be able to be gotten by designating an area, such as Phase 1 or Phase 2. The phases should also allow the ability to do a partial design stage using the finished model to create it. For instance if I pick an area requiring fill, it would then grade to it.

All of the water on my site is going to either do surface flow to the pavement or small inlets and pipes to direct water to the pavement areas. In other projects would require the ability to create swales. The swales would have a minimum and maximum depths and the surface around it would warp to the other objects around it. The swale would allow for the quick elevation edit of the flow line as well as adjusting the depth along the swale to ensure drainage into the swale at an expectable grade that is neither to flat nor too steep. It would also allow me to set a grade from another object with elevation and then slope down to the swale and tie into it’s side slopes.

This project doesn’t have ADA parking, but it would also need it’s own tool to design to make sure the maximum slopes aren’t exceeded and tie into the adjacent pavement surfaces.

The final step would be the ability to create linework that can be shared in CAD programs. Each line of the model would have the ability to be extracted or not extracted. For instance the back of the curb, flowline, and lip could be extracted from the model; skipping the top of curb and bottom curb and gutter lines. The output I’d envision would be something similar to what Plant 3D does when it creates plan sheets. The ability to choose what lines to choose if there is multiple levels associated with the work.

In closing this workflow would save time by letting us design instead of doing busy work of making sure lines come together properly to prevent crashes and provide an intelligent model.


Blog Widget by LinkWithin