mirror of https://github.com/CIRCL/Circlean
61 lines
1.7 KiB
OpenSCAD
61 lines
1.7 KiB
OpenSCAD
// Advanced shapes
|
|
//
|
|
// v 1.0 - 24/01/2015 - initial release (MD)
|
|
// v 1.1 - 05/02/2014 - added half-sphere (MD)
|
|
//
|
|
|
|
module round_cube(x,y,z,r) {
|
|
hull() {
|
|
translate([r, r, 0]) cylinder(h = z, r = r) ;
|
|
translate([r, y - r, 0]) cylinder(h = z, r = r) ;
|
|
translate([x - r, r, 0]) cylinder(h = z, r = r) ;
|
|
translate([x - r, y - r, 0]) cylinder(h = z, r = r) ;
|
|
}
|
|
}
|
|
|
|
module round_belt(x,y,z,r,t) {
|
|
// x, y, z, r are outer dimensions, thickness t is inwards
|
|
difference() {
|
|
round_cube(x, y, z, r) ;
|
|
translate([t, t, 0]) round_cube(x-2*t, y-2*t, z, r-t) ;
|
|
}
|
|
}
|
|
|
|
module spacers(x1,x2,y1,y2,z,r) {
|
|
translate([x1, y1, 0]) cylinder(h = z, r = r) ;
|
|
translate([x1, y2, 0]) cylinder(h = z, r = r) ;
|
|
translate([x2, y1, 0]) cylinder(h = z, r = r) ;
|
|
translate([x2, y2, 0]) cylinder(h = z, r = r) ;
|
|
}
|
|
|
|
module truncated_square_pyramid(x1,y1,x2,y2,z) {
|
|
dx = (x1-x2)/2 ;
|
|
dy = (y1-y2)/2 ;
|
|
ax = 90 - atan2(z, dx) ;
|
|
ay = 90 - atan2(z, dy) ;
|
|
|
|
difference() {
|
|
translate([0, 0, z/2]) cube(size=[x1,y1,z], center=true) ;
|
|
union() {
|
|
translate([-x1/2, 0, 0]) rotate([0, ax, 0])
|
|
translate([-x1/2, 0, z]) cube(size=[x1,y1,2*z], center=true) ;
|
|
translate([ x1/2, 0, 0]) rotate([0, -ax, 0])
|
|
translate([ x1/2, 0, z]) cube(size=[x1,y1,2*z], center=true) ;
|
|
translate([0, -y1/2, 0]) rotate([-ay, 0, 0])
|
|
translate([0, -y1/2, z]) cube(size=[x1,y1,2*z], center=true) ;
|
|
translate([0, y1/2, 0]) rotate([ ay, 0, 0])
|
|
translate([0, y1/2, z]) cube(size=[x1,y1,2*z], center=true) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
module halfsphere( r) {
|
|
difference() {
|
|
sphere (r = r) ;
|
|
translate([0, 0, -r/2])
|
|
cube(size=[2*r, 2*r, r], center=true) ;
|
|
}
|
|
}
|
|
|
|
// --- end of file ---
|