Boundary surface random failure

I have been using Boundary Surface in one of our scripts for years. We have run thousands of different sets of curves in the same script and they all work fine.


But now we have found one combination, where the boundary surface fails. It has 1 large outline and then several interior curves.

All the curves are closed. All the interior curves are instances of the same curve, so that extra S is literally the same curve as the S elsewhere.

Unfortunately there doesn’t seem to be any way to debug this!? Boundary surface doesn’t put out any warning.

Is there any way to recreate what boundary surface does in steps? Is there a Rhino equivalent?

Thanks for any hints.

boundary-surface-fail.gh (135.7 KB)

It has nothing to do with the S. The overall outline has one self intersection.

3 Likes

Oh. Nicely spotted. I did not see that. So the filletting part fails somewhere. So weird that it fails in this instance only.

So the self intersection makes the boundary surface think those inner curves are no longer inner curves.

Are the labels in your file switched?

Works fine” looks broken (no holes), “Doesn’t work” looks fine to me?

2 Likes

I guess so…

You’re right. My bad.

I didn’t notice a white dot in your image showing where the flaw is located until I found it using the purple group.


boundary-surface-fail_2024Nov8a.gh (136.0 KB)

With the help of Copilot, I tried running Rhino.Geometry.Intersect.Intersection.CurveSelf in Grasshopper and got it to find intersections on other test curves but not on the problematic outline…

boundary-surface-fail_CurveSelf.gh (153.0 KB)

This doesn’t work in my Rhino 8 SR13 2024-11-6

System Info

Rhino 8 SR13 2024-11-6 (Rhino 8, 8.13.24311.03001, Git hash:master @ b6593276781d516da56f01162c4db7dda67089d0)
License type: Commercial, build 2024-11-06
License details: Cloud Zoo

Windows 11 (10.0.22631 SR0.0) or greater (Physical RAM: 128GB)
.NET 7.0.20

Computer platform: DESKTOP

Standard graphics configuration.
Primary display and OpenGL: NVIDIA RTX A5000 (NVidia) Memory: 24GB, Driver date: 7-23-2024 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 560.76
> Accelerated graphics device with 4 adapter port(s)
- Windows Main Display attached to adapter port #0
- Secondary monitor attached to adapter port #1

Secondary graphics devices.
NVIDIA Quadro K2200 (NVidia) Memory: 4GB, Driver date: 7-23-2024 (M-D-Y).
> Accelerated graphics device with 4 adapter port(s)
- There are no monitors attached to this device!

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
GPU Tessellation is: On
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 8x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 7-23-2024
Driver Version: 32.0.15.6076
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 24564 MB

Rhino plugins that do not ship with Rhino
C:\Users\martinsiegrist\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\NVIDIADenoiser\0.4.3\NVIDIADenoiser.Windows.rhp “NVIDIADenoiser.Windows” 0.4.3.0

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 8\Plug-ins\Commands.rhp “Commands” 8.13.24311.3001
C:\Program Files\Rhino 8\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 8.13.24311.3001
C:\Program Files\Rhino 8\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.13.24311.3001
C:\Program Files\Rhino 8\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8\Plug-ins\MeshCommands.rhp “MeshCommands” 8.13.24311.3001
C:\Program Files\Rhino 8\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 8.13.24311.3001
C:\Program Files\Rhino 8\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.13.24311.3001
C:\Program Files\Rhino 8\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 8.13.24311.3001
C:\Program Files\Rhino 8\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.13.24311.3001
C:\Program Files\Rhino 8\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 8\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8\Plug-ins\SectionTools.rhp “SectionTools”

@wim can you help, or who do we need to tag?

1 Like

Same here. Another R8 failure. :roll_eyes:

Hi Martin, Joseph -

Thanks.
RH-84675 Grasshopper: Curve - Self Regression
-wim

1 Like

Doing that make it works, but it is a bit long.

2 Likes

Thanks everyone for your great inputs. I think I will try to fix the filetting first. Since the script is on Shapediver and has to be as fast as possible, I probably wont be able to put anything in to fix it or do it another way, but rather have to prevent it from happening. Like I said, this was the first case in hundreds, where that happens.

Glad we could find a bug that will hopefully be fixed soon.

So the culprit is the script doing the filletting as expected. Here is the code:

You can see that the filletting basically fails in this case:

Any ideas how to prevent that without setting a lower fillet radius?

boundary-surface-fail-curve.gh (10.4 KB)

You might be able to get rid of short segments by offsetting outwards and then back inwards again.

boundary-surface-fail-curve_offset.gh (15.7 KB)

2 Likes

Fix to Curve->IntersectSelf(…) should be in 8.15.

RH-84675 is fixed in Rhino 8 Service Release 15 Release Candidate

2 Likes