How can i control 'control points' distributively when using offset

how can i control ‘control points’ distributively when using offset curve like that image

is there any way to do it? it is important when using a Loft componenet

how can i control ‘control points’ distributively when using offset.gh (14.3 KB)

how can i control ‘control points’ distributively when using offset.3dm (58.2 KB)

Maybe try ‘PointDeform’ component instead of offset?

1 Like

The image does not coincide with the reality of the geometry you provide. “Control points” are not the same as edit points and unless the curve is a polyline are not guarenteed to lie on the curve itself.

Control points can be targetted and moved individually via vectors with Point Deform:

however, I do not think this is what you are after. Using Offset Curve, the polyline is offset, but simplified, i.e., collinear points that are not discontinuities in the polyline are removed. Offset Curve Loose offsets the control points of a curve and comes closest to the image, but does not maintain the point distribution as in your picture. Offset Curve Loose offsets control points in the plane of curve frames:

To achieve what you want, you will have to offset the polyline and map the control points as points from the original polyline curve to the offsetted one, then recreate (build from scratch) the polyline.

2 Likes

Geometry (curve) is internalized. Many ways to play with this…


control ‘control points’ distributively_2025Nov8a.gh (9.0 KB)

2 Likes

@Joseph_Oster Hiya Joseph! How are you doing?


As long as you are just dealing with a polyline, this will do the trick:

Control control point distribution by polyline offset.gh (26.7 KB)

1 Like

control 'control points' distributively_2025Nov8b
full size
control ‘control points’ distributively_2025Nov8b.gh (10.6 KB)

1 Like

The point is not the arrows in the OP’s image, but the distribution of the points on the curve delivered to the offsetted curve.


I've tested and ammended my script to work with closed polylines, however it fails when segments are blinked out of existence by the offsetting procedure:

1 Like

offset is not a non-destructive operation, there can be “data segments loss”

which is the reason why giving “offset by +x” followed by “offset by -x” (or the opposite) sometimes solves “eventually unexpected issues” that eventually might come up with complex curves

it also matters a lot if you are still happy with the new inward/outward version of your curve :smiley: but it ensures you’ll be -at least happy- with the final result

1 Like

@inno You had me confused last night by your double negative “not a non-destructive operation”.

I managed to get the script to work by examining three consecutive segements of the polyline throughout the curve to see which segments get removed by the offsetting procedure, but it still failed with self intersecting polylines or when the offsetting begins to island the polyline into disjoint polylines. That’s work above my paygrade… It is surprising to me that Rhino does have a simple polyline offset that does not simplify the offsetted curve.


Offset Loose is non-destructive, btw.
3 Likes

Offset without the Offset component.
But maybe that’s a little too complicated.

how can i control control points distributively when using offset a.gh (16.7 KB)

1 Like

I mean, this begins to relocate the collinear points, but it doesn’t share the collinear points across the segments of disjoint polylines:


Control control point distribution by polyline offset VR 02.gh (24.0 KB)

And god what a mess of a script.

2 Likes

Oh im really thanks for all the heartfelt reply! thank you i will check it out one by one soon!!

hahaha :slight_smile: I indeed could have been more clear :slight_smile:

what I meant is something very very similar to what you show in your video, to “correct” the original curve to be offseted, based on the result the offset itself will produce

silly example with a random polyline, where the original curve is red (so you can always see it in the background) the first offset (x) is white and the final (new_starting) curve (offset -x) is in yellow:


double_offsets.gh (7.4 KB)

the final offset it produces (in white) is for sure the one you would expect from the Offset component… but the double offseted shape -as a “rework” of the initial one, shows you the critical areas that get deleted (“eaten”) by the offset operation itself :+1:

2 Likes

Ah, I understand now what you mean.

Yes, my approach is similar but different. Instead of comparing the offset to the reverse offset which is in turn compared to the original polyline, I compare the offset to the control point offset which is in turn compared to the original polyline line:

Both are, in the end, a one step mapping since in your approach the offset and reverse offset segments map 1 to 1 and only the reverse offset needs to be mapped to the original polyline, while in my approach the original polyline and control point offset map 1 to 1 and only the offset needs to be mapped to the control point offset.

The only slight advantage I see to my method is that determining the mapping between the offset to the control point offset is easier than it is for between the reverse offset and the original polyline. This is because the segments of the offset will always lie on and within the domain of the control point offset segments. This is not the case with the reverse offset and original polyline.

You should find this reply useful How to extract edit points a curve? - #2 by maje90

1 Like