Ad

Friday, December 21, 2012

Civil 3D Apps

Merry Christmas and Happy Holidays,

All I want for Christmas is some feedback of the Apps I’ve posted to the App store and was wondering if you could help me out with this request. So feel free to leave a comment or post a review on the Autodesk Exchange App site, if you downloaded one of the apps. I am also interested in hearing how likely you are to purchase an App from the app store in the future.

Links to the Apps may be found to the right under the Autodesk Expert Elite Logo.

Like one of my old posts and want to see it turned into an App? Leave a comment and it might become a reality.

Thursday, December 20, 2012

Data Shortcut Blues

There appears to be an issue in Civil 3D 2012, and maybe other versions of the software, where it won’t let you create data shortcuts. The prompt that comes up informs that you must save before creating data shortcuts. Unfortunately after a save one still gets the error message.

One such cause of this error is corridors doing something automagically that causes them to change there status right after a save. It doesn’t happen to all corridor objects, just some of them. To get around this error lock the layer the corridor exists on. This prevents Civil 3D from changing the corridor’s state after a save.

Friday, December 07, 2012

Toggle Surfaces

There’s a new App in the Autodesk App Store. The new App toggles all of the surfaces in a drawing from one of showing it’s self to one of not showing anything (or at least the surface with the list amount of things showing).
The app cost is a reasonable $2 and is available now.  http://apps.exchange.autodesk.com/CIV3D/Detail/Index?id=appstore.exchange.autodesk.com%3asurfacestoggle%3aen
Here is a video showing the command in action:
Unable to display content. Adobe Flash is required.

Tuesday, December 04, 2012

AutoTrack - Integrated Design

When I think about integrated design Civil 3D is far from what I think of. Autodesk appears to be focused on the bright shiny things which they think will sell seats rather then integrating the design tasks a civil engineer needs to design. It's refreshing to see a company approach a product through an integrated approach with the AutoTrack product. Here's a video of one of the features of the program, roundabout design.

Did you watch the video? Did you notice the striping changes with the grip changes? Did you notice the signs move and point towards the correct location? An integrated approach to design, where most of the linework to create a roundabout is created as you design. It is then directly linked to a corridor to build a surface. What's great is that you can modify the linework outside of the corridor, this way you don't have to wait for the corridor to get built to see the changes that will occur.

AutoTrack also includes features for turning analysis, rail, airports, and rail. The product works with AutoCAD, Civil 3D, Bentley products, and Briscad. I currently do not do much work projects of the size necessary for this tool, but if I did I'd definitely look at using this product to make me more efficient. http://www.savoycomputing.com/

Sunday, December 02, 2012

Saving Volume Analysis

Icons are often times confusing, especially on dialogs you may not use everyday. One such place is the Volumes. On the palette there is a buttons to export and import volume entries from/to a file.

image

The buttons are easy to use. Use the export button to create an XML file to reflect your volume entries, and then use the Import button to bring them back in. This way you won’t have to recreate them each time you open a file. If you are standardized on the names of surfaces, you can use the XML file for all of your files.

Thursday, November 29, 2012

Autodesk Expert Elite Program

Man I take great pictures. Just look at this one that took place yesterday. Not quite sure why I have such a goofy face for this one.

For some reason Autodesk thinks I’m Expert Elite and belong in a limited group of Autodesk users across the globe. Fairly cool getting a certificate, pen set, and some additional privileges. I think I might just crop Carl out and start using this picture as my profile picture.

Autodesk University Questions

Autodesk University  is a great place to get answers to your questions. Sometimes it’s good answers. Like when I should a Civil 3D user how to apply superelevation to an alignment without a curve. Other times it’s not so good news like not having a civil BIM design program.

If you missed AU and want to have an example of an answer, IMAGINiT Technologies was kind enough to answer a question. Below is the video, enjoy!

Wednesday, November 28, 2012

PI Station Label

There is a new App available on the Autodesk Exchange Store. It’s a PI Station Label command that uses a mLeader object to label a PI point on an adjacent polyline, alignment, or feature line. The price should be right at Free. So download it from this page: PI Station Label

Also check out my other App: ExtractC3DSurfBoundaries

Tuesday, November 27, 2012

Subassembly Composer Class

Notes from this session:

  • Cool idea link the slope and width value through the API. Using L2.slope and L2.Width instead of using the values. This way if I decide to use a different value, I only have to change it in one place.
  • Use –infinity% (or infinity%) to get a vertical daylight to target a surface.

Dueling Large Scale Printers

It’s Autodesk University time. This year in addition to all the great classes there appears to be a battle of the large format printers, either that or I’m making it up. Today I got not one, but two press releases for large format printers. Who do I give top billing to? HP or Epson?

Here’s some information for HP. They are located in Booth 120.

“At Autodesk University 2012, HP is demonstrating its award-winning portfolio of cloud-based large-format printing solutions and all-in-one workstations. These offerings deliver mobility, simplicity and quality to design professionals.

Found in the HP Platinum Sponsor Lounge and booth 120, the new HP Designjet T120 and T520 ePrinter series are the industry’s first web-connected, entry-level large-format printing solutions. Together with the free HP Designjet ePrint & Share web service, these devices provide large-format printing through the cloud from virtually anywhere. (1) HP is also demonstrating the HP Z1 Workstation, the world’s first all-in-one workstation with a 27-inch diagonal display.”

Here’s some information from Epson. They are in booth 645.

