width = 8; strength = 2; hole_diameter = 2.3; //hole_space = 45.5; // adafruit pwm module //hole_space = 15.3; // adafruit 3-axis accelerometer //hole_space = 49; // raspberry pi 3 model b //hole_space = 46; // 2 channel relais card //hole_space = 66.5; // 8-ch ssr relais card //hole_space = 30; // 12 to 5v dc-dc converter //hole_space = 46.5; // 8-ch relais card (mechanical) //hole_space = 42; // orange pi hole_space = 28; // DPS5005 if (width < 5) { base(5); } else { base(width); } module base(width) { linear_extrude(height = width, center = true, convexity = 10) import(file = "dxfimporttest.dxf", layer = "lower"); mountinghole(width); if (hole_space > 31 && hole_space < 36.5) { linear_extrude(height = width, center = true, convexity = 10) import(file = "dxfimporttest.dxf", layer = "upper"); // upper connections of release mechanism with mounting hole translate([-strength, 36, -width/2]) cube([strength, hole_diameter + 2 + 1, width]); translate([-8, 36, -width/2]) cube([1, hole_diameter + 2 + 1, width]); translate([-6, hole_diameter * 2, -width/2]) cube([6, 34 - hole_diameter * 2, width]); translate([0, hole_space, 0]) mountinghole(width); } else { if (hole_space > 36) { difference() { union() { translate([0, hole_space - 34]) linear_extrude(height = width, center = true, convexity = 10) import(file = "dxfimporttest.dxf", layer = "upper"); // upper connections of release mechanism with mounting hole translate([-strength, 34, -width/2]) cube([strength, hole_diameter + hole_space - 29, width]); translate([-8, 36, -width/2]) cube([1, hole_diameter + hole_space - 31, width]); translate([-6, hole_diameter * 2, -width/2]) cube([6, 34 - hole_diameter * 2, width]); translate([0, hole_space, 0]) mountinghole(width); } translate([-6, hole_diameter + hole_space, 0]) rotate([0, 90, 0]) cylinder(15, d=hole_diameter, d=hole_diameter, $fn=25); } } else { translate([0, hole_space, 0]) mountinghole(width); translate([0, -5, 0]) linear_extrude(height = width, center = true, convexity = 10) import(file = "dxfimporttest.dxf", layer = "upper"); translate([-6, hole_diameter * 2, -width/2]) cube([6, 35 - hole_diameter * 4, width]); } } } module mountinghole(width) { difference() { union() { // lower cube and mounting hole translate([-6, 0, -width/2]) cube([6, hole_diameter * 2, width]); translate([-2, hole_diameter, 0]) rotate([0, 90, 0]) cylinder(4, d=hole_diameter + 2, d=hole_diameter + 2, $fn=25); } translate([-10, hole_diameter, 0]) rotate([0, 90, 0]) cylinder(15, d=hole_diameter, d=hole_diameter, $fn=25); } }