Index: DO214.scad =================================================================== --- DO214.scad (revision 37541) +++ DO214.scad (revision 37542) @@ -30,8 +30,51 @@ // in any way. // -module part_do214 (var) +module part_do214 (var, fillet=0) { + module fillet(pad_len=Tl-L, pad_width=Tw, pad_height= H/4) { + fillet_height = pad_height/3; + fillet_width = pad_len/3; + overall_width = fillet_width + pad_width; + overall_length = pad_len + fillet_width; + + translate([-pad_len/2,0,0]) { + fillet_points = [ + [0,overall_width/2,0], // 0 + [overall_length,overall_width/2,0], // 1 + [overall_length,-overall_width/2,0], // 2 + [0,-overall_width/2,0], // 3 + [0,pad_width/2+fillet_width/2,fillet_height/3], // 4 + [pad_len+fillet_width/2,pad_width/2+fillet_width/2,fillet_height/3], // 5 + [pad_len+fillet_width/2,-pad_width/2-fillet_width/2,fillet_height/3], // 6 + [0,-pad_width/2-fillet_width/2,fillet_height/3], // 7 + [0,pad_width/2+fillet_width/6,2*fillet_height/3], // 8 + [pad_len+fillet_width/6,pad_width/2+fillet_width/6,2*fillet_height/3], // 9 + [pad_len+fillet_width/6,-pad_width/2-fillet_width/6,2*fillet_height/3], // 10 + [0,-pad_width/2-fillet_width/6,2*fillet_height/3], // 11 + [0,pad_width/2,fillet_height], // 12 + [pad_len,pad_width/2,fillet_height], // 13 + [pad_len,-pad_width/2,fillet_height], // 14 + [0,-pad_width/2,fillet_height]]; // 15 + + fillet_faces = [ + [0,4,8,12,15,11,7,3], // 0 + [0,1,5,4], // 1 + [1,2,6,5], // 2 + [7,6,2,3], // 3 + [4,5,9,8], // 4 + [5,6,10,9],// 5 + [10,6,7,11],// 6 + [8,9,13,12],// 7 + [9,10,14,13],// 8 + [15,14,10,11],// 9 + [12,13,14,15],// 10 + [3,2,1,0]];// 11 + + polyhedron(fillet_points, fillet_faces); + } + } + module impl (L, W, H, P, Tw, Th) { delta = 1e-3 ; @@ -87,6 +130,17 @@ translate ([L/2+P, 0, 0]) mirror ([1, 0, 0]) lead (P, Tw, Th) ; + + if (fillet) { + color ([0.8, 0.8, 0.8]) { + translate ([L/2+P/2, 0, 0]) + fillet(pad_len=P, pad_width=Tw, pad_height= H/4); + translate ([-L/2-P/2, 0, 0]) + rotate([0,0,180]) + fillet(pad_len=P, pad_width=Tw, pad_height= H/4); + } + } + } variants = [ "AA", "AB", "AC" ] ; @@ -101,3 +155,4 @@ impl (L[idx], W[idx], H[idx], (Tl[idx]-L[idx]) / 2, Tw[idx], H[idx]/2) ; } + Index: TANT.scad =================================================================== --- TANT.scad (revision 37541) +++ TANT.scad (revision 37542) @@ -30,8 +30,51 @@ // in any way. // -module part_tantalum (sz) +module part_tantalum (sz,fillet=0) { + module fillet(pad_len=P, pad_width=Tw, pad_height= H/2) { + fillet_height = pad_height/3; + fillet_width = pad_len/4; + overall_width = fillet_width + pad_width; + overall_length = pad_len + fillet_width; + + translate([-pad_len/2,0,0]) { + fillet_points = [ + [0,overall_width/2,0], // 0 + [overall_length,overall_width/2,0], // 1 + [overall_length,-overall_width/2,0], // 2 + [0,-overall_width/2,0], // 3 + [0,pad_width/2+fillet_width/2,fillet_height/3], // 4 + [pad_len+fillet_width/2,pad_width/2+fillet_width/2,fillet_height/3], // 5 + [pad_len+fillet_width/2,-pad_width/2-fillet_width/2,fillet_height/3], // 6 + [0,-pad_width/2-fillet_width/2,fillet_height/3], // 7 + [0,pad_width/2+fillet_width/6,2*fillet_height/3], // 8 + [pad_len+fillet_width/6,pad_width/2+fillet_width/6,2*fillet_height/3], // 9 + [pad_len+fillet_width/6,-pad_width/2-fillet_width/6,2*fillet_height/3], // 10 + [0,-pad_width/2-fillet_width/6,2*fillet_height/3], // 11 + [0,pad_width/2,fillet_height], // 12 + [pad_len,pad_width/2,fillet_height], // 13 + [pad_len,-pad_width/2,fillet_height], // 14 + [0,-pad_width/2,fillet_height]]; // 15 + + fillet_faces = [ + [0,4,8,12,15,11,7,3], // 0 + [0,1,5,4], // 1 + [1,2,6,5], // 2 + [7,6,2,3], // 3 + [4,5,9,8], // 4 + [5,6,10,9],// 5 + [10,6,7,11],// 6 + [8,9,13,12],// 7 + [9,10,14,13],// 8 + [15,14,10,11],// 9 + [12,13,14,15],// 10 + [3,2,1,0]];// 11 + + polyhedron(fillet_points, fillet_faces); + } + } + module impl (L, W, H, P, Tw, Th) { delta = 1e-3 ; @@ -80,6 +123,16 @@ translate ([L/2, 0, 0]) mirror ([1, 0, 0]) lead (P, Tw, Th) ; + + if (fillet) { + color ([0.8, 0.8, 0.8]) { + translate ([L/2-P/2, 0, 0]) + fillet(pad_len=P, pad_width=Tw, pad_height= H/2); + translate ([-L/2+P/2, 0, 0]) + rotate([0,0,180]) + fillet(pad_len=P, pad_width=Tw, pad_height= H/2); + } + } } sizes = "ABCDE" ; @@ -92,3 +145,4 @@ idx = search (sz, sizes)[0] ; impl (L[idx], W[idx], H[idx], P[idx], Tw[idx], H[idx]/2) ; } +