]> www.fi.muni.cz Git - things.git/blobdiff - rc-plane-wheel.scad
switch holder.scad
[things.git] / rc-plane-wheel.scad
index e011c0ede90f032af92d2610ff66f928b6a8469d..3cd36993bff8b4b056bbdd1ae7aa98a372fc39a1 100644 (file)
@@ -1,27 +1,95 @@
 infty = 100;
 eps = 0.01;
 
-wheel_d = 60;
-wheel_h = 4;
-wheel_thick = 0.75;
-wheel_rim = 4;
+/*
+// FT Mini Scout - 5 cm, light
+wheel_d = 50;
+wheel_h = 3;
+wheel_thick_outer = 0.5;
+wheel_thick_inner = 1.5;
+wheel_rim = 4.5;
 
 min_wall = 0.5;
 
 spokes = 5;
-spoke_w =  4;
+spoke_w =  3.5;
 spoke_h = 2;
+spoke_xoff = 10;
+spoke_r = 11.5;
+spoke_center_h = 5;
 
-center_d = 10;
-center_hole = 3;
+center_d = 12;
+center_d2 = 6;
+center_hole = 1.2 + 1.3;
+center_h = 8;
+*/
+
+// Sky Surfer 1400 - 6.5 cm, heavier
+wheel_d = 65;
+wheel_h = 5;
+wheel_thick_outer = 1.0;
+wheel_thick_inner = 2.0;
+wheel_rim = 6;
+
+min_wall = 1;
+
+spokes = 5;
+spoke_w =  5;
+spoke_h = 3.5;
+spoke_xoff = 12;
+spoke_r = 15.3;
+spoke_center_h = 8;
+
+center_d = 16;
+center_d2 = 9;
+center_hole = 2.5 + 1.0;
+center_h = 12;
+
+wheel_d1 = wheel_d + wheel_h/2; // center of the rim
+
+module spoke() {
+       intersection() {
+               translate([-spoke_r, spoke_xoff, 0])
+               rotate_extrude($fn = 128) {
+                       translate([spoke_r, 0, 0])
+                       polygon(points = [
+                               [-spoke_w/2, 0], [spoke_w/2, 0],
+                               [spoke_w/2, min_wall], [min_wall/2, spoke_h],
+                               [-min_wall/2, spoke_h],
+                               [-spoke_w/2, min_wall]]
+                       );
+               }
+               cylinder(r = wheel_d/2, h = infty);
+               translate([-infty/2, spoke_xoff, 0]) cube(infty);
+       }
+       hull() {
+               // front bottom
+               translate([-spoke_w/2, spoke_xoff, 0])
+                       cube([spoke_w, eps, min_wall]);
+               // front top
+               translate([-min_wall/2, spoke_xoff, 0])
+                       cube([min_wall, eps, spoke_h]);
+               // center bottom
+               translate([-spoke_w, 0, 0])
+                       cube([2*spoke_w, eps, min_wall]);
+               // center top
+               translate([-min_wall/2, 0, spoke_center_h])
+                       cube([min_wall, eps, eps]);
+       }
+                       
+}
 
 module body() {
        // rim
        difference() {
-               cylinder(r = wheel_d/2, h = wheel_h, $fn = 128);
+               hull() {
+                       cylinder(r = wheel_d/2, h = wheel_h, $fn = 128);
+                       translate([0, 0, wheel_h/2-eps])
+                               cylinder(r = wheel_d1/2, h = 2*eps, $fn = 128);
+               }
                translate([0,0,min_wall-eps])
-                       cylinder(r1 = wheel_d/2 - 2*wheel_thick,
-                               r2 = wheel_d/2 - wheel_thick,
+                       cylinder(r1 = wheel_d/2 - wheel_thick_inner,
+                               r2 = wheel_d/2 - wheel_thick_outer,
                                h = wheel_h - min_wall+ 2*eps);
                translate([0,0,-eps])
                        cylinder(r = wheel_d/2 - wheel_rim,
@@ -31,20 +99,41 @@ module body() {
        // spokes
        for (a = [0:360/spokes:360-eps]) {
                rotate([0, 0, a])
-               hull() {
-                       translate([-spoke_w/2, 0, 0])
-                               cube([spoke_w, wheel_d/2 - min_wall/2, min_wall]);
-                       translate([-min_wall/2, 0, spoke_h-eps])
-                               cube([min_wall, wheel_d/2 - min_wall/2, eps]);
-               }
+               spoke();
+       }
+
+       // center cylinders
+       cylinder(r1 = center_d/2, r2 = center_d2/2, h = center_h/2+eps, $fn = 4*spokes);
+       translate([0, 0, center_h/2])
+               cylinder(r1 = center_d2/2, r2 = center_hole/2 + 2*min_wall, h = center_h/2, $fn = 4*spokes);
+}
+
+module wheel() {
+       difference() {
+               body();
+               // center hole
+               translate([0, 0, -eps])
+                       cylinder(r = center_hole/2, h = center_h + 2*eps);
        }
+}
+
+stopper_d = 6;
+stopper_h = 3;
+stopper_hole = 1.2 + 0.5;
 
-       cylinder(r1 = center_d/2, r2 = center_hole/2 + 2*min_wall, h = wheel_h);
+module stopper() {
+       difference() {
+               cylinder(r1 = stopper_d/2, r2 = stopper_hole/2 + 2*min_wall, h = stopper_h);
+               translate([0, 0, -eps])
+                       cylinder(r = stopper_hole/2, h = stopper_h + 2*eps);
+       }
 }
 
-difference() {
-       body();
-       // center hole
-       translate([0, 0, -eps])
-               cylinder(r = center_hole/2, h = wheel_h + 2*eps);
+for (y = [-1, 1]) scale([1, y, 1]) translate([0, wheel_d/2 + 3, 0]) {
+       wheel();
+
+/*
+       translate([wheel_d/2 + stopper_d, 0, 0])
+               stopper();
+*/
 }