“Epson America will offer hands-on demonstrations of its new line of large-format color plotters at Autodesk University 2012 at the Mandalay Bay in Las Vegas this week. Epson’s booth (#645) will showcase the new T-Series line – the Epson® SureColor® T3000, T5000 and T7000 – designed specifically for today’s engineering and scientific professionals, including live demos and a variety of output samples on different media types. In addition, attendees are invited to stop by to enter for a chance to win an Epson SureColor T3000 24-inch plotter at the show.”

Check out the booths if you are at AU or online if you aren’t able to make it.

Wednesday, November 21, 2012

Civil 3D 2012–C3D Stock Subassemblies

Believe it or not there are some bugs in the subassemblies that ship with Civil 3D. In addition there are some cases in a design where a custom coded subassembly is the best solution. This is especially true when repetitive code is used that doesn’t work well in Subassembly Composer.

To correct any bugs or create your own subassembly a good place to start is using the code that ships with Civil 3D. The code is located at:

C:\Program Files\Autodesk\AutoCAD Civil 3D 2012\Sample\Civil 3D API\C3DStockSubAssemblies

I usually copy the project to a different location. This way you can always get a fresh copy and you move it outside the Window’s UAC. Once open you first must add the correct references. The easiest way to do this is to set the Reference Paths:

image

Next you might notice a plethora of errors showing up. This is because for some odd reason the programmers of the Subsassemblies, they did not like to declare all of their variables correctly. I guess they don’t believe in treating all warnings as errors. Strangely when you open the solution the check box on the compile tab of the project is set to treat all warnings as errors. Unchecking this box will remove all of the errors back to warnings.

image

Next if you are using a 64-bit operating system, or not. You’ll want to change the build target type. To do this open the Configuration Manager.

image

Next select the Active Solution Platform and select the <New… > option. Select AnyCPU from the list and base it on the x64 build.

Next we need to change the target Framework. The setting is set to .NET Framework 2.0. Unfortunately Civil 3D uses .NET Framework 3.5. So go in and change the Target Framework to 3.5.

image

Now rebuilding the solution and replacing the existing dll with the new one should then compile.

C:\ProgramData\Autodesk\C3D 2012\enu\C3DStockSubassemblies.dll

Friday, November 16, 2012

Ask an Expert, Get a Video Response

Autodesk University is coming up and the promotional emails are flying far and wide. One such promotion that hit my inbox is from IMAGINiT Technologies. This year they are offering to answer some of your most pressing questions with video responses, well three to five questions to be exact. Now I'm usually horrible at coming up with questions, so I need your help in coming up with some questions. Best of all the best question provider will win an IMAGINiT branded brain teasing wooden puzzle. So if you have a questions and want it answered by an IMAGINiT expert, leave a comment below.

The deadline for the questions ends this Monday, November 19 at Noon. So act fast if you want a chance for your question to be answered.

Sunday, November 11, 2012

Civil 3D 2013 Template

If you are lazy like myself you don’t want to spend time setting up a Civil 3D Template in Visual Studio Express, you just want to download a file and get started. Well here is a Civil 3D 2013 Template for VB.NET that may save you some time. The only think you may have to do is make sure all of the references are resolved. The resolved location should be C:\Program Files\Autodesk\AutoCAD Civil 3D 2013 or where ever you installed Civil 3D.

For mor information check out these links:

http://wikihelp.autodesk.com/AutoCAD_Civil_3D/enu/2013/Help/API_Developer's_Guide/0007-Getting_7/0008-Setting_8

http://through-the-interface.typepad.com/through_the_interface/2006/07/debugging_using.html

Thursday, October 25, 2012

Full Size Plans

I dislike full size plans. I think it’s the worst part of being an engineer. Rolling them up is a pain. If you walk and take public transportation as often as I do keeping them nice and un-sweaty is a worrisome issue. I’d much rather look at the plans on a computer, tablet, or half size. Unfortunately plan checkers insist of full size plans.

Now that I’ve built up large format printing, you might want to know that Epson has released a new line of large format printers. I don’t have room for one, but maybe you do. Check out their website for more information.

http://www.epson.com/cgi-bin/Store/jsp/Pro/Home.do

http://www.epson.com/cgi-bin/Store/jsp/Pro/SeriesSureColorTSeries/Overview.do?BV_UseBVCookie=yes

Monday, October 22, 2012

Adding PVIs to a Profile

Adding a PVI to a profile is relatively easy. There are some checks you will have to do. For instance you have to make sure the PVI station is within the alignment’s station range. Also you can’t add the second PVI with a lower station value then the first one. I think that’s about it. Here’s a small code snippet showing how it’s done:

Profile profile = profObjId.GetObject(OpenMode.ForWrite) as Profile;
double sta = 5;
double elev = 6;
profile.PVIs.AddPVI(sta, elev);

Monday, October 15, 2012

Rounding

Expressions can be hard, especially when you want to do hard things. Sometimes you may want to round to the nearest 0.1%, but show two digits. Not sure why one would want to do that, but if you did here’s an example of an expression that will do such a thing.

(ROUND({Pipe Slope}*10))/10

If you want the nearest 0.5% then this expression should work:

(ROUND({Pipe Slope}*2))/2

Happy expressioning.

Friday, October 12, 2012

Point Creation COM Style

Here is an example on how to create a point in Civil 3D using COM. To duplicate this feat, download the Civil 3D Reminders Pack. Right click on a folder, maybe the Points perhaps? Then choose create new class. Give the class a classy name. Then paste the code below into the class, replacing all of the items. Change the class name to match the file name.

Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AECC.Interop.Land
Imports Autodesk.AECC.Interop.UiLand
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Geometry
Imports Quux.C3DUtilities

<Assembly: CommandClass(GetType(PointCreation))>

Public Class PointCreation

<CommandMethod("CreatePointExample")> _
Public Sub HelloWorld()

Dim oCivil As New AeccAppConnection

Dim newPoint As AeccPoint
Dim dLocation(0 To 2) As Double
dLocation(0) = 0
dLocation(1) = 0
dLocation(2) = 0
newPoint = oCivil.AeccDoc.Points.Add(dLocation)

End Sub

End Class



If you don’t want to use the Civil 3D Reminders Pack make sure to download the Quux free edition and use a reference to it to get the AeccAppConnection to make it easier to get the Civil 3D document.

MLeader Direction

Adding multileaders to a drawing is fairly easy, one tricky item that isn’t quite evident is how to set the direction of the mLeader, where the mleader goes from left to right or right to left. In order to do this we can check the start point and the end point of the leader. In the small code snippet below I’m creating a vector that goes from left to right, if the start point to end point shows I need to go in the opposite direction then I make a vector to reflect this.

                        MLeader mld = new MLeader();
int ldNum = mld.AddLeader();
int lnNum = mld.AddLeaderLine(ldNum);
mld.AddFirstVertex(lnNum, poly.GetPoint3dAt((int)selectedPolyVertexParam));
mld.AddLastVertex(lnNum, endPt);

Vector3d vecDir = new Vector3d(1, 0, 0);
if ((endPt.X - poly.GetPoint3dAt((int)selectedPolyVertexParam).X) < 0)
{
vecDir = new Vector3d(-1, 0, 0);
}
mld.SetDogleg(0, vecDir);



Then the code sets the dog leg based on that direction. In my example I only have one leader, but if you have more you will need to make sure you apply the dog leg to the correct leader, rather then the first one in the code above.

Wednesday, October 10, 2012

Selecting an Object

Usually when you want the user to interact in selecting an object you want them to select a particular type of object. You don’t want to trust their ability to read the command line. In order to do this you can restrict what type of object AutoCAD will allow to be selected.

PromptEntityOptions opt = new PromptEntityOptions("\nSelect polyline near vertex to label: ");
opt.SetRejectMessage("\nObject must be a polyline.\n");
opt.AddAllowedClass(typeof(Polyline), true);
ObjectId polyObjId = ed.GetEntity(opt).ObjectId;



To do this use the PromptEntityOptions to add allowed classes. The hard part I usually come across is finding the class name. To easily discover the class name we can use the typeof() method passing the object type, in the case above Polyline. AutoCAD will then restrict what’s returned to this class type.

Saturday, October 06, 2012

Excel Grouping

Occasionally I spy something on screens that I haven’t seen before. I was recently in a meeting and noticed some graphics on the side of the screen in Excel. It was most certainly a feature I hadn’t learned about before.

image

Well it turns out it’s a feature that lets you group rows or columns together. It’s defintely a feature I wish I knew about before today. The feature is really easy to use to.

To start select the rows or columns and then press the Group button located on the Data Tab of the Ribbon.

image

The grouping may have multiple subgroupings. I see using this feature quite a bit now that I know about it.

Sunday, September 30, 2012

ExtractC3DSurfBoundaries

I’ve created my first app for sale on the AutoCAD Exchange Apps Store. The app is a single command which extracts all of the boundaries from surfaces in a drawing. It’s a fairly light weight app that I use on occasion to combine into an overall surface boundary. The program is compatible with Civil 3D 2013.

I’m working on a more involved App used in River Sections which is almost complete. A video of what this future can do may be found here: http://civilintentions.blogspot.com/2012/09/river-sections-for-civil-3d.html

Wednesday, September 19, 2012

Inappropriate Comedy - Agency Disclaimers

Not quite sure if additions to review agency required notes would be found funny or frowned upon.

image

Tuesday, September 18, 2012

Pointless Details

I’m trying my hand at comedy. Not quite sure if my details are the correct outlet though.

image

Sunday, September 16, 2012

SAC–Define Variable Value

Occasionally it can get fairly confusing on what a variable a value should be or I don’t want to use a Decision Workflow node. In these cases I’ll use a Define Variable. By defining a variable I’m able to encapsulate what a value should be throughout a subassembly without having a decision point and two different branches going out. In previous post I created an example for a decision workflow that adjusted an Y value. This is troublesome in that I now have to sets of node to show the same geometry. By using a Define Variable, I can avoid this problem. I replace my Decision with what is shown below.

image

image

image

I find it easier to work with SAC when I encapsulate the variables and not use decisions. I find it makes it easier to read what the subassembly is supposed to do and reduces the amount of points and links that are in it. There is also a performance hit the more points and links that are in the file, so using this method helps in the performance of creating complex subassemblies.

SAC–IsLayout and Conditionals

Sometimes using Subassembly Composer we can do some quite complex things. Often times we want to show a scenario in Layout mode and combine it with if targets are valid during roadway mode. To do this we can combine If statements by using the keywords AND or OR. This way we can use the same code and control how the subassembly will be shown in both layout and roadway.

For instance if I want to have a branch where I want to show a branch if in Layout or if the Offset Alignment target I’ve added to the Subassembly is valid. I’d use this string:

(SA.IsLayout)OR(OffsetAlignment.IsValid)

image

This provides the ability to control how the subassembly will be shown in Layout and Roadway Mode.

Here’s an untested SAC file for your use. If Google doesn’t let you download at first refresh the page and Google should change it’s mind and let you download the file.

Saturday, September 15, 2012

Adding a Profile PVI Through the API

The code below shows how to add a PVI to an existing profile. The code has the user select a profile and then the profile view the profile is in. Then using the picked point, or somewhere near it, a PVI is added to the profile.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.Runtime;
using System.Windows.Forms;
using acadApp = Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.Civil.ApplicationServices;
using Autodesk.Civil.DatabaseServices;
using Autodesk.AutoCAD.Geometry;

namespace TestBands
{
public class TestBands
{
[CommandMethod("TestBands")]
public void TestBandsCommand()
{
CivilDocument civDoc = CivilApplication.ActiveDocument;
Database db = acadApp.Application.DocumentManager.MdiActiveDocument.Database;
Editor ed = acadApp.Application.DocumentManager.MdiActiveDocument.Editor;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
ProfileView profView = null;
Point3d ptSelected = new Point3d(0,0,0);
ObjectId profileObjId = SelectProfile(civDoc, "Select profile section to edit: ", out profView, out ptSelected);

Profile profSection = profileObjId.GetObject(OpenMode.ForRead) as Profile;
double dElev = double.MinValue;
double dSta = double.MinValue;

profView.FindStationAndElevationAtXY(ptSelected.X, ptSelected.Y, ref dSta, ref dElev);

profSection.PVIs.AddPVI(dSta, dElev + 10);

ed.Regen();
ed.UpdateScreen();
tr.Commit();
}
}

public static ObjectId SelectProfile(CivilDocument civDoc, string prompt, out ProfileView profView, out Point3d ptSelected)
{
Editor ed = acadApp.Application.DocumentManager.MdiActiveDocument.Editor;
ptSelected = new Point3d(0,0,0);
try
{
PromptEntityOptions pops = new PromptEntityOptions("\n" + prompt);
profView = null;
pops.Message = "\nYou must select a Profile View:";
PromptEntityResult profileRes = ed.GetEntity(pops);

if (profileRes.Status == PromptStatus.OK)
{
// Get the profile view of the profile.
Profile prof = profileRes.ObjectId.GetObject(OpenMode.ForRead) as Profile;
Alignment align = prof.AlignmentId.GetObject(OpenMode.ForRead) as Alignment;
profView = ed.GetEntity(pops).ObjectId.GetObject(OpenMode.ForRead) as ProfileView;
ptSelected = profileRes.PickedPoint;
return profileRes.ObjectId;
}
return ObjectId.Null;


}
catch (Autodesk.AutoCAD.Runtime.Exception exe)
{
ed.WriteMessage("Error creating alignment: " + exe.Message);
}
catch (System.Exception ex)
{
ed.WriteMessage("Error creating alignment: " + ex.Message);
}
profView = null;
return ObjectId.Null;
}
}
}



