From 5e70566edc90b3f17d45be187bf7f0ec183dcb2e Mon Sep 17 00:00:00 2001 From: Eric Meehan Date: Thu, 19 Dec 2024 13:27:31 -0500 Subject: [PATCH] Initial commit --- centrifuge.scad | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 centrifuge.scad diff --git a/centrifuge.scad b/centrifuge.scad new file mode 100644 index 0000000..3e045fc --- /dev/null +++ b/centrifuge.scad @@ -0,0 +1,60 @@ +$fn=360; + +AXLE_DIAMETER=5; +BASE_HEIGHT=100; +BASE_LOWER_DIAMETER=100; +BASE_UPPER_DIAMETER=50; +TEST_TUBE_HEIGHT=150; +TEST_TUBE_DIAMETER=10; +TEST_TUBE_ANGLE=33; +TEST_TUBE_SPREAD=100; + +module testTube(height, diameter) { + cylinder(height, diameter, diameter); +} + +module arrangedTestTubes(angle, spread, rotation) { + rotate([0, 0, rotation]) { + translate([0, spread, 10]) { + rotate([angle, 0, 0]) { + testTube(TEST_TUBE_HEIGHT, TEST_TUBE_DIAMETER); + } + } + translate([0, -spread, 10]) { + rotate([-angle, 0, 0]) { + testTube(TEST_TUBE_HEIGHT, TEST_TUBE_DIAMETER); + } + } + translate([spread, 0, 10]) { + rotate([0, -angle, 0]) { + testTube(TEST_TUBE_HEIGHT, TEST_TUBE_DIAMETER); + } + } + translate([-spread, 0, 10]) { + rotate([0, angle, 0]) { + testTube(TEST_TUBE_HEIGHT, TEST_TUBE_DIAMETER); + } + } + } +} + +module base(height, lowerDiameter, upperDiameter) { + cylinder(height, lowerDiameter, upperDiameter); +} + +module axle(height, diameter) { + translate([0, 0, -1]) { + cylinder(height, diameter, diameter); + } +} + +module centrifuge() { + difference() { + base(BASE_HEIGHT, BASE_LOWER_DIAMETER, BASE_UPPER_DIAMETER); + axle(BASE_HEIGHT + 2, AXLE_DIAMETER); + arrangedTestTubes(TEST_TUBE_ANGLE, TEST_TUBE_SPREAD, 0); + arrangedTestTubes(TEST_TUBE_ANGLE, TEST_TUBE_SPREAD, 45); + } +} + +centrifuge();