Curve adjusting to fit defined array of objects

I’m trying to model an ovoid crankset for a bicycle.
If the teeth are a set dimension and pitch to accommodate the bike chain links, and there a specific number of teeth to be included (example 53 teeth) how can the oval curve path be automatically adjusted (offset?) to accommodate the specified quantity of teeth exactly?

At the moment ‘array along a curve’ requires trial and error to get a fit. Is there a way to control things parametrically?

Would Grasshopper provide a solution (I have no experience with Grasshopper yet).

Thanks and let me know if any of this scenario needs any clarification.

The circumference scales linearly with the size of the ovoid. Draw the desired ovoid shape without worrying about the size. Measure the circumference. Calculate the needed circumference as number of teeth x pitch. Scale the ovoid by ratio needed circumference / measured circumference. The ovoid will have the correct circumference at the “pitch circle” height of the teeth.

1 Like

Solid logical thinking and it works.
Admittedly, a ‘nice to have’ would be some parametric assistance from Rhino but the approach does solve this scenario.
Thanks for your help.