I'm trying to model a tunnel network and I have come across a problem I can't solve by myself and any help is greatly appreciated! I know what I'm trying to do is not what Civil is ment for but bear with me =)
The problem is best described with an example:
A sort of tunnel - or shaft - has to be blasted in order to make an access between the ground surface and a certain parking cavern. This access will be an escalator and the tunnel will be blasted in a 30 degree angle to the horizontal level. Normally when I design tunnel cross sections (CS) the contractor will blast the designed CS perpendicular to the designed profile.
I drew the tunnel CS with sub assembly composer and created an assembly in civil. I then made an alignment and a profile according to our design. And here is the actual dilemma: Civil draws the assemblies so that the assemblies are vertical and what I need is them to be drawn/modelled perpendicular to the designed profile. Is there a way to do this?
I will attach a .pdf and a .dwg of a surface profile along the alignment created (and tidied up) with civil 3d, in which I have tried to illustrate the problem in case my description isn't clear enough!
Solved! Go to Solution.
The corridor is always going to place the assembly in a vertical orientation but you can give it distorted information so when it is drawn vertically the dimensions appear correct when measured perpendicularly.
I would actually make two sets of subassembly or one subassembly with a Boolean operator (yes/no) to switch it from perpendicular to the profile to typical vertical. In your subassembly you will want to add a variable for VerticalDistortion. This variable would be a percentage that each of the vertical dimensions would need to be stretched/shrunk by on order to switch back and forth between the perpendicular and vertical sections (you can use the Baseline.grade API function an a little trigonometry to calculate the distortion value.
All of your input parameters would be entered as values measured perpendicular to the baseline, I presume. Then if you want the subassembly to perpendicular to the baseline then the distortion will be 1 and if you want the subassembly to be vertical then the distortion will be this calculated value. So for the placement of each point you would multiply the vertical values by this distortion.
So now you have a subassembly that can handle being drawn vertically but the dimensions should be correct in the perpendicular direction. You will use this corrected subassembly for all of your modeling. However if you want to generate cross section views you would just use the non-distorted version (which is why I said make two or make one that can switch the distortion on and off). And run that along the baseline and generate cross sections from there and they will dimension out correctly. (Hope that makes sense and I interpreted your problem correctly!)
Although a slightly different application, I went over a subassembly that takes into account the baseline.grade in my AU class taught in 2011, the handout may give you some further insight.
Thanks for the tips! I figured I would be forced to do something like that and I will try it out as soon as I can find the time! =)
Is there by any chance a way to code the assembly so that it would calculate the (let's call it) shrinkage factor, SF, based on the slope of the baseprofile? The same problem I described earlier of course applies for all tunnels which are not horizontal and often long highway tunnels have many different slopes and being forced to make different assemblies for every slope is not imho an efficient solution!
Another problem (which I also just have to live with) is that when I will try the "shrinking" of the cross sections, I won't be able to model the tunnel roof properly! Scaling (or shrinking) the tunnel roof - which is an arc - in the vertical direction will make it an ellipse. Creating geometrical rules in SAC that will take this in account will most likely be hard if not impossible to do.
You can use the API function baseline.grade in any expression used in Subassembly Composer to take into account the instantaneous slope of the baseline at that specific location and then calculate the shrinkage factor right in the subassembly so it will take into account any of the grades that it comes into (even vertical curves) so no need to make different subassemblies for every grade.
As far as needing an ellipse in SAC, the program currently only allows arcs and parabolas but both of these have arc tessellation. If I were to use an ellipse I would use simple geometry and create my own "arc tessellation" using points and links. You could easily set up a Sequence element which uses the calculated ellipse variables to make a series of points and links to generate the needed ellipse shape (really that is all the Curve element is, a sequence of points and links based on the curve geometry properties).
Hope that makes sense!
Peter Funk talked about a similar situation in an AU class, back in the days when subassemblies were written in VBA. In that case the corridor was used to represent a concrete bridge structure in France somewhere. The assembly built a series of polylines perpendicular to the horizontal and vertical alignment which could be used for design of the prefab formwork.