Customizable Ring

Initial Design Idea

We are designing a twisted ring.  It will be customizable in both the ring size as well as how many twists the ring will have.  We both wear a lot of rings and thought it would be really cool to be able to wear one that we designed ourselves.

Neither of us know anything about coding besides what we’ve learned in the tutorials. Besides that, we both know from personal experience what makes a comfortable and aesthetically pleasing ring so we hope to be able to incorporate that into our design.

Our team will have to learn more about the OpenSCAD codes so we can find out how to manipulate it to have multiple ring size options. We will learn this by doing research on different ways people use openSCAD to create rings as well as tools to manipulate our codes to allows us to create the model we are hoping for.

Design Iteration

amplitude = 1;

periods = 3;

minDetail = 1;

ringDiameter = 14 + amplitude + minDetail/2;

numTheta = PI*(ringDiameter+4*amplitude+4*minDetail)/minDetail;

$fn = 16;

for(t = [0:numTheta], k = [0:periods-1])



//first slice

rotate(t*360/numTheta, [0, 0, 1])

translate([ringDiameter/2, 0, 0])

[0, 0, 1])

translate([0, 0, amplitude*cos(t*360/numTheta*periods-k*360/periods)])

[1, 0, 0])

translate([amplitude*sin(t*360/numTheta*periods-k*360/periods), 0, 0])

cylinder(d=minDetail, h = 0.1, center = true);

//second slice

rotate((t+1)*360/numTheta, [0, 0, 1])

translate([ringDiameter/2, 0, 0])

[0, 0, 1])

translate([0, 0, amplitude*cos((t+1)*360/numTheta*periods-k*360/periods)])

[1, 0, 0])

translate([amplitude*sin((t+1)*360/numTheta*periods-k*360/periods), 0, 0])

cylinder(d=minDetail, h = 0.1, center = true);



The initial code we found online was very complex so we altered it by renaming the parameters to be easier for the user to understand while customizing. In addition, we added a US ring size conversion chart as a comment in the code to allow users to personalize their ring to fit exactly as needed. After some experimentation we were able to discover how the first section of the code relates to the overall design and what numbers needed to be changed for our specific altercations.

periods = 3; ——> Renamed  this to “number_of_rings”

minDetail = 1; ——> Renamed as the thickness_of_the ring band

ringDiameter = 14 + amplitude + minDetail/2; ——> we kept the name of this one the same but identified it as the overall size of the ring, which is the customizable part.

First Draft Print

This draft was a success however, it was difficult to remove the adhesion plate so for our final print we will print it without a plate and hope it sticks to the glass  just as well. Other than that, the print worked out just as we had hoped. We will print another test ring without the adhesion plate and with a different customization before finalizing our model to make sure it prints well.

Thingiverse Customizer

10 points, due by noon on Thursday 2/21

  • copy part of your code here and describe how it works with the Customizer

Users will only be allowed to modify ringDiameter and number_of_rings.  The inputs for ringDiameter have been converted from the standard US ring sizes to fit the code.  The number of rings allows the user to customize the design.  The range will be from 1 to 5, with the default being 4.

  • include a screenshot of your model in use in the Thingiverse Customizer
  • upload code and demo model and image to Thingiverse and enable Customizer
  • add JMU3SPACE tag and link both ways between Thingiverse and this post

Final Prints

10 points, due by noon on Thursday 2/21

  • print three final customized versions of your model
  • include photos of your final prints and describe the parameters used for each
  • discuss these final prints and their strengths and weaknesses
  • change the Featured Image for this post to your photo of final print(s)