Element.Face: Polycurves may not be branching / Dynamo versions

I’m having a problem getting the faces of elements, steel girders and columns to be exact.
When I use Dynamo 1.3.2 I get the error message saying: Polycurves may not be branching whenever I want to get the faces or solids of an element as shown in the picture below.

image

Now is tried using Dynamo 0.9.1 and it gives me whatever I need.

How is this possible? Is version 1.3.2 not good?
Should I always have 2 versions of Dynamo running in case some commands don’t work?

What Revit version are you in? Can you share an rvt which recreates the issue?

Revit 2017.2

Any chance at getting the rvt file? One with a single beam failing should work if you’re worried about posting client stuff.

Can’t remember if I had the same warning but something similar happened to me. Fixed it by changing the Geometry working range, try the script on each range and see if that helps.

This is a part of the standard Revit sample project.
I tried altering the size to fit on the forum but that doesn’t work.
So here a wetransfer link: https://we.tl/XYJz4CRgC8
There are some HE-shape columns and beams, the node does not work.
There are also 2 round elements and one rectangular shape, the node does work.

Wow, forgot trying this before uploading the file, check this out:
Working range large: It does not work for HE-shaped elements
Working range extra large: It does not work for any of the elements
Working range medium: It does works for all of the elements

What to do to be able to always use the node?

It must be picking up a part of geometry outside of the ranges for large/extra large.
To be honest I don’t know, I edited my script to get the bounding box instead, not sure if that would work for you.
What is your end goal? You might be able to use a different method.

But the smaller the range gets, the better the node works…
My endgoal is to get the first face of intersecting.

For example: I have a column which intersects with a beam, or does not yet intersect with a beam.
I want to be able to find the first face of intersection to adjust the height of my columns.

This example could be extended to main and sub girders, piles to a foundation etc.

Could be to do with the radius surface having small geometry?
I’d have a look at @Thomas_Mahon’s clash detection nodes for this:

Maybe someone else could pitch in for a solution as to be honest I’m not sure.

@Aparajit_Pratap thoughts?

@fjutsie Element.Faces and Element.Solids nodes convert Revit elements to Dynamo geometry (surfaces and solids respectively). During these operations, the boundary edges of each face of the Revit element (Revit solid/surface) are extracted and converted into Dynamo Polycurve(s). Next the Revit face is converted into an untrimmed Dynamo surface and finally the polycurves are used to trim the untrimmed surface to produce the exact trimmed Dynamo surface.

Dynamo uses a geometric kernel that like most kernels is sensitive to floating point calculations due to which reason geometric operations may not work reliably with floating point numbers outside particular ranges. You can read about this issue in detail and the solutions we provide to work around it in Dynamo in this post: http://dynamobim.org/think-big-geometry-with-lots-of-zeros/.

So in your case if you are using a model of a particular size with a geometry working range that is very large, the numbers used in the model (absolute size of the model) will be scaled down as you use a higher range. This would not pose a problem if the model is too large to begin with but if it is not too large, the numbers will turn out to be quite small after scaling them down and when these small values are used in the construction of the polycurves, some of the curves may turn out too small and therefore self-intersect or appear to branch (Y-shape). Since our polycurve algorithms do not support branched polycurves, we discard them. This in a nutshell explains why you find the nodes work with a smaller working range and fail with a higher one. I hope this answers your question. Unfortunately the geometry working range needs to be set on a case-to-case basis and depends on the size of the model you’re working with in terms of the absolute numeric dimensions being used. Therefore your graph may work with some models but not with all, in which case you’ll have to play around with the working range as is suggested by @Tom_James.

Btw, the error message is a typo and therefore very confusing. It should actually be worded the exact opposite, namely, “Polycurves may be branching” instead of “Polycurves may not be branching.” We’ll fix this.

6 Likes

Alright! Thanks to all of you for your replies.

is there a way around this? I am having that same error on a large model, but it doesnt happen on smaller ones

@vvarela13 unfortunately, we don’t have a good solution right now and are aware of these issues. We have plans to improve our geometry library to handle large models in the near future especially for Revit and AutoCAD-like use cases.