Camber - A New Package for Civil 3D

Hello fellow Dynamo for Civil 3D users!

I’ve just uploaded a new package called Camber to the package manager, and it has hundreds of new nodes for AutoCAD and Civil 3D. Here’s an overview of some of the features:

  • Block attribute definitions
  • MLeaders
  • Catchments
  • Styles
  • Labels
  • Sample Lines
  • Profile Views
  • Section Views
  • Pipe Networks
  • Pressure Pipe Networks
  • Parts Lists
  • Design Checks
  • And lots more to come!

There is some overlap with the Civil 3D Toolkit, but I tried to keep it to a minimum to avoid confusion. My vision for creating this package was to provide an open-source code base that is available as a learning resource to the community and one that can continue to grow over time. The code is publicly available on GitHub here:

So with that said, I’m requesting your help to test it out and provide feedback! I’m an amateur programmer with a lot still to learn, so there are guaranteed to be quite a few bugs. Please post comments/issues/questions in this thread:

Thanks in advance for your help! I look forward to seeing what you all create with this :slight_smile:

37 Likes

Is there a story behind the name? :slight_smile:

2 Likes

Im already excited, thanks a million.

Setelevations for profileviews Im now adding to my graphs

Not a particularly exciting one. I just wanted to pick something that was simple and unique. I think it really helps to only have one word when dealing with assembly names, namespaces, etc. :slight_smile:

2 Likes

Woohoo!!! :partying_face::confetti_ball::tada::man_dancing: Congrats! Can’t wait to try it out.

1 Like

@mzjensen - you are a power user who has now given a great deal of power to the rest of us, thanks mate.

6 Likes

Hi @mzjensen ,

This is a magnificent piece of work. Congratulations mate.

I have downloaded it and will try it right away.

2 Likes

That’s a good reason and it’s an easy name to remember. I develop a package myself (not open source and not publicly available) and I named it the name of the company I work for. I am still hesitating on a better name (but the best one, ‘Civil 3D Toolkit’ was already in use :wink: )

You’ve done a great piece of work, it’s definitely not a result of an amateur programmer :+1:
Programming for Dynamo is a bit more complex than programming for AutoCAD. And on top of that come administrative issues to apply: in which namespaces, which category (for example, is creating Dynamo geometry an Actions or a Create, presumably depending on which namespace you put it in), are you going to combine functions into one node or rather create them as separate nodes, would you set default values on the parameters, and so on. You’ve done a really good job and it will definitely make people happy!

What I ran into myself when creating my package was how to deal with custom objects. An Alignment is a Core object and so you can use it and return it. But you have, for example, a Catchment. There is no Core object of it but if it is added in the next version then it is not compatible with your object. I had first thought of providing such an object with a prefix but I decided against it. I did make a node available for such a custom object that returns the object as an ‘object’ so you can reuse its output where an ‘object’ is requested. For this you can use the function Autodesk.AutoCAD.DynamoNodes.Object.InternalMakeObject(). Another possibility is to return the AutoCAD Handle, there are nodes that can do something with that.

Again, great job! And well documented, very important! I’m just missing documentation on the most important input parameters like this:

image

Maybe you can add that one more time :slight_smile:

Thanks for the kind words, Anton! That is nice to hear from someone more knowledgable/experienced.

Yes, I thought about this a lot as well. I decided to create custom objects (all under the Camber namespace) for those where the core Autodesk.Civil.DynamoNodes or Autodesk.AutoCAD.DynamoNodes objects do not already exist. I’m assuming that eventually more core objects will be implemented by the Civil 3D team, but I don’t know the timeframe on that. I decided that when those additional classes are added, then I can phase out those parts of the package so there isn’t confusion.

The downside to this is that there is some duplication with the Civil 3D Toolkit, such as Profile Views. I created new Profile View objects under the Camber namespace for two reasons:

(1) I didn’t want to create a dependency with the Civil 3D Toolkit, such that certain parts of Camber would only work if you have the Toolkit also installed. In reality most users will probably have the Toolkit also installed, but I didn’t want to make that assumption.
(2) I shouldn’t be creating any classes within the Autodesk namespace. That would not be a best practice.

I appreciate that you noticed! As you know, it is a lot of work :slight_smile:

Or you can turn the functions into static ones. Although your package will not work in older Dynamo versions anymore.

And indeed your package should not refer to other packages, even if everyone has that package installed :slight_smile:

1 Like

The Pressure Network Tools in Camber are fantastic. I’ve been trying to turn some scripts I have to create a Gravity Network from a Polyline into a similar thing for Pressure Network. It seems like all the nodes are there to do it, but the thinking is a little different from Gravity, so i’m a little stumped. Anyone have any luck working with those nodes?

How to select all labels in drawing? Can you help me.

I suggest starting a new thread for this question. And be more specific on what kind of labels.