Index: MPAK.scad =================================================================== --- MPAK.scad (revision 37526) +++ MPAK.scad (revision 37527) @@ -31,8 +31,55 @@ // in any way. // -module mpak() +module mpak(fillet=0) { + pad_len=1.1; + pad_width=0.45; + pad_height= 0.2; + + module fillet() { + 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 mpak_() { // pin prototype @@ -51,21 +98,54 @@ // 3 pins color([0.9, 0.9, 0.9]) { - translate([3.6,1.96,1.27-0.45/2]) + translate([3.6,2.0,1.27-0.45/2]) pin(2.6, 1.2, 0.45); - translate([3.6,1.96,2.54-0.45/2]) + translate([3.6,2.0,2.54-0.45/2]) pin(2.6, 1.2, 0.45); - translate([3.6,1.96,3.81-0.45/2]) + translate([3.6,2.0,3.81-0.45/2]) pin(2.6, 1.2, 0.45); - translate([3.6,1.96,5.08-0.45/2]) + translate([3.6,2.0,5.08-0.45/2]) pin(2.6, 1.2, 0.45); - translate([-3.6,1.96,3.17-3.18/2]) + translate([-3.6,2.0,3.17-3.18/2]) pin(-2.6, 1.2, 3.18); } } } + if (fillet) { + color([0.9, 0.9, 0.9]) { + fillet(); + translate([0,1.28,0]) + fillet(); + translate([0,2.56,0]) + fillet(); + translate([0,3.83,0]) + fillet(); + translate([-11.3,0.8,0]) + rotate([0,0,180]) + fillet(); + translate([-11.3,1.2,0]) + rotate([0,0,180]) + fillet(); + translate([-11.3,1.6,0]) + rotate([0,0,180]) + fillet(); + translate([-11.3,2.0,0]) + rotate([0,0,180]) + fillet(); + translate([-11.3,2.4,0]) + rotate([0,0,180]) + fillet(); + translate([-11.3,2.8,0]) + rotate([0,0,180]) + fillet(); + translate([-11.3,3.2,0]) + rotate([0,0,180]) + fillet(); + } + } + // match rotation with stock footprint's rotate([0,0,90]) mpak_(); Index: SC70_4.scad =================================================================== --- SC70_4.scad (revision 37526) +++ SC70_4.scad (revision 37527) @@ -31,8 +31,55 @@ // in any way. // -module sc70_4() +module sc70_4(fillet=0) { + pad_len=0.3; + pad_width=0.3; + pad_height= 0.2; + + module fillet() { + 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 sc70_4_() { // pin prototype @@ -63,7 +110,21 @@ } } } - + + if (fillet) { + color([0.9, 0.9, 0.9]) { + fillet(); + translate([0,1.4-0.3/2,0]) + fillet(); + translate([-2.03,0,0]) + rotate([0,0,180]) + fillet(); + translate([-2.03,1.45-0.3/2,0]) + rotate([0,0,180]) + fillet(); + } + } + // match rotation with stock footprint's rotate([0,0,90]) sc70_4_(); Index: SC90.scad =================================================================== --- SC90.scad (revision 37526) +++ SC90.scad (revision 37527) @@ -31,8 +31,55 @@ // in any way. // -module sc90() +module sc90(fillet=1) { + pad_len=0.2; + pad_width=0.24; + pad_height= 0.15; + + module fillet() { + 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 sc90_() { // pin prototype @@ -63,6 +110,18 @@ } } + if (fillet) { + color([0.9, 0.9, 0.9]) { + translate([0,-0.02,0]) + fillet(); + translate([0,1.13-0.3/2,0]) + fillet(); + translate([-1.41,0.63-0.3/2,0]) + rotate([0,0,180]) + fillet(); + } + } + // match rotation with stock footprint's rotate([0,0,90]) sc90_(); Index: SOT143.scad =================================================================== --- SOT143.scad (revision 37526) +++ SOT143.scad (revision 37527) @@ -32,8 +32,55 @@ // -module sot143() +module sot143(fillet=0) { + pad_len=0.35; + pad_width=0.4; + pad_height= 0.1; + + module fillet() { + 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 sot143_() { // pin prototype @@ -68,8 +115,24 @@ } } + if (fillet) { + color([0.9, 0.9, 0.9]) { + translate([0,0.02,0]) + fillet(); + translate([0,0.43,0]) + fillet(); + translate([0,1.81,0]) + fillet(); + translate([-2.03,0.02,0]) + rotate([0,0,180]) + fillet(); + translate([-2.03,1.81,0]) + rotate([0,0,180]) + fillet(); + } + } + // match rotation with stock footprint's rotate([0,0,90]) sot143_(); } - Index: SOT223.scad =================================================================== --- SOT223.scad (revision 37526) +++ SOT223.scad (revision 37527) @@ -32,8 +32,55 @@ // -module sot223() +module sot223(fillet=0) { + pad_len=0.7; + pad_width=0.6; + pad_height= 0.2; + + module fillet() { + 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 sot223_() { // pin prototype @@ -66,8 +113,32 @@ } } + if (fillet) { + color([0.9, 0.9, 0.9]) { + fillet(); + translate([0,2.3,0]) + fillet(); + translate([0,4.6,0]) + fillet(); + translate([-6.3,1.1,0]) + rotate([0,0,180]) + fillet(); + translate([-6.3,1.7,0]) + rotate([0,0,180]) + fillet(); + translate([-6.3,2.2,0]) + rotate([0,0,180]) + fillet(); + translate([-6.3,2.8,0]) + rotate([0,0,180]) + fillet(); + translate([-6.3,3.4,0]) + rotate([0,0,180]) + fillet(); + } + } + // match rotation with stock footprint's rotate([0,0,270]) sot223_(); } - Index: SOT23.scad =================================================================== --- SOT23.scad (revision 37526) +++ SOT23.scad (revision 37527) @@ -30,8 +30,55 @@ // in any way. // -module sot23() +module sot23(fillet=1) { + pad_len=0.23; + pad_width=0.43; + pad_height= 0.1; + + module fillet() { + 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 sot23_() { // pin prototype @@ -61,6 +108,18 @@ } } } + + if (fillet) { + color([0.9, 0.9, 0.9]) { + translate([0,0.02,0]) + fillet(); + translate([0,2.0,0]) + fillet(); + translate([-2.03,1.01,0]) + rotate([0,0,180]) + fillet(); + } + } // match rotation with stock footprint's rotate([0,0,90]) Index: SOT25.scad =================================================================== --- SOT25.scad (revision 37526) +++ SOT25.scad (revision 37527) @@ -31,8 +31,55 @@ // in any way. // -module sot25() +module sot25(fillet=0) { + pad_len=0.23; + pad_width=0.43; + pad_height= 0.1; + + module fillet() { + 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 sot25_() { // pin prototype @@ -70,9 +117,26 @@ } } + if (fillet) { + color([0.9, 0.9, 0.9]) { + translate([0,0.02,0]) + fillet(); + translate([0,2.0,0]) + fillet(); + translate([-2.03,0.02,0]) + rotate([0,0,180]) + fillet(); + translate([-2.03,1.01,0]) + rotate([0,0,180]) + fillet(); + translate([-2.03,2.0,0]) + rotate([0,0,180]) + fillet(); + } + } + translate([0,0.1,0]) // match rotation with stock footprint's rotate([0,0,90]) sot25_(); } - Index: SOT26.scad =================================================================== --- SOT26.scad (revision 37526) +++ SOT26.scad (revision 37527) @@ -31,8 +31,55 @@ // in any way. // -module sot26() +module sot26(fillet=0) { + pad_len=0.23; + pad_width=0.43; + pad_height= 0.1; + + module fillet() { + 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 sot26_() { // pin prototype @@ -72,6 +119,26 @@ } } } + + if (fillet) { + color([0.9, 0.9, 0.9]) { + translate([0,0.02,0]) + fillet(); + translate([0,1.01,0]) + fillet(); + translate([0,2.0,0]) + fillet(); + translate([-2.03,0.02,0]) + rotate([0,0,180]) + fillet(); + translate([-2.03,1.01,0]) + rotate([0,0,180]) + fillet(); + translate([-2.03,2.0,0]) + rotate([0,0,180]) + fillet(); + } + } translate([0,0.1,0]) // match rotation with stock footprint's @@ -78,4 +145,3 @@ rotate([0,0,90]) sot26_(); } -