Drag chain screw positions no longer mirrored to allow teardrop holes.

Previously the lugs were mirrored but that caused mirrored teardrops in mating parts.
This commit is contained in:
Chris Palmer 2020-12-05 11:33:53 +00:00
parent d5a711f4cc
commit 4b033d9945
1 changed files with 8 additions and 12 deletions

View File

@ -88,16 +88,11 @@ module drag_chain_screw_positions(type, end) { //! Place children at the screw p
R = os.z / 2;
x0 = end ? R + norm([drag_chain_cam_x(type), R - drag_chain_twall(type)]) + clearance + r : r;
x1 = end ? os.x - r : os.x - 2 * R - clearance - r;
for(i = [0 : 3]) {
x = i % 2;
y = bool2int(i > 1);
for(i = [0 : 3], x = [x0, x1, x0, x1][i], y = [-1, -1, 1, 1][i])
if(drag_chain_screw_lists(type)[bool2int(end)][i])
translate([(x0 + x1) / 2, 0])
mirror([x, 0])
mirror([0, y])
translate([(x1 - x0) / 2, s.y / 2 + r])
children();
}
translate([x, y * (s.y / 2 + r)])
let($a = [180, 0, 180, 0][i])
children();
}
function drag_chain_cam_x(type) = // how far the cam sticks out
@ -108,7 +103,6 @@ function drag_chain_cam_x(type) = // how far the cam sticks out
twall = drag_chain_twall(type)
) min(sqrt(max(sqr(cam_r) - sqr(r - twall), 0)), r);
module drag_chain_link(type, start = false, end = false, check_kids = true) { //! One link of the chain, special case for start and end
stl(str(drag_chain_name(type), "_drag_chain_link", start ? "_start" : end ? "_end" : ""));
@ -220,7 +214,8 @@ module drag_chain_link(type, start = false, end = false, check_kids = true) { //
if(start || end) {
drag_chain_screw_positions(type, end)
screw_lug(drag_chain_screw(type), os.z);
rotate($a)
screw_lug(drag_chain_screw(type), os.z);
if(check_kids) {
custom = drag_chain_screw_lists(type)[bool2int(end)] == [0, 0, 0, 0];
@ -232,7 +227,8 @@ module drag_chain_link(type, start = false, end = false, check_kids = true) { //
if(start || end)
translate_z(-eps)
drag_chain_screw_positions(type, end)
poly_cylinder(r = screw_clearance_radius(drag_chain_screw(type)), h = os.z + 2 * eps, center = false);
rotate($a)
poly_cylinder(r = screw_clearance_radius(drag_chain_screw(type)), h = os.z + 2 * eps, center = false);
}