Are you making buildings in millimeters?  Tired of seeing your Revit geometry fail once it is brought into Dynamo? Surprised at seeing that intersection point missing or failing to find that projection curve while working on a large landscape? Guess what, we have good news! In Dynamo 1.3 you can now create geometry and perform geometric operations with large model extents reliably and accurately, hassle-free.

The problem stems from using big numbers of the order of 10,000 and higher. When you are thinking in millimeters, this isn’t really “big” geometry, it’s just a big number.  It’s particularly big when you understand that Dynamo is thinking about 10,000 as 10,000.000000 since Dynamo’s geometry tools have a recommended working range of 10-6 to 10,000 units.

These limits are pretty typical for geometry engines used in applications like Fusion, CATIA, or Rhino but what do these limits mean? Consider a very short edge, 10-6 units in length, oriented in the +/- Y direction and place this edge more than 10,000 units out along the +X axis. If you construct two vectors whose start points lie at the origin, and whose endpoints lie on the respective endpoints of the short edge, you will have two very nearly parallel vectors with the angle between them being nearly zero. This also means two points that are less than 10-6 units apart can be considered to be in the same place.

What this really means for you as a user is that there is rarely a problem if you are modeling the bolt threads on a dumptruck, but there could be an issue if you are cutting a wall with a window in a hospital complex in millimeters.

In order to solve this problem Dynamo needs to know how big or small the modeling canvas needs to be and so we introduce the notion of a “Geometry Working Range”. You can think of this range as a band of 8 digits (as you may not always get the full 10 digits of precision stated above) that you can shift up or down on either side of the range stated above.


Geometry Working Range

The “Geometry Working Range” dialog in the “Settings” menu allows users to specify the range for the numbers they are using for coordinate and distance inputs in their models so that the system can recalibrate itself and calculate and render geometric results accurately.


Currently geometry nodes function optimally with numbers in the range of 0.0001 and 10,000 units, which is the default or “Medium” setting in the dialog. In addition we have added three more options: Small (10-6 to 100), Large (0.001 to 1,000,000) and Extra Large (1 to 100,000,000) to allow you to work with geometry in these respective ranges, effectively giving you a playing field of 10-6 to 10+8 units to safely model in.

For example, if you are an architect and are using millimeter units to model your Revit stadium measuring approximately 250 meters (250,000 millimeters) long, which exceeds the default modeling extents of the geometry library. In such a case there is no guarantee that creating any geometry with numbers that large or performing any geometric operations at that scale may succeed. To avoid such uncertain failures you can now pre-select your working range from the “Geometry Working Range” dialog, which in this case you would choose to be the “Large” setting. This would allow you to safely and accurately model the stadium using a range of numerical values lying anywhere between 0.01 and 1,000,000 units, which in this case translates to an interval between 10 microns and 1 kilometer. In other words this range would be precise enough to accommodate for façade panel tolerances for fabrication as well as be large enough for a stadium roof.

Similarly if you are planning a city block, you might want to pick the “Extra Large” setting instead that will give you the freedom to play with numbers in the range of 1 to a 100 million units (or 100 kilometers if you continue to work in millimeters).

After you have made your selection and you proceed to “Apply Changes”, hovering over the button tells you that the graph will re-execute with the newly applied setting.


If you are running the graph in “Automatic” mode you will see the graph execution status at the bottom of the canvas, change to “Run started with new working range…” At this point, the entire graph re-executes with the new range setting and once it completes running (hopefully with the expected results), the status message reads, “Run completed with new working range.” If you are running in “Manual” mode, the graph will recompute once you click the “Run” button with the same status messages.


What if you are unaware of the geometry range setting or have forgotten to use the dialog and proceed to wire up some geometry nodes? You could still inadvertently use numerical values outside of the permitted default range and end up with incorrect geometric results, and what is worse; you could be oblivious of the wrong output. In order to warn users from making such plausible mistakes, all geometry nodes that take in distance or coordinate inputs (numbers) now have a built-in check to test if their inputs fall outside the allowable range and appropriately warn the user to consider choosing the correct setting from the geometry range dialog.

Note: These warnings however will not be raised by nodes receiving oversized imported geometry from Revit or other file formats. Therefore users are still recommended to be aware of the geometry sizes being used in their graphs and to choose the appropriate setting in the “Geometry Working Range” dialog accordingly.


Example Use Cases

Example 1: Intersecting isolines on a large surface – notice some intersection points are missing.

 Example 1: All intersections obtained successfully after changing the range setting to “Large”.


Example 2: Intersecting a large Revit model with a NURBS curve – all curve-solid intersections fail.

Example 2: All curve-solid intersections pass after changing the range setting to “Large”.