Simple Fidget Spinner


I am trying to design a fidget spinner in Rhino Mac, basically following the steps outlined in this video.

I am running into an issue with solids and was hoping someone would guide me how to extrude only the space between the circles. I am also wondering why the full rectangle extrudes and not just the space in between, like in the video. I realize the video is done in a different application.

I considered a boolean difference, but the rectangle is a full solid and I cannot get it to work.

fidget_spinner.3dm (2.5 MB)


If I explode the rectangle and delete the ends that divide the circles, extrusion produces this.


it’s not a solid yet… select all six sides of the rectangle then run the Join command… it will now be recognized as a solid and the boolean commands will work on it.

assuming you’re trying to arrive at the following?


Yes, I would like to arrive at that exactly.


While it is an outline, is it correct to explode the rectangle and delete the sides that divide the circles?


I think I figured this out. Once the square is a solid, I used boolean split and can now delete the half circles that I want to remove.

Now for the array…


I used ArrayPolar to create around the center of one of the circles 3 times. My spinner must not be a solid though because the slicer is not happy with it.

fidget_spinner.3dm (2.6 MB)


Guess I am somewhat stuck on this project. Here is a copy of my project file.

FidgetSpinner.3dm (3.1 MB)

The object still appears to be extrusions and polysurfaces in Rhino. You can see the full circles outlines I extruded and the wedge piece of the square. I am wondering how to join all the parts into one solid object.

When I choose to fillet the edges, select gives me the inner part of the circle and overlap. I just want the outer edges, outer part of each circle.

When I export to STL and slice with Simplify3D, the model initially looks great, but once sliced, the preview shows three triangles open around the center hole, and the slicer is basically recreating circles around each open hole, rather than treating it like a solid object. There is also a wedge gap on the outer border of the body and the circle.

What I was hoping for is this object to print.

If anyone has any ideas to assist me, I would very much appreciate it.



(Pascal Golay) #9

Hi jpvonhemel - I don’t know if this gets at what you need to do-
FidgetSpinner_PG.3dm (296.0 KB)


Hi Pascal,

Thank you very much for the guidance. I started with an outline of two circles between a rectangle, then extruded. Perhaps I extruded too soon.

Is my original design a problem? It looks like you recreated it and used a wider curve between the circles. Sounds like I should have drawn the entire outline before extruding.

Would you mind letting me know how you did the outline to keep the circles symmetrical?



(Pascal Golay) #11

Hi Jerold - if the shape is essentially 2d plus some thickness, you can pretty much to all the work on the curves, then just ExtrudeCrv. I used ArrayPolar to evenly distribute the circles. Basing the design on the origin makes it all more convenient.

For your more hard-edged design -



Hi Pascal,

I was able to create my spinner arms with ArrayPolar and I finally figured out how to use CurveBoolean for the outline. I finally figured out how to choose the body detail I wanted to keep then delete the redundant curves. Took me a while to wrap my head around this.

Going back to your initial design of my spinner, did you use a circle to create the curves connecting the larger circles together? Then perhaps divide?

Thank you,


(Pascal Golay) #13

Hi Jerold - I used Fillet to make the big arcs once the circles were arrayed. Radius of 30 or so.



Thank you very much!. Lots to learn in Rhino!


Hi Pascal,

Still working through my project and have some questions.

When I use CurveBoolean, I notice I have to delete some extra curves to get down to a single one. Is this normal or am I running CurveBoolean incorrectly?

After Fillet then CurveBoolean, I end up with a closed polycurve around my spinner.

When I ExtrudeCrv, My edges become exploded. I feel like I have done something wrong because I am clicking on many edges to FilletEdge.

I am also noticing two extrusions along the outside. What are the outside small rectangle extrusions by each hole?

Here is the file I am working with. I duplicated and saved a new file with each step.

RhinoSpinner FilletEdge.3dm (2.6 MB)
RhinoSpinner Polar Array.3dm (2.5 MB)
RhinoSpinner Extrude.3dm (2.5 MB)
RhinoSpinner CurveBoolean.3dm (2.5 MB)

Thank you very much,


(Pascal Golay) #16

Hi Jerold - watch the command line options for CurveBoolean - there are options for what part of the input to delete - probably you want ‘All’. Multiple edges is normal - there are multiple faces in the extrusion, so to speak, where you see the vertical edges. Use ChainEdges > AutoChain=Yes to reduce clicking in FilletEdge.

My guess is the extra extrusion was from a stray curve that was selected.



Hi Pascal,

Looks like Fillet caused the curve to break into three parts. That may be where the extra extrusion came from. I posted a screen shot. Is this normal or did I do something wrong when I filleted. The two lines were one piece until Fillet was ran. I am going to Join them and redo the extrusion.

Thank you,



Hi Pascal,

I was able to get the spinner to print and it works!! I just need to play with the size of circle I use so the bearings are snug.

The last part of the project is a cap that covers the bearing in the center. It has two circles inside a third larger one. I am able to do the extrusion, but my 3D printer wants to print them as three separate object instead of a single one, so the print fails. I am missing something and wondered if you know what I am doing wrong.

RhinoCapPrototype.3dm (2.5 MB)

Thank you so very much,

Jerold RN

(Wim Dekeyser) #19

There are 3 separate objects in that file so even though some slicers would be able to print that as one object, it would make sense making that into one single object first. Use Trim to get rid of the parts that are inside another and Join to make everything into one object [or use the more automated process by using a boolean operation].


Thank you @wim!