This example is from a larger project that exports Civil 3D information to ISIS, MIKE, and HEC-RAS. It’s also being used as an example of how the bands do not update when using the API. To update the bands after adding a PVI one has to go into the Profile View Properties. This will cause the bands to reflect changes made using the API.

Wednesday, August 15, 2012

Civil 3D and VDC

The people at Sundt are at it again writing about VDC. A recent article was published over at ENR (PDF) on how they’ve leveraged Civil 3D corridors to help in creating quantities for construction projects. It would appear they have fully embraced modeling and used SubAssembly Composer to model retaining walls, pipe excavations, and other linear construction. Having done construction quantity take offs earlier in my career, I can definitely see the benefits of using design software to come up with the quantities.
Go check out the article and think about how you should be designing your projects. Shouldn’t we incorporate what they are doing into the design. This benefit would be more accurate designs, the ability to recognize conflicts with other utilities. Shouldn’t a BIM product have theses features? Why aren’t you asking for them?
P.S.: If you are the person asking for a conceptual design tool, please knock it off so Autodesk can spend money on BIM instead.

Ask for BIM

Please ask for BIM if anyone asks. Not the fake, crappy BIM that Autodesk calls Civil 3D, but real BIM. I’d love to model a site with curbs, gutters, pavement, sidewalk, cross gutters, retaining walls, curb ramps, and the like. Instead I’m managing surface labels to make sure I’m using the correct expression. It’s really disappointing to get a monthly email telling you to watch how Civil 3D and BIM can make your designs better, when in reality the program sucks at BIM.

