New Package - DynaBIMToolbox

Hello!

I have recently created a Dynamo package, written entirely in C#. It was my first ever take on Dynamo with C#, so I will be really happy to get any ideas / remarks / recommendations :slight_smile: At the moment, it is only on GitHub, but I am planning on eventually publishing it on the package manager.

Here’s a link to the repo: GitHub - Danail-Momchilov/DynaBIMToolbox: A collection of C# Nodes for Dynamo

The main objective was to enhance and optimize Boolean operations, which normally take quite a lot of time in Dynamo. Instead, they are performed in the Revit API directly - the package lets you work with Autodesk.Revit.DB.Solids, while providing nodes to help you ‘wrap’ and ‘unwrap’ them if you want to. With some of the nodes I also tried to solve some features the API is currently lacking (mostly using workarounds, nothing too fancy).

One good example is the possibility to retrieve element oriented bounding box:



I am aware there is already a node in version 2.16 that is doing that to a certain extend, but it still requires that you get all the element geometry in Dynamo first. So this will again be quite slow and panful when working with a large number of elements.

Another node I find might be quite useful is RoomSurfaceIntersectionAreas. It would create all wall surfaces for a room, intersect them with a list of solids (given directly as Autodesk.Revit.DB.Solid) and return all the intersection areas, as well as all the remaining wall surface areas for the room. This is all done in the API directly, so the process is quite fast even for a large number of rooms and solids.

This was actually the main reason to start working on that package in the first place - calculating wall surfaces for large scale models with lots of geometry and data, with either all or some of the geometry being in linked files (performing the calculations only using formulas does not work when the room and geometry are in different files). Anyway, there are also other variations of this node

along with other useful tools for retrieving data from elements and linked instances, getting walls solids as RevitAPI Solid, getting transformed solids directly from linked instances, getting linked elements’ levels, handy find and replace tools for lists, etc.

You can find quite detailed documentation for almost every node in the package in the GitHub repo.

Once again, any feedback would be highly appreciated :pray:

Cheers!

14 Likes

@danail.momchilov ,

does it run stable for big projects? can you also make solid unions

this is still a big topic to compare “only one” Geometry not categories and not Instances…

KR

Andreas

I think it should run as stable as it could be if all the operations are kept in the Revit API :slight_smile:

I could try to make solid unions as well. If I understand correctly, uniting a list of solids, as well as comparing if two different solids are identical, could work for your case?

Would you only need to check if there are differences or also find the solid geometry of these differences?

1 Like

@danail.momchilov ,

because the “modelstyle” is different between disciplines, but the mass (concrete) will be identical.

KR

Andreas

@danail.momchilov ,

how is the installation process? just drop it to the packagefolder or have i to run a file?

KR

Andreas

You need to clone the repository, run the solution and reference the dll… I’ll just deploy it on the package manager, that will make the life of everyone who wants to test it much easier :smiley: I’ll try to do this tomorrow and write back

1 Like

@danail.momchilov ,

where?
grafik

Unzip this and add it to your package folder :slight_smile:

1 Like

@danail.momchilov ,

it should run



OK
it works under folder debug is also .dll file ! it confused me :wink:

KR

Andreas

2 Likes

Yeah, just thought It’ be easier for you. Everything seems fine, hope you find it useful

@danail.momchilov ,

i will check tomorrow

Nice work @danail.momchilov , will try as soon as available in package manager.

What about converting designscipt solid to revit.DB solid?

2 Likes

Thank you :pray: I don’t have a node for that, but I’ll easily make one

2 Likes

Did you test it in a project with different elements categories like loadable families, stairs, MEP fabrication parts?

I tried to get elements solids and boolean union and takes ages or computer crashed by using nodes or python code. I tried to get elements bounding box orientated to object as well by taking the geometry and several surface points. Results were not manageable on timing and memory ram dead, if this package node deals better with it would be great

2 Likes

yeah, I tested it successfully already on a variety of project with different parts of the geometry being in linked files and it worked. Most of them were very large scale

About the element oriented Bounding Box - those should be elements, whose orientation you must be able to obtain. Other than that, there should not be other limitations

1 Like

@ruben.romero @Draxl_Andreas @gerhard.p

It should be available now

1 Like

If you manage to convert to .DB solid please share how the node works. Afaik, direct conversion gives a mesh as result and the workaround of export/import SAT also gives a mesh as result as soon as the geometry gets complex.

Actually now I remember I struggled with that… had forgotten about it as it was a few months ago… yeah, direct conversion returns mesh. Will give it another try and see what I can do

2 Likes

Great stuff!

1 Like

There is always this class, not that I would want to use it….

2 Likes