ring_circle_spacing 3.gh (73.5 KB)
slightly repaired my locomotive ![]()
He needs a jewellery tool, not a geometric tool, so the constraints that define the real problem are derived from jewellery design. For example, the distance between stones is usually between 0.1 and 0.2 mm, and an error of >0.05 is perfectly acceptable (the eye does not perceive it). In practice, round stones of any size are not used because they are manufactured to specific measures, so the separation with the 2 curves can have an error of 0.1 mm, but the process must be aware of the real size that the stone will take to respect the separation with the previous circle. It is not necessary that the circle coincides exactly with the 2 curves, but it is necessary that they do not intersect because these usually derive from the edges of a surface or a channel. Priority should be given to the minimum deviation in the orientation of the circles (in their plane) rather than aligning it with the 2 curves. And so on and so forth, the fucking details of the jewellery. I say this because he has not defined his problem well and you are helping without going into the necessary detail so it can generate frustration. As a geometric problem it is cool, but as a jewellery modeling problem it is more complex than it seems, because there are many details that can be implemented in various ways and the most convenient is the one that best approximates the jewellery modeling experience, which is also not obvious because the application of this tool is quite diverse at the detail level. So in my opinion here there is a lack of communication, because your doubt can be solved depending on what you need in detail.
If I were you, I would ask the developer of HumanUI why you can’t use Anemone or how to make it work. If you want to receive more accurate help in these directions, specify the input parameters you want the algorithm to have, because from there you define the problem enough for the rest.
thank you for your interest .
I need this algorithm not only for stones.
but also for objects. with the ability to reduce the distance to minus. and yes, it’s interesting to try to do it without anemone. 
how did you make yours?
With VB. I’m not proud of that bc is old code and that’s why I don’t publish it. But you will be able to see the new C# version in the future.
Even if you want to make one tool instead of two with different parameters for each case, you need to specify the parameters you want. For example, it is not the same to implement the algorithm to specify the amount of objects or to fill the length of the 2 curves. If you use it for stones you must specify the size of them if you want to make them suitable for manufacturing. If you want it for objects you might want to make them overlap a bit to avoid having to put bridges. And so on, you have said the output but no the inputs.
for stones this way is bad. because the size of the stones is not uniform.
there it is necessary to indicate the exact sequential size of each stone. 1-1.25-1.5 -1.55-1.75-2-2.25-2.5-2.75-3 , this is the standard in my country. each country has its own standard.
You need loop for this solution and you need to split the curves to get symmetrical distribution
circle 2 curve_3.gh (24.3 KB)
That doesn’t fit very well with using two curves as inputs. The Peacock component receives a list of sizes and chooses the biggest one that fits between the 2 curves. The component that puts objects on a single curve also receives a list of sizes because I think it is more comfortable to use a numerical distribution than two curves to define the size along the curve(s).
This one need improvement.
You can replace circles by lines and than use normal on the original surface to create circles or spheres.
circles between 2 crvs_v2.gh (133.3 KB)
As you see in the first example when you unwrap the surface, the curves must planar and open because in this method i use offset which always use xy plane.
And if you find a problem to unwrap the surface check curves indexes or directions.
With offset method is not precise 100% for different cases.