// Parameters $fn = 150; width = 18; height = 12; holes = 5; // Holes per edge diameter = 3.75; // Hole diameter separation = 6.25; // Separation between holes edge = 4.2; // Edge roundness cube_size = [66, 2, 18]; // Dimensions of the cube edge_radius = 0.5; // Radius of the rounded edges
union(){ difference(){
cube([diameter*holes+separation*(holes+1),width,height]);
// Loop to create rounded holes on the first edge for(i=[0:holes-1]){ hull(){ translate([(separation+diameter/2)+(separation+diameter)*i,0.1+diameter/2,-0.05]) cylinder(r=diameter/2, h=height+0.1); // Create the first cylinder for each hole translate([(separation+diameter/2)+(separation+diameter)*i,-diameter/3,-0.05]) cylinder(r=diameter/2, h=height+0.1); // Create the second cylinder to be connected with the first to create the rounded hole } }
// Loop to create rounded holes on the opposite edge for(i=[0:holes-1]){ hull(){ translate([(separation+diameter/2)+(separation+diameter)*i, width-diameter/2-0.1, -0.05]) cylinder(r=diameter/2, h=height+0.1); // Create the first cylinder for each hole translate([(separation+diameter/2)+(separation+diameter)*i,width+diameter/3,-0.05]) cylinder(r=diameter/2, h=height+0.1); // Create the second cylinder to be connected with the first to create the rounded hole } }
} // Adding edges to one side for(i=[0:holes]){ translate([separation/2+(diameter+separation)*i,0,0]) cylinder(r=edge, h=height); }
// Adding edges to the opposite side (cut into half) for (i = [0 : holes]) { translate([separation / 2 + (diameter + separation) * i, width, 0]) translate([0, -edge / 2, 0]) // Offset the position for half-cut edges scale([1, 0.5, 1]) // Scale the edge in the Y direction cylinder(r = edge, h = height); } translate([-5,17.25,-3]) minkowski() { cube(cube_size, center = false); sphere(r = edge_radius); }
|