It would be great to be able to easily label the top of wall, top of footing, and finish surface on both sides of the wall without being totally lost on where to put the stupid surface labels with expressions to get the correct elevations. Do I really need to manage labels to do the design and convey the design intent? Shouldn’t I be able to use the M in BIM to do the modeling? I’m beginning to think BIM, in respect to Civil 3D, means Building Is Missing. I certainly have a hard time building any of my, or other’s, designs in Civil 3D.

I recently was working on a project which is adjacent to another project in the bidding process. I thought hey I can model their design in Civil 3D. Unfortunately it became clear that using feature lines as curbs is sorely lacking. My tie in point was going to be a short distance into their improvements. How the heck am I supposed to model that? It’s definitely more difficult then it needs to be. Draw the feature lines representing the curbs, trim to the join line, making sure none of the elevations get inadvertently changed. Then hope and pray when you come back to the model that you didn’t accidently adjust the tie in elevations. Why can’t there be a curb object? Why can’t there be any of the objects we design?

This concludes my rant for today. Remember to ask for BIM, because if you don’t ask for it, you’re probably not going to get it. I have very little pull in getting Autodesk to add features, collectively we might just be able to make a business case for BIM in civil design.

Tuesday, August 14, 2012

Profile Grades in Plan

Sometimes we miss some helpful features in Civil 3D. One such feature is the ability to label profile elevation grades in plan view. There are two ways to accomplish the task.

The first is to use an Alignment Profile Geometry Points Label.

image

The trick to this dialog box is to make sure to select the profile to use and select the geometry points to label. This is important since you probably want only one label at each point. If you profile doesn’t have vertical curves you’ll want to uncheck the label low point and high point. For if you don’t then you’ll end up with both a low point/high point label and grade break label when the occur at the same PVI.

The other way to label profile grades in plan is to use reference text in a line/curve label. Adding the instantaneous grade to the label component will provide the capability.

SNAGHTMLdc6c1d0

Now you can label the alignment with the line and curve label to get the grade. This may also be used on polylines or lines if you want to label on the curb line or another location. I sometimes use this to label swale slopes if I have a profile on the centerline that represents the swale slope. Unfortunately this usually is a case where I’m faking in the slope, since the slope of the swale won’t be the correct slope since the centerline of the slope slopes towards or away from the centerline of the roadway due to the length of the swale being different then what is at the centerline. But that’s usually what is shown on the plans and is kind of correct since it will be staked based on the centerline elevations. It’s just good to keep mindful of the faking to make sure a minimum slope is achieved.

image

Sunday, August 12, 2012

