103 lines
3.1 KiB
OpenSCAD
103 lines
3.1 KiB
OpenSCAD
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;
|