Wednesday, June 01, 2016

Convert 3DPolyline Elevations to Surface Plus Height

So lets say you get some 3D Polylines with an elevation value of a pole height, so lets say around 6’, but not constant. You want to then take the 3D Polylines and then create duplicate 3D Polylines with elevation of a surface plus the elevation of the varying 3D Polyline. If the 3D Polylines had a constant elevation it would be easy to just project to surface and then move the 3D Polylines up the required distance. If the elevations are variable it makes it a harder program to solve.

First of my preference would be to solve this through programming an app, which wouldn’t be too difficult. But in this case I don’t have the 3 or 4 hours required to create the program. So in this case I’m going to do this just using Civil 3D surfaces and 3D Polylines.

The first step is to create a 3D Polyline at 0 elevation that encompasses the entire project area. This will then be used in a surface that I’m going to call Zero. In the drawing I’ll also have an EG-100 Elev surface with a 3D Polyline set to an elevation of 100, so I can check the elevations easily.

No take the 3D Polylines with pole heights and add it to a new surface. I’m calling mine Orig3DPolys. Now this surface has the wrong elevation that I need to do the math on. In order to the elevations I need to create a volume surface and compare it to the Zero surface. This will convert my elevations from positive to negative (and from negative to positive if required). I’m going to call it Orig3DPolysInverse.

Now I need to add this volume surface to a TIN surface by pasting it in. I’m calling this surface Orig3DPolysInverse-ToTIN. This will allow me to then create a new volume surface since you can’t directly use a volume surface in another volume surface.

I can then create another volume surface to get the elevation difference between the Orig3DPolysInverse to the EG-100 Elev surface. This will give me the surface plus the height of the EG surface. I’m going to call it New3DPolys. I can then add in some surface labels to check my math and I can see everything works out well.


The last step is to project the copy of the original 3D Polylines to the New3DPolys surface.

Here is a picture of my surfaces:


Here is a link to the file if you want to double check my steps:

Wednesday, May 04, 2016

Dynamic Assembly Labels in Civil 3D

Brian Hailey over at the Civil 3D Plus blog recently did a post entitled Dynamic Assembly Labels in Civil 3D. I thought for sure he missed something, since his process is way labor intensive. Plus when I create Assemblies they are automatically dynamically labeled, I don’t have to do a thing at all.

At first I thought Brian missed a setting in Civil 3D that turns on this wonderful feature. Then I remembered he knows the product inside and out and I should check to see why my version of Civil 3D was broken in such a spectacular way.

It turns out my installation has this program called the SincPac. Within the SincPac there is a command called SP_LabelAssemblySettings. This command has an option to automatically label new subassemblies and it automates the steps laid out by Brian.

LabelAssembly Settings Dialog

So while Brian had to do a bunch of clicks for each and every subassembly he creates; all I have to do is create a subassembly and BAM! my Assembly is labeled. I’d call that a Dynamic Assembly Label. So if you want to save your self a minute of work when creating an Assembly then you should try out the SincPac.

Disclaimer: I write programs for the SincPac (although not this one). Here is my latest improvements to the Sewer Lateral Linking Command.

Friday, April 29, 2016

Band Aid BIM–Structures in Profile Views

Ever want to show structures in profile views? Ever notice how if you have a non-symmetric structure it doesn’t show correctly? If so then go vote for this idea over in the forums.

Evidently having crappy BIM is “as designed” over at Autodesk. From a company that is constantly cramming BIM down our throats through marketing you’d think they would at least have the common courtesy to show structures properly in profile view regardless of their wonky geometry.

Friday, April 15, 2016

Band Aid BIM–Surface Subgrade

Autodesk continues to push Band Aid BIM through blogs and advertising. Now I’d prefer to have actual BIM instead of Band Aid BIM. Band Aid BIM is the worst kind of BIM there is. It pretends to be something it isn’t. One big sign Civil 3D is Band Aid BIM is there is no concept of existing pavements. Does Autodesk not believe that the sea of black and white stuff doesn’t exist in the world. Autodesk sometimes sites the amount of infrastructure the US and the World will need to do in the coming years, but doesn’t create tools to process it?

One common task done is to remove existing pavement. Well since there isn’t any existing pavement objects in Civil 3D we have to employ Band Aid BIM to model this. The first thing we have to do is create a polyline that encompasses the areas of existing pavement. Then in order to simulate an existing pavement we need to create a new surface. I called mine XPaveArea. Then paste in the existing ground surface and then add in the pavement areas as boundaries. Now lower the XPaveArea surface the desired distance that represents the pavement sections. So I created a cross section to show the surfaces at this point.


Now I need to create an existing subgrade surface that represents surface the contractor is expected to build from, in my case called XGND-Datum. After all we don’t want to pay the contractor twice for the same work (removing the pavement and then calculating the cut/fill from the top of pavement).


Now in the resulting picture we can see we are screwed. Most pavement has vertical or near vertical edges. Civil 3D has decided to drop the surface down and then triangulate to another triangle a far distance away from our surface. In the area of landscaping what happened to our surface? Shouldn’t it jump up to the XGND surface? This means more work in this Band Aid BIM situation. We have to create another surface to fill in the gap for the median. See pasting surfaces pastes in holes as nothingness rather than the surface as it should do.

So to fix this we now have to add in information to the XGND surface. So create a surface with the XGND surface and then add the holes for the XPaveArea as boundaries. Then paste that into the XGND-Datum Surface. This is the result:


Well that sucks the triangulation doesn’t work. So now we need to create offsets of the boundaries at a small amount, say 0.001 units and then apply the boundaries in the correct order. This will let Civil 3D know how the vertical data should be handled at this location.


So looking better. To fix the outer edges of the pavement we need to add in a breakline to the XGND-Datum surface that represents the existing ground surface a small distance away from the boundary, say 0.001 units. Don’t forget about this command:


Once we do that we finally get a half assed, Band Aid BIM solution to the problem.


So how to fix this tragedy? I guess ask for Civil BIM first. If Autodesk refuses, like they currently are doing despite marketing BIM, I guess we can settle for these ideas on the Idea Station:

Pasted surface interaction with abutting surfaces

Pasted surface interaction when the top surface has more than one boundary

Surface Thickness

Band Aid BIM Improvement - Paste Surface Options

Friday, April 01, 2016

Slope or Grade Label

Civil 3D is dumb. Just the other day I was placing labels on the plans and I remembered an age old convention:

“If the grade is flat use a percent label, if it’s steep use a slope label.”

If that is a convention I run into time after time, then why does Civil 3D by default make me choose the correct style? Wouldn’t it be easier to have one label adjust based on the grade? Well we can overcome this obvious deficiency in Civil 3D by building a grade/slope label that does just that. We can create two expressions. One will return a positive number if a percent is required and a negative value if a slope is required. The other will do the exact opposite. Then we combine those into one label by setting the expression value to not show if it’s negative. That way we get one label to do both jobs. No longer having to place a label and then realize you have to swap it for another one. If you want to show a negative sign, then you are out of luck.

Here is a link to a file with an example.


Blog Widget by LinkWithin