Skew Angles

Sometimes calculating values in AutoCAD can be difficult if you aren’t quite sure where to look. For instance if you want to calculate the skew between two crossing alignments it might seem difficult. Thankfully there is some useful tools in the API to help calculate it.

The first helpful tool is the GetFirstDerivative method. This method calculates a vector value which provides you with the instantaneous direction of the alignment at the point provided. Using this method on the main alignment (riverAlign) and rotating the resulting value by pi / 2 (or 90 degrees) we can get the direction perpendicular to the alignment. We can then calculate the instantaneous direction of the crossing alignment (align). Depending on how we want to calculate the skew, we may want to rotate the vector by pi (180 degrees). We can then use the vectors calculated to get the angle between the two vectors.

Vector3d vector3DRiver = riverAlign.GetFirstDerivative(pt3DcollTempLine[0]);
Vector3d vector3DSection = align.GetFirstDerivative(pt3DcollTempLine[0]);
Matrix3d curUCSMatrix =
Autodesk.AutoCAD.ApplicationServices.Application.
DocumentManager.MdiActiveDocument.Editor.CurrentUserCoordinateSystem;

CoordinateSystem3d curUCS = curUCSMatrix.CoordinateSystem3d;
vector3DRiver = vector3DRiver.TransformBy(Matrix3d.Rotation(Math.PI / 2,
curUCS.Zaxis,
new Point3d(pt3DcollTempLine[0].X, pt3DcollTempLine[0].Y, 0)));
vector3DSection = vector3DSection.TransformBy(Matrix3d.Rotation(Math.PI,
curUCS.Zaxis,
new Point3d(pt3DcollTempLine[0].X,
pt3DcollTempLine[0].Y, 0)));
skew = vector3DRiver.GetAngleTo(vector3DSection) * 180 / Math.PI;



The above is small snipped of code to accomplish the calculation. The calculations may also be done with polylines and other AutoCAD objects that are derived from curves.

Monday, July 30, 2012

The Pace of Releases

Today press releases come and go. Products get announced and then new products get announced. Sometimes I’m on top of of it and sometimes I fall a bit behind. I’m currently behind and struggling to catch Dell Precision mobile workstation family 4Covetup, with press releases and other work. One such item I’ve neglected to keep up on is the new release of Dell Precision Mobile Workstations. Last week Dell announced their new workstation models designed for design professionals, the M4700, the M6700, and the Covet.

I’m not a big hardware guy, I just want to open up the cover and start working. As long as it’s going good, I’m going to be happy. The majority of the time I've been happy with the previous version. The next version looks just as good or even better. There’s even a model if you are into the prestige of an Apple like product called the Covet.

In this model Dell has included power saving methods to extend battery life by limiting the graphic card’s use when using light weight computing, such as checking email or surfing the web. While it’s not a complete solution since you have to still change the plethora of  power settings, Dell claims it will extend battery life for nearly all business day use.

Each of the products have have access to some of the most powerful processors and memory. In addition there is more options to have more storage with an additional storage slot. The products are 100% BFR PVC free, Energy STAR compliant, and EPEAT registered if you care about these types of things. I find the previous model adequate for my life on the go. Just today I traveled on a train doing the work. The one thing I do miss is a second monitor, but I don’t think that’s an issue with the product. It could just be lazy me not wanting to carry a monitor around. Plus I was assigned a seat without a tray table. I’ll probably skip this model, since I tend to keep my computer for 2 or 3 three years, but if you are like me and don’t mind buying a semi-custom machine you’ll probably want to check out this laptop.

Wednesday, June 27, 2012

Surface Boundaries

I noticed an option in the surface styles in Civil 3D 2013 that I hadn’t noticed before. It is possible to show toggle off the display of exterior and interior boundaries.

SNAGHTML3223be94

This would come in handy if you didn’t want to show interior boundaries around a building or a hill you are daylighting around. I think this feature may come in handy.

Corridor Retaining Walls

So I’m sitting in a class room and spy a drawing of a Retaining wall sketched out. Well not any retaining wall, but the retaining wall I’ve created in Civil 3D Subassembly Composer. Not quite sure if they are modeling walls like this in Civil 3D, but if they wanted to they could create the wall subassembly and use it to help model their project. The subassembly I create may be found here: http://www.civilreminders.com/applications I even created a help file for it: http://www.civilreminders.com/applications/caltranstype1rw

I may want to add the ability to model the Selective Backfill, but I think that may be a project for another day.

Transparent Commands

Often times I’ll need to do some calculations when I’m doing a task in AutoCAD / AutoCAD Civil 3D. I recently sat in a class to observe. One of the transparent commands that I didn’t know about was the ‘CAL transparent command.

This transparent command lets you use an expression to calculate the value. So if you wanted to create a line a certain distance based on two values that you have you could start the line command and select the starting point. Then type ‘CAL, then type in your expression. One valid expression is 2*6 to get 12 units. Now this is certainly a simple example with a number you could probably get in your head, but it does provide an example on how the transparent command works.

Monday, June 18, 2012

Autodesk Infrastructure Modeler projects via the cloud

Autodesk released the a new product called Autodesk 360 Infrastructure Modeler today. I’ve got to say I’m extremely disappointed in what Autodesk is providing for Civil Infrastructure users. I see lots of great BIM features for other disciplines, but when it comes to site design there doesn’t seem to be any movement towards improving the work flow.

Infrastructure Modeler 2013 is essentially being moved to the cloud to allow collaboration in the conceptual phase of a project. But who is asking for a conceptual tool? Is it you? Do we really need another way to create an alignment? Is pushing and pulling a point on the roadway the way you want to do design?

I want your feedback! Am I wrong? Is this what you are asking Autodesk to develop? You’d rather have a conceptual design tool that brings in data from Map 3D and then use an entire new tool set to create alignments, profiles, and corridors? I don’t get the AIM product or why it’s needed. It feels like it should be an added feature set in Map 3D or an improvement in Civil 3D for corridor generation at the time of alignment creation.

