Rhino WIP Feature: Global Edge Continuity

What is GlobalEdgeContinuity?

GlobalEdgeContinuity is a tool to quickly analyze the continuity (G0, G1 and G2) between surfaces.

How does it differ from the existing EdgeContinuity command?

With EdgeContinuity each edge pair needs to be selected manually. When you want to analyze a large amount of edge pairs, this can become a tedious exercise quickly. GlobalEdgeContinuity automatically finds edge pairs between the selected surfaces and give you insight in the quality of the (surface) model in one go.

How does it work?

There are two ways to analyze edge pairs:

  1. Select a single surface and run the command. It will find all matching surfaces that surround the selected surface.
  2. Select multiple surfaces and run the command. It will analyze all edge pairs between the selected surfaces.

GlobalEdgeContinuity evaluates positional (G0), tangent (G1) and curvature (G2) continuity between surfaces. The feedback is both numerical as well as graphical, using edge coloring and graphs.

To try out GlobalEdgeContinuity, download the latest version of Rhino WIP.

An introduction and more information can be found here.

For people already familiar with the tool, the version that is now being developed for Rhino WIP has a couple of differences.

  • Added a toggle to the top row controls, this allows you to collapse the UI and turn of the analysis display.
  • Curvature (G2) analysis code has been rewritten. It now fully matches the results of EdgeContinuity.
  • Added an extra G2 tolerance setting for marking edges G2 (G2 relative tolerance).
  • You can now select edges with up and down arrow keys.
  • You can deselect a marked edge, to remove the deviation balloons.
  • Simplified the edge feedback texts.
  • Only labels of edges that need attention are now shown (when “Show Good Edges” is turned off).
  • Added a toggle for filtered edges (default off)
  • Added a G0 Filter. This is basically the max. search distance for edge matching. For best results, keep this value as small as possible.
  • Display settings and Evaluation Settings are now collapsible sections in the UI.

PS: Special thanks to @CallumSykes who helped me greatly in cleaning up and restructuring the code.

Download Rhino WIP…

29 Likes

2 posts were split to a new topic: ZebraOff crashes Rhino

Is it possible to add/remove objects while their control points are visible?

Currently, in Rhino 7’s version of the tool I’m unable to add new surfaces whose control points are on, so I’m forced to turn them off, then add the surface(s) I need, then turn the control points again. This is especially inconvenient when I have multiple surfaces with visible control points and I’m forced to repeat the process of selecting them all all over again.

1 Like

@Rhino_Bulgaria yes this works in Rhino 9, where I changed that behavior. Previously you could only add already selected objects, but that was changed with RH-86907 GlobalEdgeContinuity: Adding/Removing objects does not prompt

3 Likes

That’s great! I just had to deal again with that behaviour in Rhino 7 and can’t wait to buy Rhino 9 when it’s released! It has several meaningful upgrades that will fit my modeling workflow perfectly.

2 Likes

GlobalEdgeContinuity in Rhino 9 is much better than the beta version you are using, with regards to the G2 calculations. The edge matching algorithm has improved significantly as well, and should in principle not give any false negatives anymore.

1 Like

I noticed that the new version also could place multiple baloons across an edge. Could the number of these be modified by the user, so that I can place, say, 10 baloons along a certain edge which I want to examine in a more detailed manner? This was discussed a few years ago in another topic, but at the time it was not possible.

Also, can you try the new version of “Global Edge Continuity” with this file (Rhino 7) and see if it will give a better, more accurate result? I noticed that the crosshair is significantly different depending on the “Samsples” value.
Create a Blend surface.3dm (498.3 KB)



The 3dm file itself is a bug report that hopefully will be fixed in Rhino 9. The two input surfaces had split edges in the middle, then I merged them again. However, “Blend surface” ignores that and creates a much more dense surface than what’s required. If I untrim the input surfaces, the blend surface is simpler.

1 Like

the amount of balloons is related to the amount of samples per edge. So if you want 10 balloons you need to sample with 90 samples per edge.

1 Like

When edges are within tolerance, I no longer show the graphs, which were basically just noise:

3 Likes

I edited my post above.

Regarding the samples, in your original post the image shows 6 baloons and 50 samples. Does that mean that all edges will receive 6 baloons in case that I include many more edges to the list? Is it possible to have 1 baloon per edge but 10 baloons on a specific edge? Or, maybe make it relative to the length of the edge, so that longer edges will have more baloons?

Only the selected edge will show the balloons, this hasn’t changed. The amount of samples per edge determines the amount of balloons as stated. What is a long edge for you might be a short edge for another. I would have to sample based on edge length. In general I find that it is best to more or less match the amount of balloons with the amount of control points, so that the balloons are quite ‘close’ to the control points you are editing.

1 Like

Is there a way to add an extra baloon which shows the maximum deviation, while the remaining baloons are distributed along the edge by equal distance? This way, only the maximum deviation baloon will move upon editing the control points.

Currently I’ve implemented it like this, the max point is indicated by an arrow and a point.

I found that, with the extra indicator for max it could get in the way. I might change that and make that indicator longer and stick its head above the rest

3 Likes

I second that. A visible baloon with the maximum value is much needed. Solidworks makes a great use of distant baloons connected via a line to the exact point of interest, in order to not obstruct the view on the edges/fillets. I guess that 3-4 times longer vertical line to the “maximum” baloon will work perfectly fine in Rhino.

1 Like

Any news whether the balloon for the “max deviation” indicator is added on an extended line above the rest indicators?

I need to figure out something else for that, since sometimes the point will be very close to an existing point. They can also be vertical when the points are on a vertical edge.
I experimented earlier with lines that rotate away from the edge, but it ended up being very jarring.

Similar baloons in Solidworks are typically connected via lones normal to the surface/edge. They can be freely moved away by the user, meaning they will be no longer normal to the surface.

I tried other solutions, but this means the balloons start jumping around as you rotate the model.
My current idea is to hide the balloon that is closest to the max. deviation one and then show the max deviation one instead, probably in a different color.

Normal direction from the edge seems like the best solution, because the balloons will be always away from the surface edges. I don’t mind having the normal lines oriented in variable directions while working on highly curved surfaces. This actually corresponds with the natural shape of the analysis comb, which is also normal to the edge pair.

RH-89124 Show max deviation dot

I decided to solve it like this, showing the max deviation on top, green when within tolerance:

red when out of tolerance:

7 Likes