diff --git a/src/bend_extrude.scad b/src/bend_extrude.scad index e10a956e..70a83b73 100644 --- a/src/bend_extrude.scad +++ b/src/bend_extrude.scad @@ -18,28 +18,32 @@ module bend_extrude(size, thickness, angle, frags = 24) { r = half_frag_width / sin(half_frag_angle); s = (r - thickness) / r; + transX = [x, 0, 0]; + mirrorX = [1, 0, 0]; + sq_size = [frag_width, y]; module get_frag(i) { offsetX = i * frag_width; linear_extrude(thickness, scale = [s, 1]) translate([-offsetX - half_frag_width, 0, 0]) intersection() { - translate([x, 0, 0]) - mirror([1, 0, 0]) + translate(transX) + mirror(mirrorX) children(); translate([offsetX, 0, 0]) - square([frag_width, y]); + square(sq_size); } } - offsetY = -r * cos(half_frag_angle) ; + offsetY = [0, -r * cos(half_frag_angle), 0]; + rotXn90 = [-90, 0, 0]; rotate(angle - 90) mirror([0, 1, 0]) mirror([0, 0, 1]) for(i = [0 : frags - 1]) { rotate(i * frag_angle + half_frag_angle) - translate([0, offsetY, 0]) - rotate([-90, 0, 0]) + translate(offsetY) + rotate(rotXn90) get_frag(i) children(); }