Dynamo breaks with complex geometry, what's happening?

Hi all,

A general issue that has pestered me over the years of using Dynamo: when working with any geometry that is remotely dynamic in form, Dynamo will ‘break’ and I don’t understand why. I’m posting to find out if others experience the same (i.e. it’s a dynamo problem) or if I need to do something different?

To provide a working example, the following form is generated in dynamo by lofting closed curves which are drawn within a family file.

T

When I intersect the geometry with planes or surfaces (also generated in dynamo), the resultant curves do not follow the correct outlines:

I have tried multiple ways to skin this cat, but none seem to work:

  • intersect solid with planes
  • intersect surface with planes
  • intersect surface with surfaces
  • cut the surfaces to the right shape with a solid and get the perimeter curves (example in attached script)
    etc.

Dynamo Version .2.19.3 - Revit 2014


Slicing Sculpted Form.dyn (131.8 KB)
GEN_Table_Dynamo Driven.rfa (1.8 MB)

Let’s ask mr. @Karam_Baki :slight_smile:

Is this building scale (one unit is a meter) or furniture scale (one unit is a millimeter)? Are you changing your geometry scale, or is it on medium? For accurate geometry you want to keep things on medium, while for display you may want to shift things - ignore that.

My gut tells me that the issue is with the graphics display (a known issue) rather than the geometry itself.

I have personally done stuff like this without issue.

Thank you for pointing out it may be a graphic display issue. When I extruded the curved to solids, they assumed the correct shapes again.

Before trying to extrude the curves, I documented the impacts of changing the “geometry scaling” within Revit, and also combined this with changing the actual scale of the geometry itself - no options produced perfect results, although some provided more accurate representations of the real geometry that others.

It’s a very strange issue and odd that Dyanmo requires the user to switch between different tolerance ranges when Grasshopper works fine without it.
Dynamo Geometry Scaling Tests.pdf (2.7 MB)

Expecting any two programs to behave the same is an easy path to frustration. :slight_smile:

Geometry scaling does two things really.

  1. It culls geometric data lower than the threshold.

  2. It reconfigures the display based on the updated geometric data.

The culling is the difficult part, as ‘what’ and ‘how’ aren’t documented in a user friendly perspective (if really at all - trial and error and reading source code is what we are left with). As far as I know the intent of the culling is to permit accurate geometric display, but this does lead to downstream inaccuracies if you aren’t intending and controlling the culling. This is why so many Civil 3D posts say ‘ignore the geometry scaling warning and just don’t look at the geometry in Dynamo’, as Dynamo is saying ‘to show you this well we need to change the scaling, but once you do that to account for the insane coordinate systems which Civil projects use things are rounded to the nearest foot or meter, which leads to points which should be separated by 0.9 units becoming one and the same, which makes curves and surfaces inconsistent with expected results. Fortunately the ‘warning’ has been reduced and reconfigured in new builds to account for this.

I hope that at some point we might get better display precision and navigation within Dynamo, but that is a VERY difficult task and time task, made harder still by the many different ways in which Dynamo geometry is displayed (Background preview, Watch3D, Generative Design, Player, etc.), and if not done carefully more likely to break a LOT more than anyone would any want.

So keeping it on Medium (and ignoring the warning or information but) is almost always the way to go, and know that the engine which produces the geometry (an implementation of the Autodesk Shape Manager, or ASM) is accurate even if it doesn’t look to be until you bring it into the host application. This does however mean you need to be conscious of how you bring the geometry into the host, specifically when dealing with curving geometry, as many methods will tesselate the geometry prior to creating the elements.

1 Like