Offset planar curve issues solved with Clipper

Does the Offset Curve component have a maximum number of control points it can handle? My curve has 6812 control points and the offset fails after a certain percentage. I can flip the curve and the problem occurs on the other end of the curve.

Attach your file please!

This won’t be possible. It’s much rather a question to the developers whether the command has an actual maximum number of points it is capable of processing.

Hey Martin,

I think it is not about the nÂș of control points but about the curve itself. I have done an intersection between a mesh and a plane, getting a sagged curve like yours and then test it.
Here the results:

I attached a simplified example. Why does the offset fail on this curve?

Please note, I’m working with an interpolated curve, not a polyline.

21_11_25_offset_fail.gh (23.9 KB)

1 Like

it definitely looks like there might be a cap somewhere

1 Like

Could this be a hardware cap?

Well Jordi, you changed the input values. And it seems you might have different tolerance settings. Or for some reason your offset curve has 20’000 something control points while mine has 37117 control points.

Below is my system info:

System info Martin Siegrist workstation

Rhino 7 SR13 2021-11-16 (Rhino 7, 7.13.21320.13001, Git hash:master @ e803eedb640e6d2f37b95fd3d0eac5af5532def7)
License type: Kommerziell, build 2021-11-16
License details: Cloud Zoo

Windows 10.0.19043 SR0.0 or greater (Physical RAM: 1.3e+02Gb)

Computer platform: DESKTOP

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

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

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

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 10-13-2021
Driver Version: 30.0.14.7239
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\7.0\Plug-ins\KeyShot9RhinoPlugin (ecfe8d1f-876a-460f-aa5e-3dd816936811)\1.4.0.0\KeyShot9RhinoPlugin\Rhino 7\KeyShot9RhinoPlugin.rhp “KeyShot9RhinoPlugin” 1.4.0.0
C:\Users\martinsiegrist\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\EleFront\4.2.2\ElefrontProperties.rhp “ElefrontProperties” 1.0.0.0

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 7\Plug-ins\Commands.rhp “Commands” 7.13.21320.13001
C:\Program Files\Rhino 7\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 7\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 7.13.21320.13001
C:\Program Files\Rhino 7\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 7.13.21320.13001
C:\Program Files\Rhino 7\Plug-ins\rdk_ui.rhp “Renderer Development Kit UI”
C:\Program Files\Rhino 7\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 7\Plug-ins\RhinoCycles.rhp “RhinoCycles” 7.13.21320.13001
C:\Program Files\Rhino 7\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 7.13.21320.13001
C:\Program Files\Rhino 7\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 7\Plug-ins\Displacement.rhp “Displacement”

Rhino 7 SR12 2021-11-9 (Rhino 7, 7.12.21313.06341)
Windows 10.0.19043 SR0.0 or greater (Physical RAM: 30Gb)

Computer platform: DESKTOP

Standard graphics configuration.
Primary display and OpenGL: NVIDIA GeForce GTX 1080 Ti (NVidia) Memory: 11GB, Driver date: 11-6-2020 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 457.30
> Accelerated graphics device with 4 adapter port(s)
- Secondary monitor attached to adapter port #0
- Windows Main Display attached to adapter port #1

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

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

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 11-6-2020
Driver Version: 27.21.14.5730
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 11 GB

Model Units: Milimeters
Absolute Tolerance: 0.01 units
Angle Tolerance:1.0 degrees

Length: 3.7524e+6
NÂș of Points: 43437

I don’t think this has to do with hardware specs.

While working on a much bigger curve with nearly 90’000 points, I realized that cursor tool tips decrease performance drastically. Is that a known problem / limitation.

So far my workaround for the offset fauilure is to split the curve into multiple segments but that leads to other problems again 


Today I had enough and I downloaded Clipper.

While it takes 23 seconds to show the control points, the GH Clipper component Polyline Offset rebuilds and offsets my polyline in just 1.2 seconds and the result is a closed curve.

I’m trying to work with native components whenever possible. How does Clipper do this so quickly and perfectly right? Is there any plan to integrate what clipper does into native Rhino commands and Grasshopper components?

1 Like

Clipper is able to solve things by only (1) supporting polylines (not arcs, circles, etc.) (2) only supporting planar curves (3) placing all lines on a ‘bitmap’ all points are internally rounded to integer numbers, greatly simplifying the process of solving overlapping/nearly overlapping curves.

2 Likes