Moineau pump

Hi there,

I have this almost epitrochoid. I need to create the rotor with one more lobe, so it’s 3:4. I know it’s necessary to rotate the blue circle D6 inside the black circle D8 Enveloped.3dm (113.3 KB) with the violet epitrochoid to create the stator.
But how can I do it?

Thank you.

I don’t fully understand but:

How about you construct a line between the centers of D8 and D6, then use the D8 center to rotate D6 and the purple with the desired angle taking this constructed line as reference.

or this?

Hi, it’s because I’m trying to make the outer rotor. So I think it needs to envelope

ok that is different from what I understand from your explanation.

Just do the polar array but using the smallest circle radius and make 4 copies in the array.

Look my second video

I didn’t understand it either. I need to create the profile of the four lobes, like a small 3 teeth gear rotating inside a larger 4 teeth gear.


Here’s a link to an explanation of how to create a 4:3 profile:



Hi jeremy5,

Thank you. But I can notice I didn’t draw cycloids. It’s just curved, it didn’t roll. I have no reference. I think it’s a small 3 teeth gear rotating inside a 4 teeth gear. I don’t know the angles.

Hi Ludwig,

So, is this what you want to achieve?

If so, I’ll explain how I created it.



Yes, exactly.

  1. Divide each circle into segments in inverse proportion to their diameters. I’ve chosen 32 divisions for the large circle and 32 x 6 /8 = 24 for the smaller, but smaller segments might be needed to get sufficient accuracy

  2. Group the blue circle, its segment lines and the three lobe rotor

  3. Create a new layer and make it the active layer

  4. Sub-select (ctrl-shift-click) the rotor and copy it to the new layer

  5. Select the circle and rotor group and move it from the end of its next segment (a) to the next segment of the larger circle (b)

  6. Rotate the circle and rotor group around the point b so that its segment line coincides with the large circle’s segment line

  7. Sub-select (ctrl-shift-click) the rotor and copy it to the new layer

  8. Repeat steps 5 through 7 until you have processed one quarter of the large circle segments, then select the copied outlines and polar array them around the large circle centre with No. of Items set to 4 to fill the remaining quadrants (i.e. take advantage of the symmetry to complete the outlines more quickly)

  9. At intervals around the outlines place points on the outermost curve. I extended the radial lines and placed points where they intersected the outermost outline

  10. Interpolate a curve through the points


Hi jeremy5,

Thank you very, very, much for your efforts. I messed the point in “Set Current” and “Copy objects” so I tried copy and paste. The rotor seems to reach 90º but it didn’t work out. What I’m missing? I don’t find a way to finish this. I tried to make 360º but it didn’t work out either.

Thank you again.

0 to 90 wrong.3dm (210.7 KB)

Select the purple outlines and use the polar array on the Transform menu:

For the centre, select the centre of the large circle (where it was before you moved it aside!)

For the number of items, enter 4

For the angle to fill, enter 360

And that completes the outlines for the remaining nodes, so enter to accept

Then go back to the previous instructions to set the points around the outside and interpolate the curve.

Good luck!


Thank you very much.

Hi @luizdecastro1981,

The job of constructing curves like this is tedious. Grasshopper can reduce the tedium - and allow you to experiment with more sample points. Out of interest I created the following grasshopper script for your curve (in Rhino 6 I’m afraid):

And tried it with 64 and 128 samples instead of the original 32. 64 result in a slightly more accurate curve (dark green) than before (light green):

Going up to 128 samples has no appreciable advantage over 64.

Jeremy (44.9 KB)