algorithmic modeling for Rhino
I am trying to find a way to rationalise NURBS curve (for the purposes of manufacture) by splitting it up into a series of arcs. However, these arcs need to be selected from a predeteremined list of arcs which have different radiuses. In other words, if I have a group of NURBS cuves, I want to be able to split them up with a series of arcs that have families of radiuses, say every meter.
This means that I could rebuild my NURBS curves in the following way:
NURBS 1: [rebuild with 5 arcs] :
Arc 1 (25m radius) + Arc 2 (17m radius) + Arc 3 (44m radius) + Arc 4 (33m radius) + Arc 5 (12m radius)
NURBS 2: [rebuild with 3 arcs] :
Arc 1 (25m radius) + Arc 2 (17m radius) + Arc 3 (12m radius)
In this example there are 2 instances of 25 m radius arcs, 2 instances of 17 m radius and 2 instances of 12 m radius.
These would be fitting to best rebuild the NURBS curves with a tolerance.
I have started by trying to group similar points of curvature along the NURBS curve, but not sure is a good way to proceed.
Not sure if its clear what I want to achieve, but any advice would be great!
It sounds pretty tricky. How do you solve this problem by hand in Rhino?
You basically have to decide on a tradeoff between distance-deviation from the original curve and angle-deviation from the original curve. It would be fairly trivial to create a curve with a HUGE amount of tiny tiny arcs that approximate the original curve, but that's probably not what you're after.
I ended up using a c# script that rebuilds a curve with multiple arcs with a set deviation tolerance, and then rebuilding those arcs by replacing their radiuses with radiuses of incremental values (say every 500mm) (see screenshot)
This script helped me replaces the radiuses:
The only thing is, I would like to minimize kinks. But this may be impossible!
And thanks for your earlier reply btw!
I'm having the same problem that I have to rebuild a nurbs crv in given arc segments. I will try to rebuild your definition the next days. It would be a big help if you are able to share the gh-file.