width=89; height=157; thickness=3; edge_radius=4; difference() { translate([edge_radius,edge_radius,0]) { minkowski() { cube([height-2*edge_radius,width-2*edge_radius,thickness/2]); cylinder(thickness/2, edge_radius, edge_radius); } } mounting_hole_radius=2.5; translate([5,5,-0.5]) { cylinder(thickness+1, mounting_hole_radius, mounting_hole_radius); } translate([5,width-5,-0.5]) { cylinder(thickness+1, mounting_hole_radius, mounting_hole_radius); } translate([height-5,5,-0.5]) { cylinder(thickness+1, mounting_hole_radius, mounting_hole_radius); } translate([height-5,width-5,-0.5]) { cylinder(thickness+1, mounting_hole_radius, mounting_hole_radius); } } // pole mount pipe_diameter=60; pipe_radius=pipe_diameter/2; pole_mount_width=15; pole_mount_length=25; pole_mount_height=pipe_radius; channel_width=15; channel_angle=65; // TODO: Automatically adapt angle to pipe diameter width_offset=sign(sign(width-pipe_diameter)+1)*((width-pipe_diameter)/2+5); difference() { union() { translate([15,width_offset,0]) { difference() { cube([pole_mount_length,pole_mount_width,pole_mount_height]); translate([pole_mount_length/2-channel_width/2,pole_mount_width,thickness]) { rotate([channel_angle,0,0]) { cube([channel_width,2,30]); } } } } mirror([0,1,0]) { translate([15,-width+width_offset,0]) { difference() { cube([pole_mount_length,pole_mount_width,pole_mount_height]); translate([pole_mount_length/2-channel_width/2,pole_mount_width,thickness]) { rotate([channel_angle,0,0]) { cube([channel_width,2,30]); } } } } } translate([height-pole_mount_length-15,width_offset,0]) { difference() { cube([pole_mount_length,pole_mount_width,pole_mount_height]); translate([pole_mount_length/2-channel_width/2,pole_mount_width,thickness]) { rotate([channel_angle,0,0]) { cube([channel_width,2,30]); } } } } mirror([0,1,0]) { translate([height-pole_mount_length-15,-width+width_offset,0]) { difference() { cube([pole_mount_length,pole_mount_width,pole_mount_height]); translate([pole_mount_length/2-channel_width/2,pole_mount_width,thickness]) { rotate([channel_angle,0,0]) { cube([channel_width,2,30]); } } } } } } // pipe rotate([0,90,0]) { translate([-pipe_radius-5,width/2,0]) { #cylinder(height,pipe_radius,pipe_radius); } } } $fn=70;