12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- tube = 16.5;
- wall = 6;
- depth = 12;
- mount = 1;
- wall_off = 3;
- tab = 11;
- hole = 4.1;
-
- head_min = hole;
- head_max = 7.9;
- head_height = 2.5;
-
- fix_height = 9;
- fix_wall = 4;
- fix_dia = 40;
- fix_hole = 2.8;
-
- double = true;
-
- $fn = 42;
-
- module fix() {
- difference() {
- cylinder(d = fix_dia, h = fix_height);
-
- translate([0, 0, -1])
- cylinder(d = tube, h = fix_height + 2);
-
- translate([0, -1, fix_height / 2])
- rotate([90, 0, 0])
- cylinder(d = fix_hole, h = fix_dia / 2);
-
- translate([1, 0, fix_height / 2])
- rotate([0, 90, 0])
- cylinder(d = fix_hole, h = fix_dia / 2);
- }
- }
-
- module tab() {
- difference() {
- cube([wall + wall_off, tab, depth]);
-
- translate([-1, tab / 2, depth / 2])
- rotate([0, 90, 0]) {
- cylinder(d = hole, h = wall + wall_off + 2);
-
- translate([0, 0, wall + wall_off + 1 - head_height])
- cylinder(d1 = head_min, d2 = head_max, h = head_height + 0.01);
- }
- }
- }
-
- module main_part() {
- hull() {
- cylinder(d = tube + (2 * wall), h = depth);
-
- translate([-tube / 2 - wall_off, tube / 2 + wall, 0])
- cube([wall + wall_off, mount, depth]);
-
- translate([-tube / 2 - wall_off, -tube / 2 - wall - mount, 0])
- cube([wall + wall_off, mount, depth]);
- }
-
- translate([-tube / 2 - wall_off, tube / 2 + wall + mount, 0])
- tab();
-
- translate([-tube / 2 - wall_off, -tube / 2 - wall - mount - tab, 0])
- tab();
- }
-
- module whole() {
- difference() {
- main_part();
-
- translate([0, 0, -1])
- cylinder(d = tube, h = depth + 2);
-
- translate([-100 - tube / 2 - wall_off, -50, -50])
- cube([100, 100, 100]);
- }
- }
-
- translate([fix_dia + 10, 0, 0])
- fix();
-
- whole();
-
- if (double) {
- translate([0, 0, depth])
- whole();
- }
|