You’d rather Autodesk provide valuable resources to a conceptual design tool rather then having Autodesk Storm and Sanitary Analysis integrated into the product?

I just don’t get it. Please tell me why you are excited about this offering for the Civil Infrastructure users.

Monday, May 28, 2012

Profile View Band Labels

I took on a project which required replacing Profile View Band label text components, but I had a problem. The problem was that I couldn’t figure out a way to find out what the label was labeling. The Civil 3D API doesn’t provide access to what it is labeling, in this case. This caused the program to sometimes not replace the contents of the correct band label. The solution is to use the AchorInfo property of the label. Using this property I may find the station and elevation location of the label. This will return a nearly correct station value of what the label is labeling, even if the label is adjusted so they don’t overlap. The code that I was using is below. 

        private static ObjectId ReplaceBandLabelTextComponent(ObjectId vgpLabelObjId, ProfileDataBandLabelGroup profDataBandLabelGroup, List<PVIPointInfo> pviPtInfo, ProfileView profView)
{
double station = double.NaN;
double elev = double.NaN;

foreach (LabelGroupSubEntity label in profDataBandLabelGroup.SubEntities)
{
if (label.StyleId == vgpLabelObjId)
{
profView.FindStationAndElevationAtXY(label.AnchorInfo.Location.X, label.AnchorInfo.Location.Y, ref station, ref elev);
PVIPointInfo pviPtToUse = GetPviAtStation(pviPtInfo, station);
if (pviPtToUse != null)
{
foreach (ObjectId textObjId in label.GetTextComponentIds())
{
label.SetTextComponentOverride(textObjId, pviPtToUse.PointDescription);
}
}
}
}
return vgpLabelObjId;
}



Some of the objects are custom objects that I use to make it easier to pass information between the methods. I said almost correct in that with floating points computers use there is some rounding difficulties which may be encountered. The PVI might be reported at 23.32233412121 and the AnchorInfo at 23.32233418354. Most of the digits match, except for the ending digits. This will make any equality checks fail. To get around this we have to use a technique to see if it is approximately correct.



To do this I created an extension for double types. An extension makes the method like it always belongs to the object type. This way it may be used where ever I need it. The code is below.



    public static class DoubleExtensions
{
public static bool AreEqual(this double number, double number2)
{
double difference = Math.Abs(number * .0001);

// Compare the value
if (Math.Abs(number - number2) <= difference)
return true;
else
return false;
}
}



Source: http://msdn.microsoft.com/en-us/library/sy5fbaw6(v=vs.95).aspx



Now I put the code together and I can now replace the text in the correct label.

Thursday, May 24, 2012

Adding Items to a Palette

Don’t you just hate it when you know how to do something, but when asked to demonstrate the task it doesn’t work? Well this post is about one such instance, adding an item to a palette. It’s a rather simple process. You select a block or object in AutoCAD or Civil 3D, deselect it, then drag it to the palette. This video shows the steps.

Unable to display content. Adobe Flash is required.

I added a polyline, but subassemblies, assemblies, blocks or other items may be added.

FDO Import into Civil 3D

Sometimes we want to import GIS data into Civil 3D. This blog post will cover how to import the data using an FDO connection. FDO connections are great because they keep a dynamic link between the drawing and the data. So when the data shape files change the changes should be reflected in Civil 3D.

To start you will want to change the workspace to be Planning and Analysis. You can do this in the bottom right hand of the program using the settings cog and choosing Planning and Analysis.

image

More then likely you won’t have the Map Workspace open. To turn it on type MWSPACE at the command line and set the value to ON.

Next make sure the tab selected on the Task Pane is set to Display Manager and then click the cylindrical shape and choose Connect to Data…

image

This will bring up the Data Connect Palette. The Palette contains many different connection types. If you want to use a different data type go ahead, the steps will be similar. Now find the Add SHP Connection line item. Provide a Connection Name that makes sense. For this example I’ll be working with a sanitary sewer data set, so I’ll call it SHP_LosAngelesSewer and set my Source file or folder.

SNAGHTML6092bff

You can either select a folder of shape files or a single shape file. For this example I selected a single one. Next press the Connect Button. The schema will then be read from the file and the information shown. Now press the Add to Map drop button or use the drop down list to add data with a query. Using the Add to Map option will bring all of the data into the drawing. Using the query will provide a way to limit the data to bring in.

SNAGHTML60d4365

Using the query dialog box you can build a query. The one I use most often is the Locate on Map. This way I don’t have to import the entire County of Los Angeles Sewer data, but just a portion around the project I’m working on. To create the query use the drop down and select the how you want Map to determine which data to bring in. In this example I’m going to use an Inside Rectangle.

image

Once you do that you will be prompted to select the area you want with a rectangular selection. Then it will come back to the Create Query dialog box with the query filled in.

image

You can add other queries, but I’ll skip that for this post. Also now that you can import the data multiple times from one data source. Once the queries are done the data from the shape files should be shown in the drawing.

SNAGHTML61249fa

Having the information is great, but we probably want to distinguish between the different sizes or some other criteria. To do this we press the Style  button on the Display Manger tab of the Task Pane. This will bring up the Style Editor. Currently the information is set to be a default value. For simplicity I’m going to create an Automated theme by pressing the New Theme… button. This will bring up the Theme Layer dialog box.

image

I’m then going to change the Property that I want the theme to be created from to Diameter. The dialog box will then show the range of values. Then select the distribution type, I’m using Equal and the number of rules you want created. This will determine how they themes will be applied. You can always modify them if you don’t like how they are created.

SNAGHTML61895a9

Lastly we will want to create labels. To do this check the Create Feature Labels check box. Then press the button with the three dots. This will bring up the Style and Label Editor. Press the button next to Text field to get the Create/Modify Expression.

