Am I misunderstanding the convert command options?


#1

When I try convert on the curve below and enter as minimum length 40 and maximum length 41, shouldn’t I be getting only sections with a length in between those values I entered? I have AngleTolerance and Tolerance set to 0. I get a polyline with not a single segment above 40. The same for the grasshopper component by the way, but I assume it’s based on the Rhino command.
180203 Convert command.3dm (79.5 KB)


#3

0 tolerance means no limit according to the command. Also when I change it to 10000 and 180 for the angletolerance, the results are the same.


#4

Yes, I don’t remember the Convert command really paying close attention to all the values. I really don’t know how it calculates this stuff. As a possible workaround I extruded the curve and then meshed the surface with the same criteria - all 0 except 40 min and 41 max edge length - and the result was actually worse…

In this case, I guess the best would be to divide by length and polyline the resulting points. There will always be one short segment. There could probably be an iterative approach to get them all the same length within tolerance…

–Mitch


(David Rutten) #5

This is true for arc-length division (i.e. length measuring along the curve), it is not necessarily true when the distance between neighbouring points is measured in a straight line. A curve can have a shape such that there is a discontinuity in the output of a division algorithm. Basically, you increase the division distance by a tiny amount and suddenly an entire loop of the curve is either included or omitted from the result.


(David Rutten) #6

Here’s a Galapagos solution which tries to divide a curve into N segments whose end-point-distances are as similar as possible. The curve you provided doesn’t seem to allow for perfect equality, although I haven’t tried to vary the seam point along with the splitting parameters.

division.gh (18.1 KB)


#7

forget it, read through it again and notice i got smth wrong


#8

Hmm interesting. I’m thinking of a way to get what I’m after. The logic would be like this: Take the startpoint of the curve, draw a circle on that point with radius equal to the length I need, then find the intersection point and use that intersection point to draw a new circle. Continue that until I’m close to the start point. So I’ll have to dig into looping components I guess. The last section being a bit shorter might not be a problem for my purpose.

But still, it seems to me like the Rhino convert command gives false expectations?


#9

No need… :smile:


#10

Right… But why easy if you can do it the hard way? :smile:


(David Rutten) #11

That’s what the Divide Distance component does (except is uses a sphere). But the problem is you need to know the radius before you start.