For Site grading I generally up the supplementing of the breaklines to add extra triangles to my surface and smooth the contours out a bit. Instead of typing the value each time you can change the default value in the settings this is where you will find it.
Tuesday, 20 December 2011
More Acronyms
Doing another site grading job with lots of different features building pads,ponds,swales and roads
so I am and using the featureline commands a lot.To access the commands quicker I have added a few more keyboard shortcut acronyms to my PGP file . Round on Christmas
Wednesday, 14 December 2011
Quickly Removing Breaklines from a Surface
I have to credit Bryce at KarelCad with this tip that made my day.
So you have a surface with a ton of breaklines and you want to remove one from the surface but cannot remember what you called it no worries. Zoom to it in the drawing (as you know where it is) select it and press delete now type “oops” the breakline is restored to the drawing but not into the surface.
Alter the breakline as you wish.
The reason I had to do this was I had a number of breaklines from a corridor in a surface that were extracted when the corridor frequency was quite wide to make my surface better I wanted to add a lot more supplementing to the breaklines, as extracted breakline do not up the supplement when you up the corridor frequency.
Tuesday, 13 December 2011
Drawing Path and Name
Once and a while I want to copy a drawing path and name into another document such as a word report or excel spreadsheet this is to let others know where a model drawing is that has certain information I have used.
If you use the “dwgprefix” and “dwgname” commands the information is published to the command line and you can copy and paste it from here to your document.
Featureline Priority
I am always referring back to this post on Featureline Priority by Mark to remind myself of what to do so I thought it maybe of interest to others
Thursday, 8 December 2011
Add suffix to layers names
Reminder to myself to add a suffix or prefix to all layer names in a drawing use the rename command with the settings as follows
Tuesday, 29 November 2011
Using Parcel’s to calculate Open Channel Flow
A couple of years ago I developed a number of parcel styles and labels to calculate the capacity of basic open channels when you have limited data to do a full model.
Yesterday I had to use the styles again for the first time in a while and it took me a while to remember want to do, so I have made a quick screen capture of the process for future reference and others to review.
The label styles make use of expressions and user defined properties in the parcels. The process is not fully automatic but you can slide the parcel line representing the water level up and down to adjust the calculations and manually update the water surface length to get the correct wetted perimeter. Someone out there may have a clever idea on how this could be automated.
Also the Slide Direction tool does not seem to hold the bearing when moving from one segment of the road frontage (aka stream bed) to the next unless this is by design.
There is a link to the full screen movie here seeing the image below is a bit small.
Thursday, 24 November 2011
Creating Surfaces from LINZ NZTopo50 maps
In rural New Zealand there is generally a lack of Lidar information to build 3d surfaces within Civil3d. However Land Information New Zealand (LINZ) have made available on their website shp file versions of their NZTopo50 series maps that contains contour information at 20m intervals. You can use these contours to create surfaces and define catchments automatically in Civil3d.
To build a surface is Civil3d:-
1. Goto the LINZ website and choose a map of your area of interest
http://www.linz.govt.nz/topography/topo-maps/map-chooser
at the bottom of the particular map you will see the shp file download option. Download and unzip the shp files.
2. Now you have to import the shp data into a new drawing using MAP and assign the object data elevation to the Z value of the polylines that represent the contour lines. There are a couple of tutorials on the web how to do this already here and here.
Note the shp files downloaded are in NZTM co-ordinate system so you may have to do a co-ordinate transformation on import as well.
3. Now that you have the contours with the correct elevation you can build a surface in Civil 3d in the normal way and define catchments and flow paths using the built in Civil3d’s tools.
Saturday, 19 November 2011
Mapping Pipe XYZ now as easy as ABC
I come across this good presentation on the different types of mapping systems
http://www.geoplace.com/Media/MediaManager/GhassemiMike.pdf
and with a little more research found a specific system specification for a product out of Belgium which looks promising for the application I have in mind.
http://www.reduct.net/nl/index.php?n=9
http://www.reduct.net/content/files/ArticulatedMicroRange.pdf
Only problem Civil3d pipes does not deal with pipes as a 3D string format , polyline format. I have commented on this before and Autodesk should be addressing it sooner rather than later. Currently the piping tools of Civil3d cannot deal with modern construction materials and techniques.
In the near future I foresee modern technology removing the need to run pipes in straight lines between structures as long as all segments of length dx within a pipe of length x achieve the minimum hydraulic requirements water will in fact flow down hill and achieve the required result at a cheaper cost.
See you in the future Mcfly.
Wednesday, 16 November 2011
Map Book Template Location
Just looking into mapbook for a project the shipped templates are in the following folder on my vista machine
C:\autodesk\AutoCAD_Civil3D_2012_English_Win_32bit\x86\en-US\C3D\Acad\UserDataCache\Template
Heres the link to the online help discussing the version templates
Thursday, 10 November 2011
Wow over 100 posts
Just noticed the other day that I did my 100 th post. Here is a snap shot of my blog stats. Seem to be getting around 1800 page views a month and alot of viewers from all over the world. Surprisingly the most popular posts have been my intro to vb.net, lot grading and keyboard wizard posts. The last few posts have been a bit basic and tongue and cheek. So I will look at some thing a bit more complex in the next few posts.
Comment below and let me know what you guys and girls want to see more posts on VB.net? Daily Gotcha’s? Just doing things differently?
Tuesday, 8 November 2011
Crash Boom Bang
This drawing seems to crash because a grading object hang off a corridor does not play nice with a grading hang off a separate featureline go figurer.
Tuesday, 1 November 2011
Bounded Volumes Table
In last day or so Autodesk have announced the release of the new Volume Dashboard add on for Civil3d 2012 subscription users.
About a month or so ago a I bolted together a number of pieces of code off the net from here, here and here. To make my own utility to generate a bounded volumes table for a project. The routine uses polylines for stage boundaries and a single bounded volume surface, here is a quick video of the code in action and the code I developed for those users that want to use it in previous versions of Civil3d. The code may also be useful to dump the results of the stages volumes into a standard Autocad table a functionality that is lacking in the new tool.
I did plan to develop the code further to remember the stage boundaries polylines by attaching the handle of the staging polylines to the volume table as xdata to enable a table refresh at a later date.
Instead I will continue to focus on cleaning up XPac a collection of code routines I have written over the last 5 to 6 years for Civil3d. Here is a compiled version of XPac with the command XP_BoundedVolumeTable command as always use the code at your on risk.
Here is the code.
<CommandMethod("XP_BoundedVolumeTable")> _
Public Sub Bounded_Surface_Volumes()
'Prompt the user if the they want to create a new bounded volumes table or refresh an existing one
'If new then get the user to
'Select the volume surface
Dim ObjTypetoSelect(0) As Type
ObjTypetoSelect(0) = GetType(TinVolumeSurface)
Dim surfaceId As ObjectId = PromptForTinSurface(ObjTypetoSelect, "Select a TIN Volume Surface: ", "The selected object is not a TIN Surface.")
If ObjectId.Null = surfaceId Then
_write(vbLf & "No TIN Surface object was selected.")
' We don't have a surface; we can't continue.
Return
End If
'Create a selectionset of the polylines to be used the bounded polylines
Dim acSSet As SelectionSet = GetSelectionSet()
'check selectionset not null
If acSSet.Count = Nothing Then
Exit Sub
End If
'Define the and size an array to sort the volume data for use later
Dim VolumeData As String(,) = New String(acSSet.Count + 1, 3) {}
Dim polylinenum As Integer = 2
'for each polyline in the selection
'create an array of vertice co-ords to pass to volume function
For Each acSSetObj As SelectedObject In acSSet
Dim dObjId As ObjectId
dObjId = acSSetObj.ObjectId
If (dObjId.IsNull) Then
m_Editor.WriteMessage("No Bounding Polylines have been selected")
Return
End If
Try
'not sure if you can get bounded volumes in .net yet therefore
'from the ObjectID get a com surface object to use the boundedvolumes method
Using tr As Transaction = startTransaction()
'get the bounding polyline for read
Dim oPolyline As Polyline = tr.GetObject(dObjId, OpenMode.ForRead)
'Determine the volumes in the polylines area
Dim oCutFillSurface1 As AeccTinVolumeSurface = tr.GetObject(surfaceId, OpenMode.ForRead).AcadObject
Dim oCut As Double = 0
Dim oFill As Double = 0
Dim oNet As Double = 0
Dim oArray As New List(Of Double)
oArray = ArrayOfPolylineCoords(oPolyline)
Dim xx As Object
xx = oArray.ToArray
oCutFillSurface1.Statistics.BoundedVolumes(xx, oCut, oFill, oNet)
'ReDim VolumeData (1,2) Perserve
VolumeData(0, 0) = "EARTHWORK VOLUMES"
VolumeData(1, 0) = "Stage"
VolumeData(1, 1) = "Cut"
VolumeData(1, 2) = "Fill"
VolumeData(1, 3) = "Net"
VolumeData(polylinenum, 0) = polylinenum - 1
VolumeData(polylinenum, 1) = Math.Round(oCut, 2).ToString
VolumeData(polylinenum, 2) = Math.Round(oFill, 2).ToString
VolumeData(polylinenum, 3) = Math.Round(oNet, 2).ToString
polylinenum = polylinenum + 1
End Using
Catch ex As System.Exception
MsgBox("Error in calculating volumes from polyline" & Err.Description & " - " & Err.Number & Convert.ToChar(10))
Return
End Try
Next
'CreateTable(VolumeData)
CreateTableWithStyleAndWhatStyle(VolumeData)
'add volume data to an array
'next
'Insert a table into the drawing of the volumes.
End Sub
Tuesday, 25 October 2011
Calculating New Zealand IDF data for Autodesk Storm and Sanitary Analysis
The main source of rainfall design for areas in New Zealand is the NIWA Hirds website . However the first thing you will notice on getting data from the Hirds website is that the you do not get the rainfall intensity data for the 5 and 15 minute duration storm and the 1,2,3 and 25 ARI event that SSA asks for.
Figure 1.0 Raw Hirds Data
Figure 2.0 Autodesk Storm and Sanitary Analysis IDF input screen
Thanks to the help of Graeme Mackay at NIWA who explained the equations behind the Hirds data. Detailed on pages 19 and 20 of the Hirds method help file available for download at the bottom of this page.
I have developed the attached spreadsheet to calculate the alternative duration rainfall data.
Here is a short video of the process you need to go though with the spreadsheet and SSA to get up and running
Update thanks to Matt Anderson
SSA allows editing of the Storm Duration and the Return Period. Note the 10 and 20 minute Duration added below.
When you right-click on the durations, you get:
No spreadsheet is needed.
Sunday, 16 October 2011
Had to have a Monday morning Rant
Please add a comment of support for these changes to the Autodesk forum. We have only been waiting 5 years for updates in these areas.
Thursday, 6 October 2011
Upgrade Issues
I thought that it would be seamless to import the 2011 profile and I would be away. But whenever I use the old profile 2012 crashes on editing label styles and on opening it brings up the vanilla Autocad 2012 splash screen.
To get round the issues I have decided I am just going to have to rebuild my user profile in 2012 what a pain.
Wednesday, 14 September 2011
Creating Multiple Intersection Assembly Sets for Projects
- Build an intersection in a blank template drawing with the shipped assemblies. This pulls in all the standard shipped assemblies that I know work into the drawing which you can adjust as required.
If you have never built an intersection before check out the procedure in the online help here
Make sure the intersection wizard uses the defaults for everything especially the assembly setting import path and default assembly naming as follows.
- Next adjust the assemblies that have been import as required to much the council/project details by changing the kerb height, pavement depths, subbase deep, etc. There are a number of ways to adjust this values i.e Press Ctrl+1 to bring up the properties windows and select each assembly and adjust the values one by one. Select the assembly and right click edit them. The problem with both these methods is the you have to typing in the same values a number of times and you will make mistakes.
To eliminate this possible introduction of error, I through that you would be able to use match properties command, but this does not work with assemblies objects. So we have to use yet another work around in Civil3d to get something simple done.
The quickest way I have found to change multiple properties is to press ctrl+3 to bring up the tool pallet find the assembly you want to change and right click and select properties.
Scroll down to advanced and change to default insert properties to the ones you want
Now go back and right click the assemble and choose “Apply Tool Properties to Subassembly” then select each assembly in the drawing to change its properties to your project defaults
Note you have to do this process twice once for the right assemblies and again for the left and you will notice that there is a bug in setting the insert parameter to left in that it does not work and the assembly come in as right handed (hopefully some at Autodesk will pick this up and change it)
- Now that all the assemblies have been updated to your project sets we have to save a new AssemblySet to a new folder using the intersection wizard.
First create an empty shared folder on the network to store your new intersection assemblies as follows
Next to create the Assembly Set just select the intersection marker and then “ Recreate Corridor Regions”,
Now you are ready to go just remember where you saved the assembly set and that if you even need to have two or more assembly sets for different intersections in the same drawings you will have to rename the assemblies in one of the assembly sets. To do this to create a simple intersection in a blank drawing using one of your assembly sets and add and extension such as (Type2) to the end of each assembly name and resave it. If you do not do this each time you import an assembly set with the same assembly names either nothing will be imported or you will get a mix and match of assemblies.
Also If you have the assemblies already setup in older project drawings you can bring them forward into a new drawing by either
- Copying and pasting the assemblies from the old drawing to a temporary drawing using Ctrl+C and Ctrl+V (I have found that sometimes this does not work and the assemblies spread out into pieces)
- Another method is to use insert to pull in the drawing with the right assemblies drawing. This inserts the assemblies as a block you have to explode and then purge the block of each assembly from the drawing or you will have two copies of the assemblies.You also have to rename the assemblies in the prospector to keep clean and tidy has (1) gets added to each name.
Sunday, 11 September 2011
Tuesday, 6 September 2011
Selecting a Civil3d Profile when its in the drawing but cannot be seen
Tried audit, recover and also tried changed the elevation limits for the profileview to see the profile so I could edit it with no luck. All layers on and thawed.
I knew the profile was in the drawing but how could I select it and edit it when I could not see it. Qselect to the rescue.
- First using toolspace I changed the style assigned to the profile to a unique name.
- Then a typed qselect and selected the following settings.Object Type = Profile, Property = Style, Value = Unique name of the style
- The command line updated saying one object was selected
- With the object selected I right clicked and choose Edit profile
- Selecting Profile Grid View no data on the profile was displayed.
- So using Insert PVI button at the profile view I inserted a couple of new PVI and bang the profile reappeared.
locked to the intersection. I edited the profile data now available and rebuilt my corridor and everything was great once more.
Saturday, 3 September 2011
VB.net code to find average height of PVI in Civil3d
With a little bit of playing around my initial thought was confirmed.
This is because the general pitfall with labels, be it direct object labels or those nested in bands that use expressions, are that the content available for use in the label or expression are object specific and you only have access to that specific objects properties. (There are the odd exceptions to this but not many that jump to mind).
You should note, however, that the objects properties you do see in expressions are only a limited selection of those object properties that can be accessed with C# or VB .net.
Now, when I first saw expressions demonstrated in an early demo of Civil3d 2007, I thought these labels and expressions are great ! No more text updating. But then I thought, what if you could call VB.net sub routines from these labels/expressions to recalculate on the fly as well and update the label ? That would be awesome. Alas, this is yet to eventuate.
Three wishes I have had for expressions for a while are:-
- As above vb.net routines could be called from expressions.
- That pipe expressions in bands could access all the properties of structures attached to them upstream and downstream.
- If statements should be able to return text answers like, if statements in Excel.
This problem can be easily solved using VB.net, to do it I stitched together a number of bits of code freely available on the web, as I am a bit rusty on coding at the moment having not done any since NZAU a couple of months ago. Here is the process I went though:-
First I had a look at the shipped samples to see if there was an example that worked with profiles to see how to access a profile information. I found one here: C:\Program Files\Autodesk\AutoCAD Civil 3D 2011\Sample\Civil 3D API\DotNet\VB.NET\ProfileSample\readme.txt
To get the example code up and running, to walk through the code refer to the process outlined in my earlier post here Now all of the shipped examples work by generating objects from programmed settings and not by selecting existing objects. That’s fine for shipped examples but in the real world we want to select an object in the drawing and work with it. To see how to do this, there is a good example available here posted by Joshua Modglin . It deals with selecting alignment objects so I downloaded the source code and modified it as highlighted below to select profiles only.
Next, I added a sub routine code to output the calculated PVI average to the drawing as a text. In line 55 of the code above reference is made to the routine “CreateText”. To create this routine I just took the code from the online developer help here and removed the imports highlighted below as we already have them in our class and do not need to double up.
Then I added the following lines of code to pass text to the sub routine and ask the user for the insertion point for the text.
Once complete I tested the code by “netload” ing the test.dll and calling the new command “Profileaverage” . It worked as follows and you can download the source code here compiled for 2011 32bit.
Thursday, 25 August 2011
Old fashioned Linetypes with text, unreadable when given Lineweight
and in the blowup viewport use the viewport layer lineweight override to have a lineweight a bit thinner.
But I came across an issue with our old style linetype that if you give them a lineweight the text becomes unreadable. So Googled the
problem and found these two helpful posts. Basically you have to create a linetype with the text as a true font type text object.
Note also make sure in your .ctb file for the color that the use object lineweight is set to yes or the line will still appear thin on the print.
http://forums.autodesk.com/t5/AutoCAD-2007/Printing-lineweight-linetypes-text/td-p/1831207
http://thecadgeek.com/blog/2010/07/linetype-text/
Came across this two helpful posts that helped me fix the problem
Monday, 22 August 2011
Civil3d and Google Plus
If you are into Civil3d and have not gotten an invite to GooglePlus and would like one. Add a comment with your written email (i.e ralstogj at gmail.com) below and I will send you one of the 150 invites I have to give away and maybe we can setup a Civil3d hangout if your interested.
Sunday, 21 August 2011
Strange Pipe Style Behaviour
the colour of the line changes to what ever the color of the current layer not that in the style every strange.
Tuesday, 16 August 2011
Civil3d Profile Band Text Override (without exploding)
if the software designer/programmer adds overrides to allow people to achieve what they want without taking a step backwards that is always appreciated.
I case in point is the “EditlabelText” command that was added in 2009 from memory. Just type the command and select the
band text you want to change or ctrl click the label and then release everything and press the right mouse button to
see the option in your shortcut menu. The second method only works for some text objects.
The command lets you override most band text with whatever you like without exploding the ProfileView. The one downside of the method is if you regenerate
the ProfileView the overrides are removed.
Thursday, 11 August 2011
Tuesday, 26 July 2011
Thursday, 21 July 2011
Working with SHP Files, MAP3D and SSA
I am currently working on a number of stormwater, sewer and watermain network projects with master plans for future development that will eventually discharge into council infrastructure downstream of the development sites. The master plans are pretty fluid changing quite often to meet market demands. So I thought I would take this opportunity to get into MAP3D and SSA to setup a downstream SSA model of existing infrastructure to plugin upstream development scenario's to see the effects on the existing infrastructure.
To date I have never really gotten into MAP and SSA about the most advanced thing I have done in MAP is get some contour shp files and extract the contours as polylines and attach elevations to them to built a surface in Civil3d. To do this I have used the process that Jason Hickey describes in this old post Civil4d.com and of course in trying to find this link I just found a load of old MAP tips posted by Dana.
Anyway to get started with my model I did a search of the councils website and located the name and number of the councils GIS Manager and gave him a call. This can sometimes be the hardest part of the process finding the right contact to be talking to in council to get the right data. Sometimes there maybe a charge to obtain the data but in my situation there was not as I would be auditing the data and updating any errors I found.
In due course the numerous shp files with all the data arrived by email. I should mention that for a pipe network there will in fact be numerous shp files as an individual shp file is written for each type of object so you will have at least one file for pipes and one for structures.
To start I watched Dana’s post here on importing GIS data into SSA and thought I was off and would magically have an SSA model in no time. Not so here are the traps I found on the way:-
Trap number 1
You won’t know what shp fields to map to the SSA fields on the import process.
To found out what shp data fields to matchup to SSA fields you are going to have to open the SHP files with MAP first and review the supplied data before you go into SSA.
What got me was what Dana pointed out in her post the mapping of Upstream and Downstream node ID’s. The SSA import progress takes a guess at what data fields these maybe in the pipe shp file but if that guess is wrong then no pipes at all will appear in your SSA model and you start scratching your head.
To find out what shp database fields I had to map to the Upstream and Downstream nodes I opened the pipe and manhole shp files in MAP
Aside
Before I go any further I should mention there are two ways to open a shp file import them into Autocad or connect to them. As mentioned earlier my knowledge of MAP is pretty limited so to get up to speed a bit I watched Rick Ellis 2009 AU paper on MAP here it gives a good overview of a number of basic tasks civil engineers may want do in MAP and covers the importing versus connecting scenario’s. Basically I have been importing data but now as a want to return the updated shp files to council, I am connecting to update the original data.
To deduce what field’s of the pipe shp objects represented the up and down stream nodes I
- Connected to the pipe and manhole shp data files in map
- Located a pipe of interest
- Selected the manhole nodes at the start and end of the pipe and pressed ctrl+1 to bring up the properties window. Noted down the manhole name
- Selected the pipe between the two manholes/nodes and pressed ctrl+1 to bring up the properties window and Noted down the the pipe field names with the corresponding manhole names.
- Selected the start and end nodes to get their names and then selected the pipe in between the nodes and looked for the manhole names in the property window to find the correct node fields.
I happened to know the flow direction of the pipe so new which was the start and end manhole/node.If you do not know the flow direction you can look for the invert field and from the higher invert deduce the upstream manhole. From here I went back to SSA and mapped the correct nodes to the start and end and the pipes came into SSA.
Trap Number 2 You have to also map the upstream and downstream invert levels of the pipes correctly
or on import in SSA your inverts will be missing or the same value
and also correctly map the invert and junction elevations for the manholes.
Trap Number 3 Not all the GIS data supplied will be correct, you will need to find the incorrect data clean it up and correct it in the shp file in MAP or SSA. I chose to do the clean up in MAP Step 1 First you should label your objects with object data so you can visually see what objects have the incorrect data. There are two different ways to label your objects depending on if you have imported or linked to the shp file data. If you have imported the data you use blocks with attributes – see pages 7 to 9 of Ricks AU hand-out (here) for the process or if you have linked to the data see the 1hr 2min mark in his presentation video or do the following.
- Type mapwspace at the commandline
- Goto the Display Manager,
- Double Click the shp file data you want to label or Select the object and Right Click select edit style.
- Check out the shipped label tutorial. To label the manholes I selected Label Feature
- Under Property to display choose “expression”
- Added the following expression with two fields of data for the manhole lid level and the invert
- Ended up with the smalller of the two labels in the following screeen capture to compare against the values in the larger from an historical as built xref
Note: You can label your pipes with data in a similar fashion.
Step 2 In my network some manholes had zero elevations or were in the wrong vertical datum. To find them and fix them I did the following
- To locate the manholes with the incorrect data you use filters or queries on the data or use the Data Table view. I chose to use the Data Table View option
- To open table view select an object and right click, and choose “Show Data Table”.
- First to check whether the objects with zero data were in my project area I shift+selected each row with 0 elevation in the Data Table and then right clicked and choose select. This highlighted each object with a grip so I knew where they were in space.
- Now to update the objects with zero elevation I looked at the zcoord column which was lid level and sorted the column into ascending order then I just clicked on each row on the left-hand side and the view jumped to the structure in question and I typed in the correct lid level according to the underlying as built xref.
- Next I did the same for the invert levels and the structures with the incorrect elevation information which in my case were easy to find as they were exactly 100m out or 0.
- To force the changes back to the shp files and database you have to check the information as shown above.
Trap Number 4 The crash. Civil3d/MAP kindly crashed while I a dozen or so objects checked out of the shp file so the the objects disappeared from the updated shp files. So always check in object as soon as you have edited them. To pull the objects back into the updated file from the original emailed shp file you have to connect to both the new and the old shp files. You can create the connect to the original data using a filter to just filter the data down to the objects you want.
then do a bulk copy from the tools button on the Map Explorer tab
and map the data to be copied from one shp file to the other
Trap Number 4
Don’t get confused with the manhole invert. When dealing with the situation where you have two pipes coming into a node with different incoming inverts and one out going pipe the invert of the manhole will or should be the lowest invert. There are upstream and downstream inverts in the pipe objects which store the individual pieces of pipe information,Label the pipes to see this information on screen
Trap Number 6 Some pipe or manhole objects maybe completely missing. You will have to add them to the shp files. Check out the tutorial Drawing objects Straight to shp file or quickly
With this method you have to type in alot of object data. I see you can create a class of object maybe you can have data filled automatically in the object class not sure still have to investigate.
Also see SSA has a GIS export that you can map object data to specifically named fields in the shp file so this maybe a quicker way to create missing objectsNow we have good data to go into our SSA Model.
P.S. Here’s another blog on of interest on the importing of GIS data into Civil2012 that I found. https://totalcad.wordpress.com/2011/05/02/importing-gis-data-into-pipe-networks-with-civil-3d-2012/