Feature request: radial 4-point scaling

If there isn’t already a way to do this–and I’ve been looking–I would love to be able to have a 2D scale function that can scale an object using four points of reference (radial origin, scalar origin, first reference point, second reference point). The object would scale from the scalar origin, radially outward from the center or radial origin. For the jewelry industry this would be super helpful for editing the thickness of a ring that has been sized up or down but needs to maintain its thickness which would be distorted by a 2D scale. Shell or offset surface won’t work if the polysurface is too detailed. A radial cage edit might also work, but it would be less accurate.

Matrix has a resizing feature that can do something similar in sort of a one-step process, but I’d rather scale down and radial thicken than pay $7K for that feature.

This would probably be useful in other industries as well, but hey, I write what I know.

After changing up search terms I see others have asked for polar scaling, which would be similar. So clearly something that’s missing!

Why can’t scale2D be used for this?

Hi AW - I guess the idea is a sort of partial scale - make a ring bigger or smaller overall without changing the thickness, for example.

So you’d like to 2D scale the inner diameter of the ring, but maintain the radial dimensions of everything outside while enlarging the circumferential size of everything outside appropriately? Is that another way of saying it?

RhinoRing has sizing wizards + other tools for the Jewelry trade - $545

Download and register to activate 14 day demo

Youtube videos -

I think an illustration would better show what I’m trying to do. A is an example of the original ring; B is the result of a 2D scale, and C is the desired result. Although with more complicated geometry.

Yeah… that’s why they invented plug-ins for jewelry… =)


@pascal, A radial scale like this can’t possibly be an exclusive need for jewelry…

No, of course, but, really, must be 99%… What is the input for determining what gets scaled and what does not?


Yes, RhinoRing does this

Size Ring.3dm (1.1 MB)

@pascal that’s why it would be a 4-point scale (as opposed to the standard 2D scale where one clicks 3 points). Anything between radial origin and scalar origin per my original post would not get scaled. Naturally in this context I’m only thinking of a perfectly round example, but I can conceive of a version of this where one could use a custom boundary line/surface to do this (like an OffsetSrf or an ExtrudeSrfTapered). My Python skills are weak, so I’m not gonna theorize about how that conception would be carried out.

@KeithR I certainly appreciate that you stand by your product! At this point I’m not shopping for jewelry plugins since most of my work is in raw Rhino, but that could always change. You running any discount programs? :grinning: I feel like this feature in particular is cross-industry enough that it would be valuable as part of the “Scale” quiver of tools. But then I’m sure that everyone who has a particular need thinks their feature idea justifies McNeel programmers spending time on it.

Hi Joshua - The thing is, it is not a pure scaling transformation as far as I can see - I guess it is dependent on some parametric definition of the ring, not just dumb geometry. I’d fuss with Grasshopper for this.


I see what you’re saying, but Stretch allows you to transform part of a polysurface (whether an end or an internal section) from specific but arbitrary points without affecting the rest of it, so it’s not outside the realm of what Rhino can already do. Maybe this feature request should be called radial stretch instead? Or add a “Radial” command-line value to Stretch?

Hi Joshua- Stretch does allow this but at a significant cost to the geometry - it can become very complex indeed as a result - I think for what you actually need it for, a parametric solution would be far more robust… but it is not coming from Rhino, realistically, anytime soon other than perhaps via a GH definition.


Maybe Peacock in GH has it already?

  • I don’t understand GH enough to know how to use it, but it has a Size component…

using that exact example, you can accomplish it in vanilla rhino using history…
example file – scale the inner circle:

parametric_ish.3dm (3.1 MB)

Interesting. So in the case of a more complex object that doesn’t already have history enabled, would you build a series of control curves to do this with a closed polysurface (or group of polysurfaces), as in the “tres” layer in your example?

me personally? i’d use grasshopper for this. :wink:

the little example was just a proof-of-concept that it may be possible to do what you’re after using history in rhino… i’m not really too sure how much more complex that could be taken… probably pretty far but it might get confusing.