You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
862 B
38 lines
862 B
|
|
//snapFitMale([100, 30, 30], 10); |
|
|
|
//snapFitMaleF([100, 30, 30], 10); |
|
|
|
|
|
module snapFitMale(wdh, edgeCutD) { |
|
eps = 0.001; |
|
d = wdh[1] + edgeCutD; |
|
a = atan(wdh[2] / d); |
|
|
|
translate([0, -edgeCutD,0]) { |
|
difference() { |
|
cube([wdh[0], d, wdh[2]]); |
|
|
|
translate([-eps, 0,0]) { |
|
rotate([a,0,0]) { |
|
cube([wdh[0]+eps*2, d*2, wdh[2]*2]); |
|
} |
|
} |
|
|
|
translate([-eps, 0, -eps]) { |
|
cube([wdh[0]+eps*2, edgeCutD, wdh[2] + eps]); |
|
} |
|
} // diff |
|
} // bring to 0,0,0 |
|
} |
|
|
|
module snapFitMaleF(wdh, edgeCutD) { |
|
translate([wdh[0], 0, wdh[2]]) |
|
rotate([0,180,0]) |
|
snapFitMale(wdh,edgeCutD); |
|
} |
|
|
|
module snapFitFemale(wdh, edgeCutD, pad = 0) { |
|
d = wdh[1] + edgeCutD; |
|
cube([wdh[0], d, wdh[2]+pad]); |
|
} |