Index: pcblib/parametric/qf =================================================================== --- pcblib/parametric/qf (revision 746) +++ pcblib/parametric/qf (revision 747) @@ -5,7 +5,7 @@ #@@purpose Generate generic *qf* (e.g. tqfp, qfn) packages #@@desc Generate *qf* (e.g. tqfp, qfn) packages: smd pads around a square; this is the generic implementation, end users may want to use the specific ones, e.g. tqfp(), qfn(), etc. -#@@params nx,ny,x_spacing,y_spacing,pad_spacing,ext_bloat,int_bloat,width,height,cpad_width,cpad_height,cpad_auto,silkmark +#@@params nx,ny,x_spacing,y_spacing,pad_spacing,ext_bloat,int_bloat,width,height,cpad_width,cpad_height,cpad_auto,fullrect,silkmark #@@param:nx number of pins along the horizontal sides @@ -62,6 +62,11 @@ #@@optional:cpad_height #@@default:cpad_height false, no central pad +#@@param:fullrect when true, draw a fill silk rectangle, not only the corners +#@@bool:fullrect +#@@optional:fullrect +#@@default:fullrect false, only corners are drawn + #@@include silkmark.help #@@optional:silkmark #@@default:silkmark square @@ -70,5 +75,6 @@ #@@default:silkmark dot #@@include common.awk + awk -f `dirname $0`/common.awk -f `dirname $0`/qf.awk -v "args=$*" -v gen=`basename $0` Index: pcblib/parametric/qf.awk =================================================================== --- pcblib/parametric/qf.awk (revision 746) +++ pcblib/parametric/qf.awk (revision 747) @@ -25,7 +25,7 @@ if ((pre_args != "") && (!(pre_args ~ ",$"))) pre_args = pre_args "," - proc_args(P, pre_args "nx,ny,x_spacing,y_spacing,pad_spacing,ext_bloat,int_bloat,width,height,cpad_width,cpad_height,cpad_auto,silkmark" post_args, reqs) + proc_args(P, pre_args "nx,ny,x_spacing,y_spacing,pad_spacing,ext_bloat,int_bloat,width,height,cpad_width,cpad_height,cpad_auto,fullrect,silkmark" post_args, reqs) nx = int(P["nx"]) ny = int(P["ny"]) @@ -105,11 +105,14 @@ dimension(cpad_width/2, -cpad_height/2, cpad_width/2, +cpad_height/2, "@" (width * 0.8+ext_bloat) ";0", "cpad_height") } - wx = (width - nx * pad_spacing) / 3.5 - wy = (height - ny * pad_spacing) / 3.5 + if (!tobool(P["fullrect"])) { + wx = (width - nx * pad_spacing) / 3.5 + wy = (height - ny * pad_spacing) / 3.5 + element_rectangle_corners(-width/2, -height/2, width/2, height/2, wx, wy) + } + else + element_rectangle(-width/2, -height/2, width/2, height/2) - element_rectangle_corners(-width/2, -height/2, width/2, height/2, wx, wy) - dimension(-width/2, -height/2, +width/2, -height/2, "@0;" height*-0.8-ext_bloat, "width") dimension(+width/2, -height/2, +width/2, +height/2, "@" (width * 1+ext_bloat) ";0", "height")