Use 2.5 hole radius, replace comments, fix carrier_simpler and sun_drive
parent
4735bbc937
commit
2db882cf7e
27464
32t-carrier-simpler.stl
27464
32t-carrier-simpler.stl
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
37546
32t-sun-drive.stl
37546
32t-sun-drive.stl
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
18828
40t-2u-ring-gear.stl
18828
40t-2u-ring-gear.stl
File diff suppressed because it is too large
Load Diff
158
gear-v3.scad
158
gear-v3.scad
|
@ -1,5 +1,3 @@
|
||||||
// Algorithmic LEGO(r) Technic compatible gear generator
|
|
||||||
//
|
|
||||||
// NOTE regarding Patents: Since 1977 the LEGO Group has produced "Technic"
|
// NOTE regarding Patents: Since 1977 the LEGO Group has produced "Technic"
|
||||||
// elements with gear teeth, axles, axle-holes, and other features closely
|
// elements with gear teeth, axles, axle-holes, and other features closely
|
||||||
// resembling the design(s) in this file, as part of their "Expert Builder"
|
// resembling the design(s) in this file, as part of their "Expert Builder"
|
||||||
|
@ -18,56 +16,17 @@
|
||||||
// to make objects and then try to "pass them off" as LEGO products. See
|
// to make objects and then try to "pass them off" as LEGO products. See
|
||||||
// for example the Kirkbi AG v. Ritvik Holdings Inc. case, (Supreme Court of
|
// for example the Kirkbi AG v. Ritvik Holdings Inc. case, (Supreme Court of
|
||||||
// Canada [2005] 3 S.C.R. 302).
|
// Canada [2005] 3 S.C.R. 302).
|
||||||
//
|
|
||||||
// This was originally created by user bjepson on Thingiverse (thing 29989),
|
|
||||||
// then heavily modified and expanded by Robert Munafo:
|
|
||||||
// 20121226: separate parameters for rows/columns of cylinder holes and of
|
|
||||||
// "plus-shaped" holes
|
|
||||||
// * Rotate the holes by 20 degrees to take advantage of
|
|
||||||
// edge dithering both for improved hole width resolution
|
|
||||||
// and to provide a rough surface which better grips the
|
|
||||||
// smooth axles.
|
|
||||||
// * You can now get more than just a single row of plus-holes
|
|
||||||
// in each direction
|
|
||||||
//
|
|
||||||
// 20130105: added MCAD functions to make this file work all by itself (no
|
|
||||||
// need to hunt down missing pieces elsewhere)
|
|
||||||
// * More accurate axle hole dimensions
|
|
||||||
// * Round holes are actually round now (imagine that!)
|
|
||||||
// * Automatically determines correct parameters for number and placement
|
|
||||||
// of holes, based on number of teeth
|
|
||||||
//
|
|
||||||
// 20130106: fix small glitch seen at junction of fillet and bottom land (for
|
|
||||||
// illustration of the problem, see "0106-fix.jpg" at
|
|
||||||
// thingiverse.com/thing:40410)
|
|
||||||
|
|
||||||
// 32 teeth is the real "missing" gear size, because all the other
|
// Contains some code from thing 29989 by bjepson on Thingiverse, thing 40410
|
||||||
// multiples of 8 are available. An argument can also be made for 28 (which
|
// by Robert Munafo, and MCAD library. myGear() from 40410 is here, but with
|
||||||
// however is available in the new small turntable) or any other multiple of 4
|
// different (better) involute gear teeth shape, and with some tweaks to make
|
||||||
// because the official gears are all multiples of 4, namely: 8, 12, 16,
|
// better gears without degenerate faces.
|
||||||
// 20, 24, 28(turntable), 36, 40 and 56(big turntable).
|
|
||||||
//
|
//
|
||||||
// For my orrery designs ( see mrob.com/orrery ) I might use any integer
|
// Everything other is (c)oded by me, Vitaliy Filippov. License is GNU LGPL2.1+
|
||||||
// number of teeth from 8 up to around 60 or 70.
|
|
||||||
//
|
//
|
||||||
// The holes parameters need to be chosen a certain way. To get a normal style
|
// Also I HIGHLY recommend to build OpenSCAD from my fork: github.com/vitalif/openscad,
|
||||||
// gear with a + hole in the middle, the plus_row and plus_col should both
|
// because there's a patch that makes OpenSCAD to use Delaunay triangulation which
|
||||||
// be odd, and the holes_row, holes_col should both be even. To get a round
|
// greatly improves the resulting model quality.
|
||||||
// hole in the center, do it the other way 'round. Then invoke it as
|
|
||||||
// myGearParamed(n_teeth, holes_row, holes_col, plus_row, plus_col)
|
|
||||||
//
|
|
||||||
// Examples:
|
|
||||||
// my 20 gear: holes_row=2, holes_col=2, plus_row=1, plus_col=1
|
|
||||||
// Standard 24 gear: holes_row=2, holes_col=2, plus_row=1, plus_col=1
|
|
||||||
// my 28 gear: holes_row=2, holes_col=2, plus_row=3, plus_col=1
|
|
||||||
// my 32 gear: holes_row=2, holes_col=2, plus_row=3, plus_col=3
|
|
||||||
// nonstandard 36 gear: holes_row=2, holes_col=2, plus_row=3, plus_col=3
|
|
||||||
// Standard 40 gear: holes_row=4, holes_col=2, plus_row=3, plus_col=3
|
|
||||||
// my 44 gear: holes_row=4, holes_col=2, plus_row=3, plus_col=3
|
|
||||||
// my 48 gear: holes_row=4, holes_col=4, plus_row=5, plus_col=3
|
|
||||||
//
|
|
||||||
// By default, the myGear function chooses the best values for all the holes paramters
|
|
||||||
// based on the number of teeth.
|
|
||||||
|
|
||||||
// Standard LEGO dimensions:
|
// Standard LEGO dimensions:
|
||||||
// Stud spacing = 8mm
|
// Stud spacing = 8mm
|
||||||
|
@ -107,7 +66,7 @@ translate([0, 0, 16])
|
||||||
|
|
||||||
/* Planetary ring gear with both inner and outer 40 teeth */
|
/* Planetary ring gear with both inner and outer 40 teeth */
|
||||||
|
|
||||||
//planetary_ring_gear(plane_height=1);
|
planetary_ring_gear(plane_height=1);
|
||||||
|
|
||||||
/* 40-teeth planetary ring gear with clutch */
|
/* 40-teeth planetary ring gear with clutch */
|
||||||
|
|
||||||
|
@ -115,7 +74,7 @@ translate([0, 0, 16])
|
||||||
|
|
||||||
/* Solid clutch gear, like standard 16-teeth */
|
/* Solid clutch gear, like standard 16-teeth */
|
||||||
|
|
||||||
clutchGear(32);
|
//clutchGear(32);
|
||||||
|
|
||||||
/* Gear with clutch fully offset to one side */
|
/* Gear with clutch fully offset to one side */
|
||||||
|
|
||||||
|
@ -145,6 +104,7 @@ clutchGear(32);
|
||||||
|
|
||||||
//-------------
|
//-------------
|
||||||
|
|
||||||
|
// Same as carrier_32t(), but with axle hole at the center
|
||||||
module sun_drive_32t() {
|
module sun_drive_32t() {
|
||||||
root = 3.06*(32/2-1)/3.1415926;
|
root = 3.06*(32/2-1)/3.1415926;
|
||||||
segments = 32*2; // so gear teeth edge never match cylinder segment edges
|
segments = 32*2; // so gear teeth edge never match cylinder segment edges
|
||||||
|
@ -154,31 +114,34 @@ module sun_drive_32t() {
|
||||||
translate([0, 0, 2]) gear_teeth(mm_per_tooth=3.06, number_of_teeth=32, thickness=4, clearance=-0.1);
|
translate([0, 0, 2]) gear_teeth(mm_per_tooth=3.06, number_of_teeth=32, thickness=4, clearance=-0.1);
|
||||||
cylinder($fn=100, h=8, r=root-0.5);
|
cylinder($fn=100, h=8, r=root-0.5);
|
||||||
}
|
}
|
||||||
translate([0, 0, 3.5]) cylinder($fn=32*2, h=1, r=root-0.5);
|
|
||||||
cylinder($fn=100, h=8, r=3.5);
|
cylinder($fn=100, h=8, r=3.5);
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
difference() {
|
difference() {
|
||||||
translate([0, 0, 0.8-0.1]) cylinder($fn=32*2, h=7.2+0.1, r=root);
|
translate([0, 0, 0.8-0.1]) cylinder($fn=32*2, h=7.2+0.1, r=root);
|
||||||
translate([0, 0, -0.1]) cylinder($fn=32*2, h=7.3, r=root-1);
|
translate([0, 0, -0.1]) cylinder($fn=32*2, h=7.1, r=root-1);
|
||||||
translate([0, 0, 7.2-0.1]) cylinder($fn=32*2, h=1, r=3.06*(24/2)/3.1415926);
|
|
||||||
}
|
}
|
||||||
translate([-8, 0, 0]) cylinder($fn=32*2, h=8, r=3.5);
|
translate([-8, 0, 0.1]) cylinder($fn=32, h=8-0.2, r=3.5);
|
||||||
translate([0, -8, 0]) cylinder($fn=32*2, h=8, r=3.5);
|
translate([0, -8, 0.1]) cylinder($fn=32, h=8-0.2, r=3.5);
|
||||||
translate([0, 8, 0]) cylinder($fn=32*2, h=8, r=3.5);
|
translate([0, 8, 0.1]) cylinder($fn=32, h=8-0.2, r=3.5);
|
||||||
translate([8, 0, 0]) cylinder($fn=32*2, h=8, r=3.5);
|
translate([8, 0, 0.1]) cylinder($fn=32, h=8-0.2, r=3.5);
|
||||||
translate([-0.5, -root+0.5, 0]) cube(size=[1, root*2-1, 8]);
|
translate([-0.5, -root+0.5, 0]) cube(size=[1, root*2-1, 8]);
|
||||||
rotate([0, 0, 90]) translate([-0.5, -root+0.5, 0]) cube(size=[1, root*2-1, 8]);
|
rotate([0, 0, 90]) translate([-0.5, -root+0.5, 0]) cube(size=[1, root*2-1, 8]);
|
||||||
}
|
}
|
||||||
translate([0, 0, 8-0.8]) cylinder($fn=32*2, r=3.06*(24/2)/3.1415926, h=1);
|
|
||||||
translate([-20, -20, -0.2]) cube(size=[40, 40, 1]);
|
translate([-20, -20, -0.2]) cube(size=[40, 40, 1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
translate([-8, 0, -0.2]) cylinder($fn=32*2, h=10, r=2.4);
|
|
||||||
translate([0, -8, -0.2]) cylinder($fn=32*2, h=10, r=2.4);
|
|
||||||
translate([0, 8, -0.2]) cylinder($fn=32*2, h=10, r=2.4);
|
|
||||||
translate([8, 0, -0.2]) cylinder($fn=32*2, h=10, r=2.4);
|
|
||||||
rotate([0, 0, 45]) axleCut(0, 0, -0.2, 10);
|
rotate([0, 0, 45]) axleCut(0, 0, -0.2, 10);
|
||||||
|
|
||||||
|
translate([-8, 0, -0.2]) cylinder($fn=32, h=10, r=2.5);
|
||||||
|
translate([0, -8, -0.2]) cylinder($fn=32, h=10, r=2.5);
|
||||||
|
translate([0, 8, -0.2]) cylinder($fn=32, h=10, r=2.5);
|
||||||
|
translate([8, 0, -0.2]) cylinder($fn=32, h=10, r=2.5);
|
||||||
|
|
||||||
|
translate([-8, 0, 7.2]) cylinder($fn=32, h=0.8+0.1, r=3);
|
||||||
|
translate([0, -8, 7.2]) cylinder($fn=32, h=0.8+0.1, r=3);
|
||||||
|
translate([0, 8, 7.2]) cylinder($fn=32, h=0.8+0.1, r=3);
|
||||||
|
translate([8, 0, 7.2]) cylinder($fn=32, h=0.8+0.1, r=3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,13 +180,13 @@ module carrier_32t_simpler() {
|
||||||
translate([0, 0, 2]) gear_teeth(mm_per_tooth=3.06, number_of_teeth=32, thickness=4, clearance=-0.1);
|
translate([0, 0, 2]) gear_teeth(mm_per_tooth=3.06, number_of_teeth=32, thickness=4, clearance=-0.1);
|
||||||
cylinder($fn=100, h=8, r=root-0.5);
|
cylinder($fn=100, h=8, r=root-0.5);
|
||||||
}
|
}
|
||||||
difference() {
|
|
||||||
translate([0, 0, 0.8-0.1]) cylinder($fn=32*2, h=7.2+0.1, r=root);
|
|
||||||
translate([0, 0, -0.1]) cylinder($fn=32*2, h=7.1, r=root-1);
|
|
||||||
}
|
|
||||||
cylinder($fn=100, h=8, r=3.5);
|
cylinder($fn=100, h=8, r=3.5);
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
|
difference() {
|
||||||
|
translate([0, 0, 0.8-0.1]) cylinder($fn=32*2, h=7.2+0.1, r=root);
|
||||||
|
translate([0, 0, -0.1]) cylinder($fn=32*2, h=7.1, r=root-1);
|
||||||
|
}
|
||||||
translate([-8, 0, 0.1]) cylinder($fn=32, h=8-0.2, r=3.5);
|
translate([-8, 0, 0.1]) cylinder($fn=32, h=8-0.2, r=3.5);
|
||||||
translate([0, -8, 0.1]) cylinder($fn=32, h=8-0.2, r=3.5);
|
translate([0, -8, 0.1]) cylinder($fn=32, h=8-0.2, r=3.5);
|
||||||
translate([0, 8, 0.1]) cylinder($fn=32, h=8-0.2, r=3.5);
|
translate([0, 8, 0.1]) cylinder($fn=32, h=8-0.2, r=3.5);
|
||||||
|
@ -231,21 +194,20 @@ module carrier_32t_simpler() {
|
||||||
translate([-0.5, -root+0.5, 0]) cube(size=[1, root*2-1, 8]);
|
translate([-0.5, -root+0.5, 0]) cube(size=[1, root*2-1, 8]);
|
||||||
rotate([0, 0, 90]) translate([-0.5, -root+0.5, 0]) cube(size=[1, root*2-1, 8]);
|
rotate([0, 0, 90]) translate([-0.5, -root+0.5, 0]) cube(size=[1, root*2-1, 8]);
|
||||||
}
|
}
|
||||||
translate([-20, -20, 8-0.8]) cube(size=[40, 40, 1]);
|
|
||||||
translate([-20, -20, -0.2]) cube(size=[40, 40, 1]);
|
translate([-20, -20, -0.2]) cube(size=[40, 40, 1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
translate([0, 0, -0.2]) cylinder($fn=32, h=10, r=2.4);
|
translate([0, 0, -0.2]) cylinder($fn=32, h=10, r=2.5);
|
||||||
|
|
||||||
translate([-8, 0, -0.2]) cylinder($fn=32, h=10, r=2.4);
|
translate([-8, 0, -0.2]) cylinder($fn=32, h=10, r=2.5);
|
||||||
translate([0, -8, -0.2]) cylinder($fn=32, h=10, r=2.4);
|
translate([0, -8, -0.2]) cylinder($fn=32, h=10, r=2.5);
|
||||||
translate([0, 8, -0.2]) cylinder($fn=32, h=10, r=2.4);
|
translate([0, 8, -0.2]) cylinder($fn=32, h=10, r=2.5);
|
||||||
translate([8, 0, -0.2]) cylinder($fn=32, h=10, r=2.4);
|
translate([8, 0, -0.2]) cylinder($fn=32, h=10, r=2.5);
|
||||||
|
|
||||||
translate([-8, 0, 7.2]) cylinder($fn=32, h=0.8+0.1, r=2.9);
|
translate([-8, 0, 7.2]) cylinder($fn=32, h=0.8+0.1, r=3);
|
||||||
translate([0, -8, 7.2]) cylinder($fn=32, h=0.8+0.1, r=2.9);
|
translate([0, -8, 7.2]) cylinder($fn=32, h=0.8+0.1, r=3);
|
||||||
translate([0, 8, 7.2]) cylinder($fn=32, h=0.8+0.1, r=2.9);
|
translate([0, 8, 7.2]) cylinder($fn=32, h=0.8+0.1, r=3);
|
||||||
translate([8, 0, 7.2]) cylinder($fn=32, h=0.8+0.1, r=2.9);
|
translate([8, 0, 7.2]) cylinder($fn=32, h=0.8+0.1, r=3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,11 +240,11 @@ module carrier_32t() {
|
||||||
translate([-20, -20, -0.2]) cube(size=[40, 40, 1]);
|
translate([-20, -20, -0.2]) cube(size=[40, 40, 1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
translate([-8, 0, -0.2]) cylinder($fn=32*2, h=10, r=2.4);
|
translate([-8, 0, -0.2]) cylinder($fn=32*2, h=10, r=2.5);
|
||||||
translate([0, -8, -0.2]) cylinder($fn=32*2, h=10, r=2.4);
|
translate([0, -8, -0.2]) cylinder($fn=32*2, h=10, r=2.5);
|
||||||
translate([0, 0, -0.2]) cylinder($fn=32*2, h=10, r=2.4);
|
translate([0, 0, -0.2]) cylinder($fn=32*2, h=10, r=2.5);
|
||||||
translate([0, 8, -0.2]) cylinder($fn=32*2, h=10, r=2.4);
|
translate([0, 8, -0.2]) cylinder($fn=32*2, h=10, r=2.5);
|
||||||
translate([8, 0, -0.2]) cylinder($fn=32*2, h=10, r=2.4);
|
translate([8, 0, -0.2]) cylinder($fn=32*2, h=10, r=2.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -383,7 +345,7 @@ module planetary_ring_gear_with_clutch() {
|
||||||
rotate([0, 0, -135]) translate([-0.5, 10, -0.1]) cube(size=[1, 10, 10]);
|
rotate([0, 0, -135]) translate([-0.5, 10, -0.1]) cube(size=[1, 10, 10]);
|
||||||
rotate([0, 0, 135]) translate([-0.5, 10, -0.1]) cube(size=[1, 10, 10]);*/
|
rotate([0, 0, 135]) translate([-0.5, 10, -0.1]) cube(size=[1, 10, 10]);*/
|
||||||
}
|
}
|
||||||
translate([0, 0, -0.1]) cylinder($fn=100, h=10, r=2.4);
|
translate([0, 0, -0.1]) cylinder($fn=100, h=10, r=2.5);
|
||||||
}
|
}
|
||||||
translate([0, 0, 10.2]) union() {
|
translate([0, 0, 10.2]) union() {
|
||||||
clutchTeeth();
|
clutchTeeth();
|
||||||
|
@ -433,15 +395,15 @@ module planetary_ring_gear(plane_height = 1) {
|
||||||
translate([8, 0, -0.1]) cylinder($fn=50, h=10, r=3.5);
|
translate([8, 0, -0.1]) cylinder($fn=50, h=10, r=3.5);
|
||||||
translate([8, 8, -0.1]) cylinder($fn=50, h=10, r=3.5);
|
translate([8, 8, -0.1]) cylinder($fn=50, h=10, r=3.5);
|
||||||
}
|
}
|
||||||
translate([-8, -8, -0.1]) cylinder($fn=50, h=10, r=2.4);
|
translate([-8, -8, -0.1]) cylinder($fn=50, h=10, r=2.5);
|
||||||
translate([-8, 0, -0.1]) cylinder($fn=50, h=10, r=2.4);
|
translate([-8, 0, -0.1]) cylinder($fn=50, h=10, r=2.5);
|
||||||
translate([-8, 8, -0.1]) cylinder($fn=50, h=10, r=2.4);
|
translate([-8, 8, -0.1]) cylinder($fn=50, h=10, r=2.5);
|
||||||
translate([0, -8, -0.1]) cylinder($fn=50, h=10, r=2.4);
|
translate([0, -8, -0.1]) cylinder($fn=50, h=10, r=2.5);
|
||||||
translate([0, 0, -0.1]) cylinder($fn=50, h=10, r=2.4);
|
translate([0, 0, -0.1]) cylinder($fn=50, h=10, r=2.5);
|
||||||
translate([0, 8, -0.1]) cylinder($fn=50, h=10, r=2.4);
|
translate([0, 8, -0.1]) cylinder($fn=50, h=10, r=2.5);
|
||||||
translate([8, -8, -0.1]) cylinder($fn=50, h=10, r=2.4);
|
translate([8, -8, -0.1]) cylinder($fn=50, h=10, r=2.5);
|
||||||
translate([8, 0, -0.1]) cylinder($fn=50, h=10, r=2.4);
|
translate([8, 0, -0.1]) cylinder($fn=50, h=10, r=2.5);
|
||||||
translate([8, 8, -0.1]) cylinder($fn=50, h=10, r=2.4);
|
translate([8, 8, -0.1]) cylinder($fn=50, h=10, r=2.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -461,9 +423,9 @@ module gear28_4holes() {
|
||||||
// from some solid part (like half or full beam)
|
// from some solid part (like half or full beam)
|
||||||
module pinHole(height=8) {
|
module pinHole(height=8) {
|
||||||
union() {
|
union() {
|
||||||
translate([0, 0, -0.1]) cylinder($fs=0.5, h=height+0.2, r=2.4);
|
translate([0, 0, -0.1]) cylinder($fs=0.5, h=height+0.2, r=2.5);
|
||||||
translate([0, 0, -0.1]) cylinder($fs=0.5, h=0.8+0.1, r=2.9);
|
translate([0, 0, -0.1]) cylinder($fs=0.5, h=0.8+0.1, r=3);
|
||||||
translate([0, 0, height-0.8]) cylinder($fs=0.5, h=0.8+0.1, r=2.9);
|
translate([0, 0, height-0.8]) cylinder($fs=0.5, h=0.8+0.1, r=3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -513,7 +475,7 @@ module offsetClutchGear(number_of_teeth) {
|
||||||
translate([0, 0, 4.8]) cylinder($fn=100, h=4, r=3.3);
|
translate([0, 0, 4.8]) cylinder($fn=100, h=4, r=3.3);
|
||||||
}
|
}
|
||||||
// round hole
|
// round hole
|
||||||
translate([0, 0, -3]) cylinder($fn=100, h=12, r=2.45);
|
translate([0, 0, -3]) cylinder($fn=100, h=12, r=2.5);
|
||||||
// axle hole
|
// axle hole
|
||||||
//axle(0, 0, -1, 10);
|
//axle(0, 0, -1, 10);
|
||||||
}
|
}
|
||||||
|
@ -529,7 +491,7 @@ module offsetClutchGear(number_of_teeth) {
|
||||||
// Axle
|
// Axle
|
||||||
module axle(x, y, z, height) {
|
module axle(x, y, z, height) {
|
||||||
axle_gap = 1.85;
|
axle_gap = 1.85;
|
||||||
hole_radius = 2.4;
|
hole_radius = 2.5;
|
||||||
union() {
|
union() {
|
||||||
translate([x - hole_radius, y - axle_gap/2, z])
|
translate([x - hole_radius, y - axle_gap/2, z])
|
||||||
roundedRect([hole_radius * 2, axle_gap, height], .2);
|
roundedRect([hole_radius * 2, axle_gap, height], .2);
|
||||||
|
@ -542,7 +504,7 @@ module axle(x, y, z, height) {
|
||||||
module axleCut(x, y, z, height) {
|
module axleCut(x, y, z, height) {
|
||||||
axle_gap = 1.85;
|
axle_gap = 1.85;
|
||||||
axle_gap_cut = 1.7;
|
axle_gap_cut = 1.7;
|
||||||
hole_radius = 2.4;
|
hole_radius = 2.5;
|
||||||
union() {
|
union() {
|
||||||
translate([x - hole_radius, y - axle_gap/2, z])
|
translate([x - hole_radius, y - axle_gap/2, z])
|
||||||
roundedRect([hole_radius * 2, axle_gap, height], .2);
|
roundedRect([hole_radius * 2, axle_gap, height], .2);
|
||||||
|
|
Loading…
Reference in New Issue