Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*[[Parameters]]*/
- //knob height
- KnobHeight = 7;
- //Number of rimpels of the Knob
- NumberOfSides=24;
- //Diameter of the knob
- Durchmesser = 24;
- //rimple from 0.5 to ......
- rimple=0.6;
- //Height of the axel
- heightAxel = 15;
- //Outer diameter of Axel
- AussenDurchmesser = 10;
- //Inner diameter of axel
- InnenDurchmesser = 4.4;
- /*[[Extra Nut settings]]*/
- InsertExtraNut = 0;
- //Nut Diameter
- NutDiameter = 0;
- //NutHeight
- NutHeight = 24.6;
- OuterDiameter = AussenDurchmesser/2;
- InnerDiameter = InnenDurchmesser/2;
- radius=Durchmesser/2;
- $fn=72;
- Cr =radius*sin(180/NumberOfSides);
- offset= sqrt(pow(radius,2)-pow(Cr,2));
- echo(Cr);
- echo(offset);
- module oval()
- {
- scale([rimple,1,1])
- circle(r=Cr);
- }
- module knob()
- {
- linear_extrude(height=KnobHeight)
- difference(){
- union(){
- circle(r=radius,$fn=NumberOfSides);
- for(a=[0:360/NumberOfSides*2:360])
- {
- rotate(a,0,0)translate([offset,0,0])oval();
- }
- }
- for(a=[360/NumberOfSides:360/NumberOfSides*2:360])
- {
- rotate(a,0,0)translate([offset,0,0])oval();
- }
- }
- }
- module Main(){
- render(10)
- difference(){
- union(){
- knob();
- cylinder(r=OuterDiameter,h=heightAxel);
- };
- cylinder(r=InnerDiameter,h=heightAxel);
- if (InsertExtraNut==1){
- translate([0,InnerDiameter+1.25,heightAxel-5.4])NutInMaterial();
- mirror([0,1,0])
- translate([0,InnerDiameter+1.25,heightAxel-5.4])NutInMaterial();
- }
- difference(){
- cylinder(r=NutDiameter, h=NutHeight, $fn=6);
- cylinder(r=InnerDiameter+0.5,h=NutHeight);
- }
- };
- }
- module NutInMaterial()
- {
- rotate([-90,0,0])
- union(){
- cylinder(r=2.7,h=2.3,$fn=6, center=true);
- translate([0,-3.2,0])cube([5.4,6.4,2.3],center=true);
- translate([0,0,-2.7])cylinder(r=1.65, h=10, $fn=24);
- }
- }
- //TEST difference
- module torus(r1, r2, h, center=false) {
- torus_pipe_r=(r2-r1)/2;
- translate([0,0,center?0:h/2])
- rotate_extrude(convexity = 10)
- translate([r2-torus_pipe_r, 0, 0])
- scale([1,1/(torus_pipe_r*2)*h,1])
- circle(r = torus_pipe_r);
- }
- module cylinder_to_plate(r1,r2, h, center=false) {
- translate([0,0,center?-h/2:KnobHeight])
- difference() {
- difference() {
- cylinder(h=h,r1=r2,r2=r2);
- cylinder(h=h,r1=r1,r2=r1);
- }
- torus(r1=r1, r2=r2+r2-r1,h=h*2);
- }
- }
- //cylinder(h=25,r1=5, r2=5);
- cylinder_to_plate(r1=OuterDiameter,r2=(Durchmesser/2)-rimple*2,h=(heightAxel-KnobHeight)/1.5);
- //TEST
- //NutInMaterial();
- Main();
Add Comment
Please, Sign In to add comment