Coming from non-Civil 3D background, one of the first things that troubled me when migrating across was a simple earthworks modelling issue – ‘How do I transition a simple batter slope from 2:1 to 5:1 across a range of x metres?’
I mean, this is something that is common practice within the industry, right? One thing I learned early in my design career is that no two linear metres of road are identical.
After some digging around and looking into multiple ways to achieve this, I soon came to discover the absolute marvel that is the ‘Subassembly Composer’ (SC). This program ships with Civil 3D (from 2013 onwards), and simply lets you create (nearly) any kind of subassembly you can possibly imagine – with the added bonus of being able to apply intelligence to these subassemblies.
Here’s how I like to approach this. If you have installed the ANZ Country Kit in AutoCAD Civil 3D 2016, you will notice on the ‘Assemblies ANZ’ tab on the tool palette, there are a few new tools for ‘BatterTransition’ and ‘NumberTransform’ (more to come on that one).
This subassembly was written in a few minutes pretty much as a learning tool for myself to get into the SC. It does, however, provide amazing depth and flexibility when you start to consider not only the predefined tools in the toolbox but the ability to use API functionality within the SC and also from the .NET math class.
The key to transitioning a value across the range of a region comes through the expression
((Baseline.Station - Baseline.RegionStart) /(baseline.RegionEnd - Baseline.RegionStart)) * slopei
Where ‘slopei’ is the delta slope value calculated from ‘Value at End’ – ‘Value at Start’
In order to apply the batter subassembly, and not end up with a roadway corridor full of excessive non-necessary regions, I took an approach of firstly building a roadway corridor out to the edge of hinge.
From this point I extract the hinge string using the ‘Create Feature Lines From Corridor’ command from the Home tab on the ribbon, making sure the hinge line extracted maintains a dynamic link to the corridor (and making sure the Smoothing option is turned off as this creates extra vertices around any alignment curves)
Now that the feature string is linked to the mainline corridor, we can go about setting up an additional corridor to handle just the earthworks. To do this we setup a new assembly with a generic ‘LinkWidthAndSlope’ subassembly and set the parameters like below
Link Codes – none
- Omit Link – Yes (this is critical)
We then attach the ‘BatterTransition’ subassembly to the previous link. We can then change the values to suit our requirements (I’ve used 2:1 to 5:1)
Looking at the whole assembly now, we see our hidden link (which I have relabelled to ‘SubString’) and the batter slope.
We can now create our earthworks corridor and assign some targets as follows (I’ve called the corridor ‘<Corridor> – Batters’ just to keep the roadway and batter corridors close in the prospector).
We just need to ensure that the Width and Elevation targets are set to the hinge string that we created dynamic to the corridor. In the image below, I have set the first range between Stn 700-750. This forces the batter to transition from 2:1 to 5:1 between these stations
As you can see, a smoothly transitioned slope!
To finish off the batter slopes, we simply need to copy the batter transition assembly to create our various types, including constant slopes. In this example I have simply setup a 2:1 constant, a 5:1 constant and a 2:1-5:1 transition.
We now use Civil 3D’s corridor context-sensitive menu to ‘Add Regions’, Copy Regions’, ‘Match Parameters’ and ‘Region Properties’ to add in the rest of the earthworks adjacent to the roadway.
Personally, I have found that copying the initial region using the ‘Copy Region’ command and the changing the region’s assembly using the ‘Region Properties’ to be a much faster way of applying multiple batter slope regions throughout a corridor. This is only due to the new Civil 3D 2015 feature of automatically reassigning similar targets (i.e. I don’t have to go through and assign the hinge feature line targets repeatedly)
Copy Region (2:1 to 5:1 batter slope)
Region Properties changed to 2:1 constant slope
What I love about this approach is:
- Once you have a few batters in place, sliding them around is a simple case of selecting a grip and sliding it to its new location (i.e. no dialogs or text editing).
- Should the mainline corridor move for some reason, that linked feature string we extracted - acting as a subsidiary - will ensure that the batter slope corridor remains linked to the roadway, and we now have a fully dynamic corridor that also offers excellent performance.
- Separating the batters from the roadway minimises the amount of regions required for the roadway corridor.
Perspective view of a batter transition.
This is just the tip of the iceberg with regards to what the Subassembly Composer can do! Once you start to play around with it, you will soon realise that anything can be modelled within Civil 3D using corridors.