diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2017-12-01 13:38:35 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2017-12-01 13:38:35 +0100 |
commit | 992c05812ec18b51a2f3368bf4851111950352e7 (patch) | |
tree | 42f39b1389369b6a33e81737c202ed9384ff5f82 | |
parent | efa60d73f8912f518a89072653efbceeeac28385 (diff) | |
download | IPC-7351-footprints-generator-992c05812ec18b51a2f3368bf4851111950352e7.tar.gz IPC-7351-footprints-generator-992c05812ec18b51a2f3368bf4851111950352e7.tar.bz2 IPC-7351-footprints-generator-992c05812ec18b51a2f3368bf4851111950352e7.tar.xz IPC-7351-footprints-generator-992c05812ec18b51a2f3368bf4851111950352e7.zip |
o More structure. Moving all data from IPC-782 into its own file.
22 files changed, 472 insertions, 70 deletions
@@ -1 +1,2 @@ env +__pycache__ diff --git a/IPC-7351-CAPC/CAPC1005X15.kicad_mod b/IPC-7351-CAPC/CAPC1005X15.kicad_mod new file mode 100644 index 0000000..b23e7aa --- /dev/null +++ b/IPC-7351-CAPC/CAPC1005X15.kicad_mod @@ -0,0 +1,31 @@ +(module CAPC1005X15 (layer F.Cu) (tedit 5A2018AF) + (attr smd) + (fp_text reference REF** (at 0 -0.125) (layer F.Fab) + (effects (font (size 0.1 0.1) (thickness 0.015))) + ) + (fp_text value VAL** (at 0 0.125) (layer F.Fab) + (effects (font (size 0.1 0.1) (thickness 0.015))) + ) + + (fp_text user %R (at 0 -0.125) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + (fp_text user %V (at 0 0.125) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + + + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.05)) + (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.05)) + (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.05)) + (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.05)) + + + (fp_line (start -1.5 -0.5) (end 1.5 -0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.5 -0.5) (end 1.5 0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.5 0.5) (end -1.5 0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 0.5) (end -1.5 -0.5) (layer F.CrtYd) (width 0.05)) + + (pad 1 smd rect (at -0.65 0) (size 0.9 0.7) (layers F.Cu F.Paste F.Mask)) + (pad 2 smd rect (at 0.65 0) (size 0.9 0.7) (layers F.Cu F.Paste F.Mask)) +)
\ No newline at end of file diff --git a/IPC-7351-CAPC/CAPC1005X35.kicad_mod b/IPC-7351-CAPC/CAPC1005X35.kicad_mod new file mode 100644 index 0000000..f0f5462 --- /dev/null +++ b/IPC-7351-CAPC/CAPC1005X35.kicad_mod @@ -0,0 +1,31 @@ +(module CAPC1005X35 (layer F.Cu) (tedit 5A2018AF) + (attr smd) + (fp_text reference REF** (at 0 -0.125) (layer F.Fab) + (effects (font (size 0.1 0.1) (thickness 0.015))) + ) + (fp_text value VAL** (at 0 0.125) (layer F.Fab) + (effects (font (size 0.1 0.1) (thickness 0.015))) + ) + + (fp_text user %R (at 0 -0.125) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + (fp_text user %V (at 0 0.125) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + + + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.05)) + (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.05)) + (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.05)) + (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.05)) + + + (fp_line (start -1.5 -0.5) (end 1.5 -0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.5 -0.5) (end 1.5 0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.5 0.5) (end -1.5 0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 0.5) (end -1.5 -0.5) (layer F.CrtYd) (width 0.05)) + + (pad 1 smd rect (at -0.65 0) (size 0.9 0.7) (layers F.Cu F.Paste F.Mask)) + (pad 2 smd rect (at 0.65 0) (size 0.9 0.7) (layers F.Cu F.Paste F.Mask)) +)
\ No newline at end of file diff --git a/IPC-7351-CAPC/CAPC1005X37.kicad_mod b/IPC-7351-CAPC/CAPC1005X37.kicad_mod new file mode 100644 index 0000000..158cae0 --- /dev/null +++ b/IPC-7351-CAPC/CAPC1005X37.kicad_mod @@ -0,0 +1,31 @@ +(module CAPC1005X37 (layer F.Cu) (tedit 5A2018AF) + (attr smd) + (fp_text reference REF** (at 0 -0.125) (layer F.Fab) + (effects (font (size 0.1 0.1) (thickness 0.015))) + ) + (fp_text value VAL** (at 0 0.125) (layer F.Fab) + (effects (font (size 0.1 0.1) (thickness 0.015))) + ) + + (fp_text user %R (at 0 -0.125) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + (fp_text user %V (at 0 0.125) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + + + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.05)) + (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.05)) + (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.05)) + (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.05)) + + + (fp_line (start -1.5 -0.5) (end 1.5 -0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.5 -0.5) (end 1.5 0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.5 0.5) (end -1.5 0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 0.5) (end -1.5 -0.5) (layer F.CrtYd) (width 0.05)) + + (pad 1 smd rect (at -0.65 0) (size 0.9 0.7) (layers F.Cu F.Paste F.Mask)) + (pad 2 smd rect (at 0.65 0) (size 0.9 0.7) (layers F.Cu F.Paste F.Mask)) +)
\ No newline at end of file diff --git a/IPC-7351-CAPC/CAPC1005X40.kicad_mod b/IPC-7351-CAPC/CAPC1005X40.kicad_mod new file mode 100644 index 0000000..b67c31b --- /dev/null +++ b/IPC-7351-CAPC/CAPC1005X40.kicad_mod @@ -0,0 +1,31 @@ +(module CAPC1005X40 (layer F.Cu) (tedit 5A2018AF) + (attr smd) + (fp_text reference REF** (at 0 -0.125) (layer F.Fab) + (effects (font (size 0.1 0.1) (thickness 0.015))) + ) + (fp_text value VAL** (at 0 0.125) (layer F.Fab) + (effects (font (size 0.1 0.1) (thickness 0.015))) + ) + + (fp_text user %R (at 0 -0.125) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + (fp_text user %V (at 0 0.125) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + + + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.05)) + (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.05)) + (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.05)) + (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.05)) + + + (fp_line (start -1.5 -0.5) (end 1.5 -0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.5 -0.5) (end 1.5 0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.5 0.5) (end -1.5 0.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 0.5) (end -1.5 -0.5) (layer F.CrtYd) (width 0.05)) + + (pad 1 smd rect (at -0.65 0) (size 0.9 0.7) (layers F.Cu F.Paste F.Mask)) + (pad 2 smd rect (at 0.65 0) (size 0.9 0.7) (layers F.Cu F.Paste F.Mask)) +)
\ No newline at end of file diff --git a/IPC-7351-CAPC/CAPC1608X40.kicad_mod b/IPC-7351-CAPC/CAPC1608X40.kicad_mod new file mode 100644 index 0000000..85a46bf --- /dev/null +++ b/IPC-7351-CAPC/CAPC1608X40.kicad_mod @@ -0,0 +1,31 @@ +(module CAPC1608X40 (layer F.Cu) (tedit 5A2018AF) + (attr smd) + (fp_text reference REF** (at 0 -0.2) (layer F.Fab) + (effects (font (size 0.16 0.16) (thickness 0.024))) + ) + (fp_text value VAL** (at 0 0.2) (layer F.Fab) + (effects (font (size 0.16 0.16) (thickness 0.024))) + ) + + (fp_text user %R (at 0 -0.2) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + (fp_text user %V (at 0 0.2) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + + + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer F.Fab) (width 0.05)) + (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer F.Fab) (width 0.05)) + (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer F.Fab) (width 0.05)) + (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer F.Fab) (width 0.05)) + + + (fp_line (start -1.5 -1.0) (end 1.5 -1.0) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.5 -1.0) (end 1.5 1.0) (layer F.CrtYd) (width 0.05)) + (fp_line (start 1.5 1.0) (end -1.5 1.0) (layer F.CrtYd) (width 0.05)) + (fp_line (start -1.5 1.0) (end -1.5 -1.0) (layer F.CrtYd) (width 0.05)) + + (pad 1 smd rect (at -0.85 0) (size 1.1 1.0) (layers F.Cu F.Paste F.Mask)) + (pad 2 smd rect (at 0.85 0) (size 1.1 1.0) (layers F.Cu F.Paste F.Mask)) +)
\ No newline at end of file diff --git a/IPC-7351-CAPC/CAPC2012X40.kicad_mod b/IPC-7351-CAPC/CAPC2012X40.kicad_mod new file mode 100644 index 0000000..5406fa6 --- /dev/null +++ b/IPC-7351-CAPC/CAPC2012X40.kicad_mod @@ -0,0 +1,31 @@ +(module CAPC2012X40 (layer F.Cu) (tedit 5A2018AF) + (attr smd) + (fp_text reference REF** (at 0 -0.3) (layer F.Fab) + (effects (font (size 0.24 0.24) (thickness 0.036))) + ) + (fp_text value VAL** (at 0 0.3) (layer F.Fab) + (effects (font (size 0.24 0.24) (thickness 0.036))) + ) + + (fp_text user %R (at 0 -0.3) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + (fp_text user %V (at 0 0.3) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + + + (fp_line (start -1.0 -0.6) (end 1.0 -0.6) (layer F.Fab) (width 0.05)) + (fp_line (start 1.0 -0.6) (end 1.0 0.6) (layer F.Fab) (width 0.05)) + (fp_line (start 1.0 0.6) (end -1.0 0.6) (layer F.Fab) (width 0.05)) + (fp_line (start -1.0 0.6) (end -1.0 -0.6) (layer F.Fab) (width 0.05)) + + + (fp_line (start -2.0 -1.0) (end 2.0 -1.0) (layer F.CrtYd) (width 0.05)) + (fp_line (start 2.0 -1.0) (end 2.0 1.0) (layer F.CrtYd) (width 0.05)) + (fp_line (start 2.0 1.0) (end -2.0 1.0) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.0 1.0) (end -2.0 -1.0) (layer F.CrtYd) (width 0.05)) + + (pad 1 smd rect (at -0.95 0) (size 1.3 1.5) (layers F.Cu F.Paste F.Mask)) + (pad 2 smd rect (at 0.95 0) (size 1.3 1.5) (layers F.Cu F.Paste F.Mask)) +)
\ No newline at end of file diff --git a/IPC-7351-CAPC/CAPC3216X40.kicad_mod b/IPC-7351-CAPC/CAPC3216X40.kicad_mod new file mode 100644 index 0000000..767e3e0 --- /dev/null +++ b/IPC-7351-CAPC/CAPC3216X40.kicad_mod @@ -0,0 +1,31 @@ +(module CAPC3216X40 (layer F.Cu) (tedit 5A2018AF) + (attr smd) + (fp_text reference REF** (at 0 -0.4) (layer F.Fab) + (effects (font (size 0.32 0.32) (thickness 0.048))) + ) + (fp_text value VAL** (at 0 0.4) (layer F.Fab) + (effects (font (size 0.32 0.32) (thickness 0.048))) + ) + + (fp_text user %R (at 0 -0.4) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + (fp_text user %V (at 0 0.4) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + + + (fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer F.Fab) (width 0.05)) + (fp_line (start 1.6 -0.8) (end 1.6 0.8) (layer F.Fab) (width 0.05)) + (fp_line (start 1.6 0.8) (end -1.6 0.8) (layer F.Fab) (width 0.05)) + (fp_line (start -1.6 0.8) (end -1.6 -0.8) (layer F.Fab) (width 0.05)) + + + (fp_line (start -2.5 -1.0) (end 2.5 -1.0) (layer F.CrtYd) (width 0.05)) + (fp_line (start 2.5 -1.0) (end 2.5 1.0) (layer F.CrtYd) (width 0.05)) + (fp_line (start 2.5 1.0) (end -2.5 1.0) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.5 1.0) (end -2.5 -1.0) (layer F.CrtYd) (width 0.05)) + + (pad 1 smd rect (at -1.4 0) (size 1.6 1.8) (layers F.Cu F.Paste F.Mask)) + (pad 2 smd rect (at 1.4 0) (size 1.6 1.8) (layers F.Cu F.Paste F.Mask)) +)
\ No newline at end of file diff --git a/IPC-7351-CAPC/CAPC3225X40.kicad_mod b/IPC-7351-CAPC/CAPC3225X40.kicad_mod new file mode 100644 index 0000000..a636777 --- /dev/null +++ b/IPC-7351-CAPC/CAPC3225X40.kicad_mod @@ -0,0 +1,31 @@ +(module CAPC3225X40 (layer F.Cu) (tedit 5A2018AF) + (attr smd) + (fp_text reference REF** (at 0 -0.625) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.075))) + ) + (fp_text value VAL** (at 0 0.625) (layer F.Fab) + (effects (font (size 0.5 0.5) (thickness 0.075))) + ) + + (fp_text user %R (at 0 -0.625) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + (fp_text user %V (at 0 0.625) (layer "F.SilkS") + (effects (font (size 0.7 0.7) (thickness 0.1))) + ) + + + (fp_line (start -1.6 -1.25) (end 1.6 -1.25) (layer F.Fab) (width 0.05)) + (fp_line (start 1.6 -1.25) (end 1.6 1.25) (layer F.Fab) (width 0.05)) + (fp_line (start 1.6 1.25) (end -1.6 1.25) (layer F.Fab) (width 0.05)) + (fp_line (start -1.6 1.25) (end -1.6 -1.25) (layer F.Fab) (width 0.05)) + + + (fp_line (start -2.5 -1.5) (end 2.5 -1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 2.5 -1.5) (end 2.5 1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start 2.5 1.5) (end -2.5 1.5) (layer F.CrtYd) (width 0.05)) + (fp_line (start -2.5 1.5) (end -2.5 -1.5) (layer F.CrtYd) (width 0.05)) + + (pad 1 smd rect (at -1.4 0) (size 1.6 2.7) (layers F.Cu F.Paste F.Mask)) + (pad 2 smd rect (at 1.4 0) (size 1.6 2.7) (layers F.Cu F.Paste F.Mask)) +)
\ No newline at end of file diff --git a/RESC1005X15.kicad_mod b/IPC-7351-RESC/RESC1005X15.kicad_mod index 1df9060..6b3ef70 100644 --- a/RESC1005X15.kicad_mod +++ b/IPC-7351-RESC/RESC1005X15.kicad_mod @@ -14,13 +14,13 @@ (effects (font (size 0.7 0.7) (thickness 0.1))) ) - + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.05)) (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.05)) (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.05)) (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.05)) - + (fp_line (start -1.5 -0.5) (end 1.5 -0.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.5 -0.5) (end 1.5 0.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.5 0.5) (end -1.5 0.5) (layer F.CrtYd) (width 0.05)) diff --git a/RESC1005X35.kicad_mod b/IPC-7351-RESC/RESC1005X35.kicad_mod index 9f7f408..a70d407 100644 --- a/RESC1005X35.kicad_mod +++ b/IPC-7351-RESC/RESC1005X35.kicad_mod @@ -14,13 +14,13 @@ (effects (font (size 0.7 0.7) (thickness 0.1))) ) - + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.05)) (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.05)) (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.05)) (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.05)) - + (fp_line (start -1.5 -0.5) (end 1.5 -0.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.5 -0.5) (end 1.5 0.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.5 0.5) (end -1.5 0.5) (layer F.CrtYd) (width 0.05)) diff --git a/RESC1005X37.kicad_mod b/IPC-7351-RESC/RESC1005X37.kicad_mod index ecdeec8..be0b6af 100644 --- a/RESC1005X37.kicad_mod +++ b/IPC-7351-RESC/RESC1005X37.kicad_mod @@ -14,13 +14,13 @@ (effects (font (size 0.7 0.7) (thickness 0.1))) ) - + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.05)) (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.05)) (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.05)) (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.05)) - + (fp_line (start -1.5 -0.5) (end 1.5 -0.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.5 -0.5) (end 1.5 0.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.5 0.5) (end -1.5 0.5) (layer F.CrtYd) (width 0.05)) diff --git a/RESC1005X40.kicad_mod b/IPC-7351-RESC/RESC1005X40.kicad_mod index d24ab93..cb86eaf 100644 --- a/RESC1005X40.kicad_mod +++ b/IPC-7351-RESC/RESC1005X40.kicad_mod @@ -14,13 +14,13 @@ (effects (font (size 0.7 0.7) (thickness 0.1))) ) - + (fp_line (start -0.5 -0.25) (end 0.5 -0.25) (layer F.Fab) (width 0.05)) (fp_line (start 0.5 -0.25) (end 0.5 0.25) (layer F.Fab) (width 0.05)) (fp_line (start 0.5 0.25) (end -0.5 0.25) (layer F.Fab) (width 0.05)) (fp_line (start -0.5 0.25) (end -0.5 -0.25) (layer F.Fab) (width 0.05)) - + (fp_line (start -1.5 -0.5) (end 1.5 -0.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.5 -0.5) (end 1.5 0.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.5 0.5) (end -1.5 0.5) (layer F.CrtYd) (width 0.05)) diff --git a/RESC1608X40.kicad_mod b/IPC-7351-RESC/RESC1608X40.kicad_mod index 50fd742..1a10e32 100644 --- a/RESC1608X40.kicad_mod +++ b/IPC-7351-RESC/RESC1608X40.kicad_mod @@ -1,10 +1,10 @@ (module RESC1608X40 (layer F.Cu) (tedit 5A2018AF) (attr smd) (fp_text reference REF** (at 0 -0.2) (layer F.Fab) - (effects (font (size 0.16000000000000003 0.16000000000000003) (thickness 0.024))) + (effects (font (size 0.16 0.16) (thickness 0.024))) ) (fp_text value VAL** (at 0 0.2) (layer F.Fab) - (effects (font (size 0.16000000000000003 0.16000000000000003) (thickness 0.024))) + (effects (font (size 0.16 0.16) (thickness 0.024))) ) (fp_text user %R (at 0 -0.2) (layer "F.SilkS") @@ -14,13 +14,13 @@ (effects (font (size 0.7 0.7) (thickness 0.1))) ) - + (fp_line (start -0.8 -0.4) (end 0.8 -0.4) (layer F.Fab) (width 0.05)) (fp_line (start 0.8 -0.4) (end 0.8 0.4) (layer F.Fab) (width 0.05)) (fp_line (start 0.8 0.4) (end -0.8 0.4) (layer F.Fab) (width 0.05)) (fp_line (start -0.8 0.4) (end -0.8 -0.4) (layer F.Fab) (width 0.05)) - + (fp_line (start -1.5 -1.0) (end 1.5 -1.0) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.5 -1.0) (end 1.5 1.0) (layer F.CrtYd) (width 0.05)) (fp_line (start 1.5 1.0) (end -1.5 1.0) (layer F.CrtYd) (width 0.05)) diff --git a/RESC2012X40.kicad_mod b/IPC-7351-RESC/RESC2012X40.kicad_mod index 874699a..926d468 100644 --- a/RESC2012X40.kicad_mod +++ b/IPC-7351-RESC/RESC2012X40.kicad_mod @@ -1,26 +1,26 @@ (module RESC2012X40 (layer F.Cu) (tedit 5A2018AF) (attr smd) - (fp_text reference REF** (at 0 -0.30000000000000004) (layer F.Fab) + (fp_text reference REF** (at 0 -0.3) (layer F.Fab) (effects (font (size 0.24 0.24) (thickness 0.036))) ) - (fp_text value VAL** (at 0 0.30000000000000004) (layer F.Fab) + (fp_text value VAL** (at 0 0.3) (layer F.Fab) (effects (font (size 0.24 0.24) (thickness 0.036))) ) - (fp_text user %R (at 0 -0.30000000000000004) (layer "F.SilkS") + (fp_text user %R (at 0 -0.3) (layer "F.SilkS") (effects (font (size 0.7 0.7) (thickness 0.1))) ) - (fp_text user %V (at 0 0.30000000000000004) (layer "F.SilkS") + (fp_text user %V (at 0 0.3) (layer "F.SilkS") (effects (font (size 0.7 0.7) (thickness 0.1))) ) - + (fp_line (start -1.0 -0.6) (end 1.0 -0.6) (layer F.Fab) (width 0.05)) (fp_line (start 1.0 -0.6) (end 1.0 0.6) (layer F.Fab) (width 0.05)) (fp_line (start 1.0 0.6) (end -1.0 0.6) (layer F.Fab) (width 0.05)) (fp_line (start -1.0 0.6) (end -1.0 -0.6) (layer F.Fab) (width 0.05)) - + (fp_line (start -2.0 -1.0) (end 2.0 -1.0) (layer F.CrtYd) (width 0.05)) (fp_line (start 2.0 -1.0) (end 2.0 1.0) (layer F.CrtYd) (width 0.05)) (fp_line (start 2.0 1.0) (end -2.0 1.0) (layer F.CrtYd) (width 0.05)) diff --git a/RESC3216X40.kicad_mod b/IPC-7351-RESC/RESC3216X40.kicad_mod index 0b74dd3..5250c95 100644 --- a/RESC3216X40.kicad_mod +++ b/IPC-7351-RESC/RESC3216X40.kicad_mod @@ -1,10 +1,10 @@ (module RESC3216X40 (layer F.Cu) (tedit 5A2018AF) (attr smd) (fp_text reference REF** (at 0 -0.4) (layer F.Fab) - (effects (font (size 0.32000000000000006 0.32000000000000006) (thickness 0.048))) + (effects (font (size 0.32 0.32) (thickness 0.048))) ) (fp_text value VAL** (at 0 0.4) (layer F.Fab) - (effects (font (size 0.32000000000000006 0.32000000000000006) (thickness 0.048))) + (effects (font (size 0.32 0.32) (thickness 0.048))) ) (fp_text user %R (at 0 -0.4) (layer "F.SilkS") @@ -14,13 +14,13 @@ (effects (font (size 0.7 0.7) (thickness 0.1))) ) - + (fp_line (start -1.6 -0.8) (end 1.6 -0.8) (layer F.Fab) (width 0.05)) (fp_line (start 1.6 -0.8) (end 1.6 0.8) (layer F.Fab) (width 0.05)) (fp_line (start 1.6 0.8) (end -1.6 0.8) (layer F.Fab) (width 0.05)) (fp_line (start -1.6 0.8) (end -1.6 -0.8) (layer F.Fab) (width 0.05)) - + (fp_line (start -2.5 -1.0) (end 2.5 -1.0) (layer F.CrtYd) (width 0.05)) (fp_line (start 2.5 -1.0) (end 2.5 1.0) (layer F.CrtYd) (width 0.05)) (fp_line (start 2.5 1.0) (end -2.5 1.0) (layer F.CrtYd) (width 0.05)) diff --git a/RESC3225X40.kicad_mod b/IPC-7351-RESC/RESC3225X40.kicad_mod index 56b08a0..a6a7973 100644 --- a/RESC3225X40.kicad_mod +++ b/IPC-7351-RESC/RESC3225X40.kicad_mod @@ -14,13 +14,13 @@ (effects (font (size 0.7 0.7) (thickness 0.1))) ) - + (fp_line (start -1.6 -1.25) (end 1.6 -1.25) (layer F.Fab) (width 0.05)) (fp_line (start 1.6 -1.25) (end 1.6 1.25) (layer F.Fab) (width 0.05)) (fp_line (start 1.6 1.25) (end -1.6 1.25) (layer F.Fab) (width 0.05)) (fp_line (start -1.6 1.25) (end -1.6 -1.25) (layer F.Fab) (width 0.05)) - + (fp_line (start -2.5 -1.5) (end 2.5 -1.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 2.5 -1.5) (end 2.5 1.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 2.5 1.5) (end -2.5 1.5) (layer F.CrtYd) (width 0.05)) diff --git a/RESC5025X40.kicad_mod b/IPC-7351-RESC/RESC5025X40.kicad_mod index 56e45a0..008ef30 100644 --- a/RESC5025X40.kicad_mod +++ b/IPC-7351-RESC/RESC5025X40.kicad_mod @@ -14,13 +14,13 @@ (effects (font (size 0.7 0.7) (thickness 0.1))) ) - + (fp_line (start -2.5 -1.25) (end 2.5 -1.25) (layer F.Fab) (width 0.05)) (fp_line (start 2.5 -1.25) (end 2.5 1.25) (layer F.Fab) (width 0.05)) (fp_line (start 2.5 1.25) (end -2.5 1.25) (layer F.Fab) (width 0.05)) (fp_line (start -2.5 1.25) (end -2.5 -1.25) (layer F.Fab) (width 0.05)) - + (fp_line (start -3.5 -1.5) (end 3.5 -1.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 3.5 -1.5) (end 3.5 1.5) (layer F.CrtYd) (width 0.05)) (fp_line (start 3.5 1.5) (end -3.5 1.5) (layer F.CrtYd) (width 0.05)) diff --git a/RESC6332X40.kicad_mod b/IPC-7351-RESC/RESC6332X40.kicad_mod index 079df58..af29e6f 100644 --- a/RESC6332X40.kicad_mod +++ b/IPC-7351-RESC/RESC6332X40.kicad_mod @@ -1,10 +1,10 @@ (module RESC6332X40 (layer F.Cu) (tedit 5A2018AF) (attr smd) (fp_text reference REF** (at 0 -0.8) (layer F.Fab) - (effects (font (size 0.6400000000000001 0.6400000000000001) (thickness 0.096))) + (effects (font (size 0.64 0.64) (thickness 0.096))) ) (fp_text value VAL** (at 0 0.8) (layer F.Fab) - (effects (font (size 0.6400000000000001 0.6400000000000001) (thickness 0.096))) + (effects (font (size 0.64 0.64) (thickness 0.096))) ) (fp_text user %R (at 0 -0.8) (layer "F.SilkS") @@ -14,13 +14,13 @@ (effects (font (size 0.7 0.7) (thickness 0.1))) ) - + (fp_line (start -3.15 -1.6) (end 3.15 -1.6) (layer F.Fab) (width 0.05)) (fp_line (start 3.15 -1.6) (end 3.15 1.6) (layer F.Fab) (width 0.05)) (fp_line (start 3.15 1.6) (end -3.15 1.6) (layer F.Fab) (width 0.05)) (fp_line (start -3.15 1.6) (end -3.15 -1.6) (layer F.Fab) (width 0.05)) - + (fp_line (start -4.0 -2.0) (end 4.0 -2.0) (layer F.CrtYd) (width 0.05)) (fp_line (start 4.0 -2.0) (end 4.0 2.0) (layer F.CrtYd) (width 0.05)) (fp_line (start 4.0 2.0) (end -4.0 2.0) (layer F.CrtYd) (width 0.05)) @@ -1,35 +1,123 @@ #!/usr/bin/env python from jinja2 import Environment, FileSystemLoader, select_autoescape -import os.path +import os, os.path +import re +import ipc_sm_782 basedir=os.path.dirname(__file__) env = Environment( - loader=FileSystemLoader(os.path.join(basedir, 'templates')) + loader=FileSystemLoader(os.path.join(basedir, 'templates')), + lstrip_blocks=True, ) +env.globals["rnd2"] = lambda x: round(x, 2) chip = env.get_template('CHIP.j2') -resc_parameters = [ - # size x, size y, pad x, pad y, pad center-center, grid x, grid y, terminal x, heights - (10, 5, 0.90, 0.70, 1.30, 6, 2, (0.10, 0.30), [15, 35, 37, 40]), - (16, 8, 1.10, 1.00, 1.70, 6, 4, (0.15, 0.40), [40]), - (20, 12, 1.30, 1.50, 1.90, 8, 4, (0.15, 0.65), [40]), - (32, 16, 1.60, 1.80, 2.80, 10, 4, (0.25, 0.75), [40]), - (32, 25, 1.60, 2.70, 2.80, 10, 6, (0.25, 0.75), [40]), - (50, 25, 1.80, 2.70, 4.40, 14, 6, (0.35, 0.85), [40]), - (63, 32, 1.80, 3.20, 5.60, 16, 8, (0.35, 0.85), [40]), -] - -for (sx, sy, px, py, pcc, gx, gy, tx, heights) in resc_parameters: - tx = (tx[0] + tx[1]) / 2 - print("RESC{:02}{:02}".format(sx, sy)) - gx = gx*0.5 - gy = gy*0.5 - for h in heights: - key = "RESC{:02}{:02}X{:02}".format(sx, sy, h) - print(" " + key) - kicad_mod = chip.render({"key": key, "sx": sx, "sy": sy, "px": px, "py": py, "pcc": pcc, "gx": gx, "gy": gy, "h": h}) - with open("{}.kicad_mod".format(key), "w") as f: - f.write(kicad_mod) +resc_heights = { + "1005": [15, 35, 37, 40], + "1608": [40], + "2012": [40], + "3216": [40], + "3225": [40], + "5025": [40], + "6332": [40], +} + +capc_heights = { + "1005": [15, 35, 37, 40], + "1608": [40], + "2012": [40], + "3216": [40], + "3225": [40], + "5025": [40], + "6332": [40], +} + +def auto_str(cls): + def __str__(self): + return '%s(%s)' % ( + type(self).__name__, + ', '.join('%s=%s' % item for item in vars(self).items()) + ) + cls.__str__ = __str__ + return cls + + +class Value(object): + def __init__(self, typ, mn, mx): + self.typ = typ if typ else (mn + mx) / 2 + self.mn = mn + self.mx = mx + + def __str__(self): + return "(typ={:0.2f}, min={:0.2f}, max={:0.2f})".format(self.typ, self.mn, self.mx) + + +grid_re = re.compile("([0-9]+)x([0-9]+)") + +def parse_courtyard(grid): + (grid_y, grid_x) = grid_re.match(grid).groups() + return (float(grid_x) * 0.5 / 2, float(grid_y) * 0.5 / 2) + + +@auto_str +class ChipDimensions(object): + def __init__(self, **kw): + for k, v in kw.items(): + setattr(self, k, v) + + @staticmethod + def from_ipc(data): + print("data={}".format(data)) + size_mm = data["size_mm"] +# print("x={}".format(grid_re.match(data["grid"]).groups())) + return ChipLandPattern( + key = size_mm, + size_x = Value(float(size_mm[0:2]) / 10, data["l_max"], data["l_min"]), + size_y = Value(float(size_mm[2:4]) / 10, data["w_max"], data["w_min"]), + terminal_size = Value(None, data["t_min"], data["t_max"]), + height_max = data["h_max"]) + +@auto_str +class ChipLandPattern(object): + def __init__(self, **kw): + for k, v in kw.items(): + setattr(self, k, v) + + @staticmethod + def from_ipc(data): +# print("data={}".format(data)) + size_mm = data["size_mm"] + (courtyard_x, courtyard_y) = parse_courtyard(data["grid"]) + r = lambda x: round(x) + return ChipLandPattern( + key = size_mm, + size_x = float(size_mm[0:2]) / 10, + size_y = float(size_mm[2:4]) / 10, + pad_pos_x = float(data["c"]) / 2, + pad_size_x = float(data["y"]), + pad_size_y = float(data["x"]), + courtyard_x = courtyard_x, courtyard_y = courtyard_y) + +#resc_dims = [ChipDimensions.from_ipc(p) for p in ipc_sm_782.data["resc"]["dimensions"]] +resc_lp = [ChipLandPattern.from_ipc(p) for p in ipc_sm_782.data["resc"]["land_patterns"]] +#capc_dims = [ChipDimensions.from_ipc(p) for p in ipc_sm_782.data["capc"]["dimensions"]] + +capc_lp = [ChipLandPattern.from_ipc(p) for p in ipc_sm_782.data["capc"]["land_patterns"]] + +for kind, lps in {"RESC": resc_lp, "CAPC": capc_lp}.items(): + basedir = "IPC-7351-{}".format(kind) + if not os.path.isdir(basedir): + os.mkdir(basedir) + for lp in lps: + print("{}{}".format(kind, lp.key)) + print("lp={}".format(lp)) + print("lp={}".format(lp.size_x / 8)) + for h in resc_heights.get(lp.key, []): + key = "{}{}X{:02}".format(kind, lp.key, h) + print(" " + key) + kicad_mod = chip.render({"lp": lp, "key": key, "h": h}) + with open(os.path.join(basedir, "{}.kicad_mod".format(key)), "w") as f: + f.write(kicad_mod) diff --git a/ipc_sm_782.py b/ipc_sm_782.py new file mode 100644 index 0000000..bf07764 --- /dev/null +++ b/ipc_sm_782.py @@ -0,0 +1,65 @@ +def make_dicts(header, *rows): + return [{k: v for k, v in zip(header, row)} for row in rows] + +resc_dimensions = make_dicts(["size_mm", "size_in", "l_min", "l_max", "s_min", "s_max", "w_min", "w_max", "t_min", "t_max", "h_max"], +# Component +# Identifier L S W T H +# (mm) [in] min max min max min max min max max + ("1005", "0402", 1.00, 1.10, 0.40, 0.70, 0.48, 0.60, 0.10, 0.30, 0.40), + ("1608", "0603", 1.50, 1.70, 0.70, 1.11, 0.70, 0.95, 0.15, 0.40, 0.60), + ("2012", "0805", 1.85, 2.15, 0.55, 1.32, 1.10, 1.40, 0.15, 0.65, 0.65), + ("3216", "1206", 3.05, 3.35, 1.55, 2.32, 1.45, 1.75, 0.25, 0.75, 0.71), + ("3225", "1210", 3.05, 3.35, 1.55, 2.32, 2.34, 2.64, 0.25, 0.75, 0.71), + ("5025", "2010", 4.85, 5.15, 3.15, 3.92, 2.35, 2.65, 0.35, 0.85, 0.71), + ("6332", "2512", 6.15, 6.45, 4.45, 5.22, 3.05, 3.35, 0.35, 0.85, 0.71), +) + +resc_land_patterns = make_dicts(["rlp_no", "size_mm", "size_in", "z", "g", "x", "y", "c", "grid"], +# Component Identifier Y C Placement Grid +# RLP No. (mm) [in] Z G X ref ref (No. of Grid elements) + ("100A", "1005", "0402", 2.20, 0.40, 0.70, 0.90, 1.30, "2x6"), + ("101A", "1608", "0603", 2.80, 0.60, 1.00, 1.10, 1.70, "4x6"), + ("102A", "2012", "0805", 3.20, 0.60, 1.50, 1.30, 1.90, "4x8"), + ("103A", "3216", "1206", 4.40, 1.20, 1.80, 1.60, 2.80, "4x10"), + ("104A", "3225", "1210", 4.40, 1.20, 2.70, 1.60, 2.80, "6x10"), + ("105A", "5025", "2010", 6.20, 2.60, 2.70, 1.80, 4.40, "6x14"), + ("106A", "6332", "2512", 7.40, 3.80, 3.20, 1.80, 5.60, "8x16"), +) + +capc_dimensions = make_dicts(["size_mm", "size_in", "l_min", "l_max", "s_min", "s_max", "w_min", "w_max", "t_min", "t_max", "h_max"], +# Component +# Identifier L S W T H +# (mm) [in] min max min max min max min max max + ("1005", "0402", 0.90, 1.10, 0.30, 0.65, 0.40, 0.60, 0.10, 0.30, 0.60), + ("1310", "0504", 1.02, 1.32, 0.26, 0.72, 0.77, 1.27, 0.13, 0.38, 1.02), + ("1608", "0603", 1.45, 1.75, 0.45, 0.97, 0.65, 0.95, 0.20, 0.50, 0.85), + ("2012", "0805", 1.80, 2.20, 0.30, 1.11, 1.05, 1.45, 0.25, 0.75, 1.10), + ("3216", "1206", 3.00, 3.40, 1.50, 2.31, 1.40, 1.80, 0.25, 0.75, 1.35), + ("3225", "1210", 3.00, 3.40, 1.50, 2.31, 2.30, 2.70, 0.25, 0.75, 1.35), + ("4532", "1812", 4.20, 4.80, 2.30, 3.46, 3.00, 3.40, 0.25, 0.95, 1.35), + ("4564", "1825", 4.20, 4.80, 2.30, 3.46, 6.00, 6.80, 0.25, 0.95, 1.10), +) + +capc_land_patterns = make_dicts(["rlp_no", "size_mm", "size_in", "z", "g", "x", "y", "c", "grid"], +# Component Identifier Y C Placement Grid +# RLP No. (mm) [in] Z G X ref ref (No. of Grid elements) + ("130A", "1005", "0402", 2.20, 0.40, 0.70, 0.90, 1.30, "2x6"), + ("131A", "1310", "0504", 2.40, 0.40, 1.30, 1.00, 1.40, "4x6"), + ("132A", "1608", "0603", 2.80, 0.60, 1.00, 1.10, 1.70, "4x6"), + ("133A", "2012", "0805", 3.20, 0.60, 1.50, 1.30, 1.90, "4x8"), + ("134A", "3216", "1206", 4.40, 1.20, 1.80, 1.60, 2.80, "4x10"), + ("135A", "3225", "1210", 4.40, 1.20, 2.70, 1.60, 2.80, "6x10"), + ("136A", "4532", "1812", 5.80, 2.00, 3.40, 1.90, 3.90, "8x12"), + ("137A", "4564", "1825", 5.80, 2.00, 6.80, 1.90, 3.90, "14x12"), +) + +data = dict( + resc = dict( + dimensions = resc_dimensions, + land_patterns = resc_land_patterns + ), + capc = dict( + dimensions = capc_dimensions, + land_patterns = capc_land_patterns + ) +) diff --git a/templates/CHIP.j2 b/templates/CHIP.j2 index 13ee398..11c8789 100644 --- a/templates/CHIP.j2 +++ b/templates/CHIP.j2 @@ -1,31 +1,31 @@ (module {{key}} (layer F.Cu) (tedit 5A2018AF) (attr smd) - (fp_text reference REF** (at 0 {{sy/-4 * 0.1}}) (layer F.Fab) - (effects (font (size {{sy/5 * 0.1}} {{sy/5 * 0.1}}) (thickness {{sy/5 * 0.015}}))) + (fp_text reference REF** (at 0 {{ lp.size_y / -4 }}) (layer F.Fab) + (effects (font (size {{ rnd2(lp.size_y / 5) }} {{ lp.size_y / 5 }}) (thickness {{ lp.size_y / 5 * 0.15 }}))) ) - (fp_text value VAL** (at 0 {{sy/4 * 0.1}}) (layer F.Fab) - (effects (font (size {{sy/5 * 0.1}} {{sy/5 * 0.1}}) (thickness {{sy/5 * 0.015}}))) + (fp_text value VAL** (at 0 {{ lp.size_y / 4 }}) (layer F.Fab) + (effects (font (size {{ rnd2(lp.size_y / 5) }} {{ lp.size_y / 5 }}) (thickness {{ lp.size_y / 5 * 0.15 }}))) ) - (fp_text user %R (at 0 {{sy/-4 * 0.1}}) (layer "F.SilkS") + (fp_text user %R (at 0 {{ lp.size_y / -4 }}) (layer "F.SilkS") (effects (font (size 0.7 0.7) (thickness 0.1))) ) - (fp_text user %V (at 0 {{sy/4 * 0.1}}) (layer "F.SilkS") + (fp_text user %V (at 0 {{ lp.size_y / 4 }}) (layer "F.SilkS") (effects (font (size 0.7 0.7) (thickness 0.1))) ) {# Outline #} - (fp_line (start {{sx/-20}} {{sy/-20}}) (end {{sx/ 20}} {{sy/-20}}) (layer F.Fab) (width 0.05)) - (fp_line (start {{sx/ 20}} {{sy/-20}}) (end {{sx/ 20}} {{sy/ 20}}) (layer F.Fab) (width 0.05)) - (fp_line (start {{sx/ 20}} {{sy/ 20}}) (end {{sx/-20}} {{sy/ 20}}) (layer F.Fab) (width 0.05)) - (fp_line (start {{sx/-20}} {{sy/ 20}}) (end {{sx/-20}} {{sy/-20}}) (layer F.Fab) (width 0.05)) + (fp_line (start {{ lp.size_x / -2 }} {{ lp.size_y / -2 }}) (end {{ lp.size_x / 2 }} {{ lp.size_y / -2 }}) (layer F.Fab) (width 0.05)) + (fp_line (start {{ lp.size_x / 2 }} {{ lp.size_y / -2 }}) (end {{ lp.size_x / 2 }} {{ lp.size_y / 2 }}) (layer F.Fab) (width 0.05)) + (fp_line (start {{ lp.size_x / 2 }} {{ lp.size_y / 2 }}) (end {{ lp.size_x / -2 }} {{ lp.size_y / 2 }}) (layer F.Fab) (width 0.05)) + (fp_line (start {{ lp.size_x / -2 }} {{ lp.size_y / 2 }}) (end {{ lp.size_x / -2 }} {{ lp.size_y / -2 }}) (layer F.Fab) (width 0.05)) {# Courtyard #} - (fp_line (start {{gx/-2}} {{gy/-2}}) (end {{gx/2}} {{gy/-2}}) (layer F.CrtYd) (width 0.05)) - (fp_line (start {{gx/2}} {{gy/-2}}) (end {{gx/2}} {{gy/2}}) (layer F.CrtYd) (width 0.05)) - (fp_line (start {{gx/2}} {{gy/2}}) (end {{gx/-2}} {{gy/2}}) (layer F.CrtYd) (width 0.05)) - (fp_line (start {{gx/-2}} {{gy/2}}) (end {{gx/-2}} {{gy/-2}}) (layer F.CrtYd) (width 0.05)) + (fp_line (start {{ -lp.courtyard_x }} {{ -lp.courtyard_y }}) (end {{ lp.courtyard_x }} {{ -lp.courtyard_y }}) (layer F.CrtYd) (width 0.05)) + (fp_line (start {{ lp.courtyard_x }} {{ -lp.courtyard_y }}) (end {{ lp.courtyard_x }} {{ lp.courtyard_y }}) (layer F.CrtYd) (width 0.05)) + (fp_line (start {{ lp.courtyard_x }} {{ lp.courtyard_y }}) (end {{ -lp.courtyard_x }} {{ lp.courtyard_y }}) (layer F.CrtYd) (width 0.05)) + (fp_line (start {{ -lp.courtyard_x }} {{ lp.courtyard_y }}) (end {{ -lp.courtyard_x }} {{ -lp.courtyard_y }}) (layer F.CrtYd) (width 0.05)) - (pad 1 smd rect (at {{pcc/-2}} 0) (size {{px}} {{py}}) (layers F.Cu F.Paste F.Mask)) - (pad 2 smd rect (at {{pcc/2}} 0) (size {{px}} {{py}}) (layers F.Cu F.Paste F.Mask)) + (pad 1 smd rect (at {{ -lp.pad_pos_x }} 0) (size {{ lp.pad_size_x }} {{ lp.pad_size_y }}) (layers F.Cu F.Paste F.Mask)) + (pad 2 smd rect (at {{ lp.pad_pos_x }} 0) (size {{ lp.pad_size_x }} {{ lp.pad_size_y }}) (layers F.Cu F.Paste F.Mask)) ) |