image

Then using the Text Function Concat, build how you want the label to be shown. For this example I’m using the Diameter, inch symbol and the material. Note that a single apostrophe at the beginning and end of the string value is what is used to denote text.

image

Make any other changes to the colors or fonts you wish to make. Here is what my label looks like.

image

Then exit back through the dialog boxes and you should then see your map with themes.

You can control the thems from the Display Manger, turning the information on and off using the check marks. There is lots of other things you can do with the data, but this is the starting point in bringing it in.

Wednesday, May 16, 2012

Is DropBox Obsolete?

Today Dell announced a new Multi-User 2U Rack Workstation for 3D Workloads. It got me thinking, is DropBox already on the road to obsolescence? It would appear the world is moving away from desktop computing and towards server based computing power. In 5 years will we be working on computers at our desk or through remote servers located in our offices or at a centralized location? If it does move this direction then DropBox in it’s current form becomes unnecessary for sharing files. Instead we will log in and use the data where it is stored.

While Dell is branding the product as a Workstation it appears to be more of a specialized server with supped up processing power for doing computations. In addition to the processing power, you also get to access the files from a central location, supplanting the need to copy data from one location to another. Essentially eliminating the need for DropBox. Will forward thinking owners grab control of the data and processing of the models?

Based on presentations by Autodesk the past two years at Autodesk University, Autodesk appears to have desires to move Autodesk products from the desktop to remote locations away from the users. Why have the architecture, structural, mechanical, and civil models in separate office locations when you can have them all in one location so they can talk to each other in real time. All of this depends on the world continuing to improve connection speeds. It has yet to be shown if this can be accomplished in the United States. Rural and semi-rural locations still are plagued with relatively slow data connections.

Thursday, May 10, 2012

Approximated Profile

Sometimes projects don’t demand full surveys. One instance maybe the replacement of a water line. In that case the survey information for the entire roadway may be overkill and only spot elevations above the pipe may be required. There are three ways available of accomplishing this task.

Way 1

  • The first step is to create a feature line representing the survey shots of the survey (Pg. 613, of Mastering Civil 3D 2012).
  • This line may then be offset to either side of the original (Pg. 616, of Mastering Civil 3D 2012).
  • The feature lines may then be added to a surface as breaklines (Pg. 122, of Mastering Civil 3D 2012).
  • A surface profile may then be created representing the existing grade over the existing pipe.

Way 2

  • The first step is to create a feature line representing the survey shots of the survey (Pg. 613, of Mastering Civil 3D 2012).
  • Next project the feature line to a profile view using the elevations of the feature line (Pg. 246, of Mastering Civil 3D 2012).

Way 3

  • Look at the Create a Profile without a Surface posts on this blog. Although there would be quite a bit of work to get it to work in Civil 3D 2013.

Friday, May 04, 2012

Subassembly Composer–Surface Link

Subassembly Composer can be a bit confusing sometimes. I’ve run into a problems creating shapes with them when one of the links uses the Surface Link from the Advanced Geometry Tool Box. The problem is caused by the Surface Link not being abled to use points to determine the start and end point of the links. Instead you provide the Start and End X values. You can do this via a Points X value or Offset Targets.

image

When you attempt to create a shape, it won’t work. It won’t work because SAC doesn’t think the points connect, even if they have the same X, Y values. In order to fix this you need to add a link between the Start Point of the Surface Link to the Point referenced in Start X, and the same for the end. Once the short links are connected for the start and end points then shapes can be created.

Monday, April 23, 2012

Dell Precision Tower

Today Dell announced a new line of Dell Precision Tower Workstations. Dell was nice enough to invited me to San Francisco last week to attend the event. Apple Event 003The new line appears to have some great new features.

Over the years many products have been optimized for maintainability and assembling. This new lines incorporates many of those tried and true features in some of the components that users commonly remove and replace. For this product the main parts are the hard drives and power supply. The hard drives have doors at the front of the unit to provide easy access. Open the door, pull out the hard drive, and then slide it back in. While not a feature I could see used commonly with Civil 3D, I could have used that feature when I traveled between office locations at my last regular office job. The company had mostly standardized the computers, instead of dragging around a computer I could just bring my hard drive and slide it in and start working with the workspace that I’m accustomed to.

If you work in a large office the easy exchange of the power supply might come in handy. Just pull the unit out from the back andApple Event 002 slide a new one it. No extended downtime waiting for the IT person to replace it. Another feature is the ability to store the tower workstation in a rack. This feature could be useful in your office if you start to do renderings in 3ds Max. Create a server farm when people go home, and have a central place to make sure all of the workstations are on. Save some time of not having to wander around the office to make sure the machines are on before you go home for the night.

The price points of the product are fairly reasonable for a workstation.

Pricing and Availability:
The Dell Precision T1650, T3600, T5600 and T7600 workstations will be available for purchase worldwide starting in May. Pricing for the T1650 will be available in May.

  • The Dell Precision T7600 pricing starts at $2,149 USD
  • The Dell Precision T5600 pricing starts at $1,879 USD
  • The Dell Precision T3600 pricing starts at $1,099 USD

One thing of note, besides the product launch was some of the items talked about. With lower prices of computers and devices we can have multiple devices to fit the type of work we are doing. A tower at the office, a tablet in the field, and a smart phone as we travel between meetings. I feel it’s probably a fact that I have been overlooking with the drop in prices of devices.

The Intel representative talked about computing power. He mentioned how we aren’t using all of the power in the devices that we do have. He talked about one case where a relatively small amount of code change, around 15 lines of code, provided a large reduction in the time to process the data. This is definitely true of Civil 3D. I can see many instances where multithreading could improve the performance of Civil 3D. Think how much quicker a drawing could be opened if the graphics card and 8 cores could work together to make sure all of the labels in a drawing are up to date.

