$fn=128; color("red", 0.75) ring(); color("blue", 0.75) translate([0,0,30]) sensorHolder(); color("green", 0.75) translate([0,0,50]) cakeStick(); color("pink", 0.75) translate([0,0,15]) cakeStickAttachment(); color("violet", 0.75) translate([15.5,0,38.5]) rotate([0,-90,0]) sensor(); color("yellow", 0.75) translate([-22,0,36]) rotate([0,0,90]) cubeCell(); module cubeCell() { cube([41.5, 25, 7.6], center=true); } module sensor() { difference() { cube([32,19,1], center = true); translate([-8.5,0,0]) cylinder(d=3.5, h=2, center=true); } translate([13,0,5]) cube([6, 10, 10], center = true); } //4.2 diameter easy flow //4.0 stick to filament module cakeStickAttachment() { cylinder(d=19, h=0.5, center=true); translate([0,0,2.5]) difference() { cylinder(d=7,h=5, center=true); cylinder(d=3.8,h=5.1, center=true); } } //15 x 0.4 x 0.4 module cakeStick() { cylinder(d=4.0,h=50, center=true); } module sensorHolder() { difference() { union() { handle(); //90deg rotated and spaced spacedHandle(); translate([0,0,13.5]) difference() { cylinder(d=10,h=27, center=true); cylinder(d=4.3,h=27.1, center=true); translate([6,0,8]) sphere(d=10 ); } translate([10,0,0.5]) difference() { cube([15,2,3], center=true); translate([5.5,0,1.1]) cube([10,2.1,1], center=true); } translate([9,0,2]) cube([12,10,6], center=true); //fill one side for board placement and weight translate([-21,0,0.5]) cube([35,22,3], center=true); //cable holder 2x translate([0,-12.5,4]) cableHolder(); translate([0,12.5,4]) cableHolder(); } cylinder(d=4.3,h=4.1, center=true); } } module cableHolder() { rotate([0,90,0]) difference() { cylinder(d=10,h=1, center=true); cylinder(d=5, h=1.1, center=true); } } module spacedHandle() { rotate([0,0,90]) difference () { minkowski() { cube([25,86,2], center=true); cylinder(r=2,h=1); } minkowski() { cube([17,72.5,2.1], center=true); cylinder(r=2,h=1); } translate([0,41.5,0]) cylinder(d=4.8,h=4.1, center=true); translate([0,-41.5,0]) cylinder(d=4.8,h=4.1, center=true); } } module handle() { difference () { minkowski() { cube([5,86,2], center=true); cylinder(r=2,h=1); } translate([0,41.5,0]) cylinder(d=4.8,h=4.1, center=true); translate([0,-41.5,0]) cylinder(d=4.8,h=4.1, center=true); } } module ring() { difference() { cylinder(h=2, r=33.25, center=true); cylinder(h=2.1, r=30.50, center=true); } translate([0,-33.5,0]) stick(); translate([0,33.5,0]) rotate([0,0,180]) stick(); translate([33.5,0,0]) rotate([0,0,90]) stick(); translate([-33.5,0,0]) rotate([0,0,-90]) stick(); } module stick() { translate([0,-3,0]) cube([4.5,10,2], center=true); translate([0,-8,14]) cylinder(h=30, r=2.25, center=true); translate([-4.9,0,0]) rotate([0,0,180]) roundEdge(); translate([4.9,0,0]) rotate([0,180,180]) roundEdge(); translate([0,-4.5,5]) rotate([0,-90,0]) scale([1.5,0.5,0.5]) roundEdge(); translate([0,-8,23]) sphere(d=5); } module roundEdge() { difference() { cylinder(r=10, h=2, center=true); translate([8,8,0]) cylinder(r=11, h=2.1, center=true); translate([-7.7,0,0]) cube([10,20,2.1], center=true); translate([0,-7.7,0]) cube([20,10,2.1], center=true); } }