Tuesday, November 29, 2011

3Dconnexion SpaceMouse Pro

Today 3Dconnexion announce a new product called SpaceMouse Pro. The product SpaceMouse Pro_Topfits in the same class of 3D mouse as the SpaceExplorer with some added improvements in ergonomics. The hand rest is full size and soft coated for comfort. The buttons for zoom have been rearranged and the keyboard keys for Esc, Shift, Enter and Ctrl have been made larger and at an easier reach to the hand on the 3D mouse. This should make it so you don’t have to use the keyboard as often with your left hand.

There are four buttons on the top are context sensitive to the open program (although I’m hoping they can be context sensitive to objects in Civil 3D). It also puts what the numbers do up on the monitor, so you know what each button does without looking down at the mouse. This lets you keep your eyes on the monitor while you design. The mouse still has the 3D Navigation with six degree of freedoms to allow easy navigation through a model. Another added benefit is new drivers with a virtual number pad. This allows you to keep your hands on your mice and enter numbers using the regular mouse.

For more information take a look at their website, if you are at Autodesk University this year stop by their booth to test drive it in person.

Wednesday, November 23, 2011

Insert Drawing as Block

The way I’ve found to insert a drawing into another drawing as a block takes a surprisingly lot of code. This function I’ve created takes a file name, inserts a block and returns the ObjectId of the newly inserted block.

    Private Function InsertDwgAsBlock(ByVal fileName As String) As ObjectId
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim db As Database = doc.Database

Using tr As Transaction = db.TransactionManager.StartTransaction
Dim blkTable As BlockTable = tr.GetObject(db.BlockTableId, OpenMode.ForRead)

Dim blkTblRec As BlockTableRecord = blkTable(BlockTableRecord.ModelSpace).GetObject(OpenMode.ForWrite)
Dim blkObjId As ObjectId
Using dbInsert As New Database(False, True)
dbInsert.ReadDwgFile(fileName, IO.FileShare.Read, True, "")
blkObjId = db.Insert(Path.GetFileNameWithoutExtension(fileName), dbInsert, True)
End Using

Dim blkRef As New BlockReference(New Point3d(0, 0, 0), blkObjId)

tr.AddNewlyCreatedDBObject(blkRef, True)
Return blkRef.ObjectId
End Using
End Function

The code doesn’t show how to get the filename, but there are plenty of examples on the internet to accomplish the task.

Wednesday, November 16, 2011

Civil 3D Wish List

Want to have a voice on what wishes Autodesk should work on in future versions of Civil 3D? Then check out the AUGI Wish list for Civil 3D. Let your voice be heard.

Monday, November 14, 2011

2d to 3d Polyline

If you’ve ever received contours from a third party source you may find them without elevation. Civil 3D does have a tool to add elevations to them, unfortunately it only lets you select one polyline at a time and then type in the elevation. If you download, or install the UKIE Country Kit, the command is located in the Toolbox of the kit after you install it. The command lets you use a fence to assign the elevations for a range of contours.

You can download the country kit from this link:

There are also third party programs available if you don’t want to download the UKIE country kit.

Wednesday, November 09, 2011

Corridor Compute Materials

Sometimes I’ve found I’m working on a project using sections and find that the section I need hasn’t been created. I get confused because the drawing has the needed surface in it, but the section isn’t showing up in the list when I go to try to compute the materials. It usually happens when I deleted an old surface and then come want to use a new one. To sample the missing surface go into the Toolspace and right click on the Sample Line and choose the properties. Then go into the Sections Tab and press the Sample more sources… button. From the Selection Sources dialog box choose the available source and press the Add button. You can also remove all of the section from this dialog also.


Tuesday, November 08, 2011


Have you ever been working on a drawing and wanted to save it at the current point in time and still work in the current drawing? Well you can perform this task by copying the file using Windows Explorer, but it seems it would be a bit of work that isn’t needed if you knew about the SAVE command.

SAVE – Saves the current drawing in the same manner as Save As, but you are left in the original copy.

QSAVE – Quick save, saves the current drawing.

Now it seems a bit counterintuitive to use the SAVE command to create a copy of the current drawing, but that’s the way it works and I imagine it made sense at the time for the software developers. The QSAVE is the command used to simply save the current drawing.

Monday, November 07, 2011

Autodesk University 2011

After Thanksgiving I’m heading to Autodesk University. At the event I’ll be wearing a bunch of hats.

One of the ways I’ll be participating at Autodesk University (AU) will be as a speaker. I’ve got two sessions of Sanitary Musings, both on Wednesday. “In this unconference session, we will discuss sanitary sewer design using AutoCAD® Civil 3D®. We will evaluate the success of pipe rules; are they effective? We will talk about the best workflow for utility conflict resolution and share Label tips for communicating design intent. We will also talk about what to do when the proposed ends and the new begins. Finally, we will discuss how Boss StormNET® fits into the process.” There should be space available in one or both of the sessions. Now the session won’t be me presenting a lecture, but the audience members doing most of the talking with me facilitating the discussions. If you are planning on attending the session? Let me know I need some help from someone to take notes.

Another way I’ll  be participating is as an Exhibitor. Come by and meet during nearly all of the exhibit hours (I’ll be missing an hour due to a conflict with my Unconference sessions). Learn about all of the great services I can provide.

During AU I’ll also be checking out the media events and I’m sure a few meeting with other exhibitors. Some of the meetings may even end up as blog posts.

If you are also heading to Autodesk University stop by and say hi.

Select All Blocks in a Drawing

Occasionally I might want to get all of the blocks in a drawing using .NET. The way I accomplished this was to use the Selection Set sample code provided by Autodesk and then use the Typed value of “INSERT”. The insert is the start portion of the DxfCode for blocks.

    Private Sub GetBlockIdsBySelection()
'' Get the current document editor
Dim acDocEd As Editor = Application.DocumentManager.MdiActiveDocument.Editor
'' Create a TypedValue array to define the filter criteria
Dim acTypValAr(0) As TypedValue
acTypValAr.SetValue(New TypedValue(DxfCode.Start, "INSERT"), 0)
'' Assign the filter criteria to a SelectionFilter object
Dim acSelFtr As SelectionFilter = New SelectionFilter(acTypValAr)
'' Request for objects to be selected in the drawing area
Dim acSSPrompt As PromptSelectionResult
acSSPrompt = acDocEd.GetSelection(acSelFtr)
'' If the prompt status is OK, objects were selected
If acSSPrompt.Status = PromptStatus.OK Then
Dim acSSet As SelectionSet = acSSPrompt.Value
'Application.ShowAlertDialog("Number of objects selected: " & _
' acSSet.Count.ToString())
For Each objId As ObjectId In acSSet.GetObjectIds
End If

End Sub

m_BlockList is a collection of ObjectId’s that I use elsewhere in the code. I use a list so I can remove items from the list or add to it later. There isn’t much flexibility adding or removing items from a SelectionSet.

Thursday, November 03, 2011

Sundt - Construction Technologies

Here’s a video that was sent to me for Sundt’s presentation at the AASHTO Subcommittee on Construction Conference. Eric goes through how Sundt is using the available technology to make models for construction projects through the whole process.

Are you a contractor looking to add this capability to your arsenal of tools? Then contact me to get information on how I can help you implement this work flow.


Blog Widget by LinkWithin