Since I purchased a Dell Precision laptop last year, I don’t see a Tower in my future. But I’ve been happy with my existing laptop and would look to purchase Dell products in the future.

Friday, April 20, 2012

Upgrading to Civil 3D 2013 (Programming)

With Civil 3D 2013 comes some changes in the API. Many of the various items have been combined to streamline the API. This also will create some headaches in doing some additional work to upgrade.

The first thing you may want to do (probably have to do) is to upgrade to Visual Studio 2010. You can use the free or pay version.

Next double click properties and open up the Application tab. Change the Target framework to “.NET Framework 4”. It will make you restart the project, so press the yes button.

image

Next we need to change the references from 2012 to 2013.

image

You can change the reference in vb.NET from the properties or in c# in the Solution Explorer. For the AeccXLandLib and the AeccXUiLandLib you want to not use them any more. You will want to use the preassembled Civil 3D version which may be found in:

C:\Program Files\Autodesk\AutoCAD Civil 3D 2013

For 2013 you will also need to add accoremgd.dll as a reference.

image

For 2013 you will need to change PointEntity to CogoPoint.

Next you will need to replace all of the instances of Autodesk.Civil.Land, Autodesk.Civil.Pipe and the similar typed names. Remove the Land and Pipe liked parts and it should work as long as you aren’t using some of the methods that have changed. If there is you will have to figure out how to change them.

Friday, April 06, 2012

Profile View Bands

I’m working on a top secret project. One of the tasks is modifying the profile view band labels to show information from a surveyed point’s description. I was having a bit of trouble finding were to grab the profile view band labels. The bands are a part of the Profile View object in .NET, but that only controls how the band shows the information.

In order to get the Profile Band Label Groups one has to use the GetAvailableLabelGroups static method (for 2012, in 2013 the updated method is called GetAvailableLabelGroupIds .

ProfileView profView = ssResult.ObjectId.GetObject(OpenMode.ForWrite) as ProfileView;

RXClass profDataBandLabelGroupRXClass = SystemObjects.ClassDictionary["AeccDbProfileDataBandLabeling"] as RXClass;
ObjectIdCollection profBandLabelsObjIdColl = ProfileBandLabelGroup.GetAvailableLabelGroups(profDataBandLabelGroupRXClass, profView.ObjectId, false);



Once I have the Label Group I can then use the information to modify the labels. The RXClass information I got from the Swamp.

Sunday, April 01, 2012

Civil 3D 2013–Detail Tools

It’s hard to believe just four years ago I was wishing for Detail Tools to be included in Civil 3D. Well with this release of Civil 3D my wish is finally being granted! Well mine and some other people’s wishes, OK it’s just me voting over and over again for a period of time.

Well my wait is over. There are tools now to create details that are related to Civil design, even in 3D! No more having a drafter fake a detail that doesn’t work, you’ll now get a nice 3D image of the detail to make sure everything works. I know after working in construction, there’s nothing worse then ordering a 10 foot metal fabricated piece and only having to really need 3 feet. It’s kind of hard to fix that issue especially when there is an eight week lead time. Well those times are things of the past.

To create the details there is a tool that has a collection of objects. The standard primitives include Pavement, Curb, Gutters and Plane. You know the things we are designing. The dialog is customizable by allowing you to create your own shapes and add it to the standard list or a custom list of objects. Now while it would have been nice to be able to create details from the model directly, this does bring us one step closer of a fully integrated design product.

image

Detail tools are pretty useless without a corresponding tool to note where those details are located on the plans. Thankfully this new feature also includes a way to label them in Plan view. For instance I had a detail for the parking lot stripping. I tag the line work in the plan using the QTO tools and link it links it to the detail number. There is now a labeling feature that attaches to the objects. Move the object and the callout goes along for the ride. This removes the need to move the callouts if the design changes. Since it is linked to QTO, if you change the assignment there, the callout automagically changes to the correct detail callout. This eliminates the headache of detail callout hunting when the design changes. I see it as really limiting redline comments of using the wrong callout on an object.

image

The Tagging tools are located on the ribbon. You can Tag by a variety of options. My favorite is the ability to Tag All. There is even a fantastic method Autodesk has come up with to be smart enough to not label similar objects close together. Like the image above, not every stripe is labeled. Although I didn’t take advantage of it in my example, there is an option to include TYP. for typical in the Tag component.

SNAGHTML5ee74ef

I’m really excited about this new feature and can’t wait to start using it in production.

Thursday, March 29, 2012

Linq and Civil 3D 2013

With Civil 3D 2013 also comes changes to the API. AutoCAD and Civil 3D are now being built with .NET Framework 4.0. One of the benefits of this change is the ability to use Linq to query information. Linq is short for Language Integrated Query and is created by Microsoft. With the .NET programming the API is getting away from storing information where it is easily accessed, but is located by getting ObjectIds and then having you get the objects from those ObjectIds. One example of this is the GetAlignmentIds() method of the CivilDocument.

Linq provides a fairly compact way to get the information out of those ObjectIds. If I was to try to try to see if an alignment name already exists I’d have to do a for each loop which takes quite a bit of code to perform. With Linq I can take that same process and turn it into a compact query.

bool nameExists = (from objId in civDoc.GetAlignmentIds().Cast<ObjectId>()
                               select (objId.GetObject(OpenMode.ForRead) as Alignment).Name).Contains(proposedAlignmentName);

I’ve gone from at least 5 lines of code down to two (if the code fit on this web page).

The Linq query is taking the ObjectIds from the list, converting the ObjectId to get the alignment, and then seeing if the name I’m trying to use exists. If it does then I get a true, if not I get a false value. Another benefit is that the query isn’t always run when it is hit in the code. In most cases it waits until the information is needed. This may provide performance improvements when running your code and an error happens before you need the information.

LinkWithin

Blog Widget by LinkWithin

Ad