2017-12-20 18:57:52 +00:00
|
|
|
round_psu_cable_plane(300, 200, 5, 20, 20, 10, 40, 90, 90, 90);
|
2017-12-20 18:31:41 +00:00
|
|
|
RESOLUTION=36;
|
|
|
|
|
|
|
|
module base_plane(width, height, hole_size, hole_spacing_x, hole_spacing_y) {
|
|
|
|
difference() {
|
|
|
|
// base square
|
|
|
|
square([width, height]);
|
|
|
|
|
|
|
|
// holes
|
|
|
|
translate([hole_spacing_x, hole_spacing_y])
|
|
|
|
circle(d=hole_size, $fn=RESOLUTION);
|
|
|
|
translate([width - hole_spacing_x, hole_spacing_y])
|
|
|
|
circle(d=hole_size, $fn=RESOLUTION);
|
|
|
|
translate([hole_spacing_x, height - hole_spacing_y])
|
|
|
|
circle(d=hole_size, $fn=RESOLUTION);
|
|
|
|
translate([width - hole_spacing_x, height - hole_spacing_y])
|
|
|
|
circle(d=hole_size, $fn=RESOLUTION);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module round_base_plane(width, height, hole_size, hole_spacing_x, hole_spacing_y, radius) {
|
|
|
|
difference() {
|
|
|
|
base_plane(width, height, hole_size, hole_spacing_x, hole_spacing_y);
|
|
|
|
|
|
|
|
translate([width-radius, height-radius])
|
|
|
|
__radius_cutout(radius);
|
|
|
|
translate([radius, height-radius])
|
|
|
|
rotate([0, 0, 90])
|
|
|
|
__radius_cutout(radius);
|
|
|
|
translate([radius, radius])
|
|
|
|
rotate([0, 0, 180])
|
|
|
|
__radius_cutout(radius);
|
|
|
|
translate([width-radius, radius])
|
|
|
|
rotate([0, 0, 270])
|
|
|
|
__radius_cutout(radius);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-12-20 18:52:07 +00:00
|
|
|
module round_psu_plane(width, height, hole_size, hole_spacing_x, hole_spacing_y, radius, psu_width, psu_height) {
|
|
|
|
difference() {
|
|
|
|
round_base_plane(width, height, hole_size, hole_spacing_x, hole_spacing_y, radius);
|
|
|
|
|
|
|
|
translate([width-psu_width, height/2-psu_height/2])
|
|
|
|
square([psu_width, psu_height]);
|
|
|
|
}
|
|
|
|
}
|
2017-12-20 18:53:13 +00:00
|
|
|
module round_cable_plane(width, height, hole_size, hole_spacing_x, hole_spacing_y, radius, cable_width, cable_height) {
|
|
|
|
difference() {
|
|
|
|
round_base_plane(width, height, hole_size, hole_spacing_x, hole_spacing_y, radius);
|
|
|
|
|
|
|
|
translate([0, height/2-cable_height/2])
|
|
|
|
square([cable_width, cable_height]);
|
|
|
|
}
|
|
|
|
}
|
2017-12-20 18:52:07 +00:00
|
|
|
|
2017-12-20 18:57:52 +00:00
|
|
|
module round_psu_cable_plane(width, height, hole_size, hole_spacing_x, hole_spacing_y, radius, psu_width, psu_height, cable_width, cable_height) {
|
|
|
|
intersection() {
|
|
|
|
round_psu_plane(width, height, hole_size, hole_spacing_x, hole_spacing_y, radius, psu_width, psu_height);
|
|
|
|
round_cable_plane(width, height, hole_size, hole_spacing_x, hole_spacing_y, radius, cable_width, cable_height);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-12-20 18:31:41 +00:00
|
|
|
module __radius_cutout(radius) {
|
|
|
|
difference() {
|
|
|
|
translate([radius/2, radius/2, 0])
|
|
|
|
square([radius, radius], center=true);
|
|
|
|
circle(radius, $fn=RESOLUTION);
|
|
|
|
}
|
|
|
|
}
|