Index: work/openscad/do214-test-pcb.lht =================================================================== --- work/openscad/do214-test-pcb.lht (nonexistent) +++ work/openscad/do214-test-pcb.lht (revision 32589) @@ -0,0 +1,1748 @@ +ha:pcb-rnd-board-v6 { + + li:styles { + ha:Signal { + diameter = 0.9mm + text_scale = 0 + text_thick = 0.0 + thickness = 15.0mil + hole = 0.5mm + clearance = 10.0mil + } + ha:Power { + diameter = 1.6mm + text_scale = 0 + text_thick = 0.0 + thickness = 40.0mil + hole = 0.8mm + clearance = 15.0mil + } + ha:Fat { + diameter = 2.5mm + text_scale = 0 + text_thick = 0.0 + thickness = 80.0mil + hole = 1.1mm + clearance = 25.0mil + } + ha:Sig-tight { + diameter = 0.8mm + text_scale = 0 + text_thick = 0.0 + thickness = 10.0mil + hole = 0.4mm + clearance = 10.0mil + } + } + + ha:meta { + ha:size { + thermal_scale = 0.500000 + x = 700.0mil + y = 1.8in + } + ha:grid { + spacing = 25.0mil + offs_x = 0.0 + offs_y = 0.0 + } + } + + ha:data { + li:padstack_prototypes { + } + + li:objects { + ha:subc.212 { + ha:attributes { + footprint=DO214AB SMT diode (pin 1 is cathode) + openscad-param="AB" + openscad=do214.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 75.5mil + -95.5mil + -75.5mil + -95.5mil + -75.5mil + 95.5mil + 75.5mil + 95.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.244 { + proto=0; x=216.0mil; y=1.525in; rot=0.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.245 { + proto=0; x=434.0mil; y=1.525in; rot=0.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.213 { + x1=108.0mil; y1=1.617in; x2=108.0mil; y2=1.433in; thickness=20.0mil; clearance=0.0; + } + ha:line.216 { + x1=108.0mil; y1=1.433in; x2=180.0mil; y2=1.407in; thickness=10.0mil; clearance=0.0; + } + ha:line.219 { + x1=180.0mil; y1=1.407in; x2=532.0mil; y2=1.407in; thickness=10.0mil; clearance=0.0; + } + ha:line.222 { + x1=532.0mil; y1=1.407in; x2=532.0mil; y2=1.643in; thickness=10.0mil; clearance=0.0; + } + ha:line.225 { + x1=532.0mil; y1=1.643in; x2=180.0mil; y2=1.643in; thickness=10.0mil; clearance=0.0; + } + ha:line.228 { + x1=180.0mil; y1=1.643in; x2=108.0mil; y2=1.617in; thickness=10.0mil; clearance=0.0; + } + ha:text.231 { + string=%a.parent.refdes%; x=552.0mil; y=1.525in; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 270.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.232 { + x1=325.0mil; y1=1.525in; x2=325.0mil; y2=1.525in; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.235 { + x1=325.0mil; y1=1.525in; x2=325.0mil; y2=1.525in; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.238 { + x1=325.0mil; y1=1.525in; x2=9.255mm; y2=1.525in; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.241 { + x1=325.0mil; y1=1.525in; x2=325.0mil; y2=37.735mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + misc = 1 + virtual = 1 + bottom = 1 + } + } + } + } + uid = LJaVZUMLh15GoNd+Ga8AAAAB + } + ha:subc.282 { + ha:attributes { + openscad-param="AB" + footprint=DO214AB SMT diode (pin 1 is cathode) + openscad=do214.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 75.5mil + -95.5mil + -75.5mil + -95.5mil + -75.5mil + 95.5mil + 75.5mil + 95.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.314 { + proto=0; x=325.0mil; y=1.016in; rot=90.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.315 { + proto=0; x=325.0mil; y=1.234in; rot=90.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.283 { + x1=233.0mil; y1=908.0mil; x2=417.0mil; y2=908.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.286 { + x1=417.0mil; y1=908.0mil; x2=443.0mil; y2=980.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.289 { + x1=443.0mil; y1=980.0mil; x2=443.0mil; y2=1.332in; thickness=10.0mil; clearance=0.0; + } + ha:line.292 { + x1=443.0mil; y1=1.332in; x2=207.0mil; y2=1.332in; thickness=10.0mil; clearance=0.0; + } + ha:line.295 { + x1=207.0mil; y1=1.332in; x2=207.0mil; y2=980.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.298 { + x1=207.0mil; y1=980.0mil; x2=233.0mil; y2=908.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.301 { + string=%a.parent.refdes%; x=325.0mil; y=1.352in; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 360.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.302 { + x1=325.0mil; y1=1.125in; x2=325.0mil; y2=1.125in; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.305 { + x1=325.0mil; y1=1.125in; x2=325.0mil; y2=1.125in; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.308 { + x1=325.0mil; y1=1.125in; x2=325.0mil; y2=29.575mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.311 { + x1=325.0mil; y1=1.125in; x2=9.255mm; y2=1.125in; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + misc = 1 + virtual = 1 + bottom = 1 + } + } + } + } + uid = LJaVZUMLh15GoNd+Ga8AAAAB + } + ha:subc.317 { + ha:attributes { + openscad-param="AB" + footprint=DO214AB SMT diode (pin 1 is cathode) + openscad=do214.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 75.5mil + -95.5mil + -75.5mil + -95.5mil + -75.5mil + 95.5mil + 75.5mil + 95.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.349 { + proto=0; x=434.0mil; y=725.0mil; rot=180.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.350 { + proto=0; x=216.0mil; y=725.0mil; rot=180.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.318 { + x1=542.0mil; y1=633.0mil; x2=542.0mil; y2=817.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.321 { + x1=542.0mil; y1=817.0mil; x2=470.0mil; y2=843.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.324 { + x1=470.0mil; y1=843.0mil; x2=118.0mil; y2=843.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.327 { + x1=118.0mil; y1=843.0mil; x2=118.0mil; y2=607.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.330 { + x1=118.0mil; y1=607.0mil; x2=470.0mil; y2=607.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.333 { + x1=470.0mil; y1=607.0mil; x2=542.0mil; y2=633.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.336 { + string=%a.parent.refdes%; x=98.0mil; y=725.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 90.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.337 { + x1=325.0mil; y1=725.0mil; x2=325.0mil; y2=725.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.340 { + x1=325.0mil; y1=725.0mil; x2=325.0mil; y2=725.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.343 { + x1=325.0mil; y1=725.0mil; x2=7.255mm; y2=725.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.346 { + x1=325.0mil; y1=725.0mil; x2=325.0mil; y2=19.415mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + misc = 1 + virtual = 1 + bottom = 1 + } + } + } + } + uid = LJaVZUMLh15GoNd+Ga8AAAAB + } + ha:subc.352 { + ha:attributes { + openscad-param="AB" + footprint=DO214AB SMT diode (pin 1 is cathode) + openscad=do214.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 75.5mil + -95.5mil + -75.5mil + -95.5mil + -75.5mil + 95.5mil + 75.5mil + 95.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.384 { + proto=0; x=325.0mil; y=409.0mil; rot=270.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.385 { + proto=0; x=325.0mil; y=191.0mil; rot=270.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.353 { + x1=417.0mil; y1=517.0mil; x2=233.0mil; y2=517.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.356 { + x1=233.0mil; y1=517.0mil; x2=207.0mil; y2=445.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.359 { + x1=207.0mil; y1=445.0mil; x2=207.0mil; y2=93.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.362 { + x1=207.0mil; y1=93.0mil; x2=443.0mil; y2=93.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.365 { + x1=443.0mil; y1=93.0mil; x2=443.0mil; y2=445.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.368 { + x1=443.0mil; y1=445.0mil; x2=417.0mil; y2=517.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.371 { + string=%a.parent.refdes%; x=325.0mil; y=73.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 180.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.372 { + x1=325.0mil; y1=300.0mil; x2=325.0mil; y2=300.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.375 { + x1=325.0mil; y1=300.0mil; x2=325.0mil; y2=300.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.378 { + x1=325.0mil; y1=300.0mil; x2=325.0mil; y2=6.62mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.381 { + x1=325.0mil; y1=300.0mil; x2=7.255mm; y2=300.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + misc = 1 + virtual = 1 + bottom = 1 + } + } + } + } + uid = LJaVZUMLh15GoNd+Ga8AAAAB + } + ha:subc.752 { + ha:attributes { + openscad-param="AB" + footprint=DO214AB SMT diode (pin 1 is cathode) + openscad=do214.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 75.5mil + -95.5mil + -75.5mil + -95.5mil + -75.5mil + 95.5mil + 75.5mil + 95.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.784 { + proto=0; x=216.0mil; y=225.0mil; rot=0.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.785 { + proto=0; x=434.0mil; y=225.0mil; rot=0.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.753 { + x1=108.0mil; y1=133.0mil; x2=108.0mil; y2=317.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.756 { + x1=108.0mil; y1=317.0mil; x2=180.0mil; y2=343.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.759 { + x1=180.0mil; y1=343.0mil; x2=532.0mil; y2=343.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.762 { + x1=532.0mil; y1=343.0mil; x2=532.0mil; y2=107.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.765 { + x1=532.0mil; y1=107.0mil; x2=180.0mil; y2=107.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.768 { + x1=180.0mil; y1=107.0mil; x2=108.0mil; y2=133.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.771 { + string=%a.parent.refdes%; x=552.0mil; y=225.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 270.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.772 { + x1=325.0mil; y1=225.0mil; x2=325.0mil; y2=225.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.775 { + x1=325.0mil; y1=225.0mil; x2=325.0mil; y2=225.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.778 { + x1=325.0mil; y1=225.0mil; x2=9.255mm; y2=225.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.781 { + x1=325.0mil; y1=225.0mil; x2=325.0mil; y2=6.715mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = LJaVZUMLh15GoNd+Ga8AAAAB + } + ha:subc.787 { + ha:attributes { + openscad-param="AB" + footprint=DO214AB SMT diode (pin 1 is cathode) + openscad=do214.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 75.5mil + -95.5mil + -75.5mil + -95.5mil + -75.5mil + 95.5mil + 75.5mil + 95.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.819 { + proto=0; x=325.0mil; y=734.0mil; rot=90.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.820 { + proto=0; x=325.0mil; y=516.0mil; rot=90.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.788 { + x1=233.0mil; y1=842.0mil; x2=417.0mil; y2=842.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.791 { + x1=417.0mil; y1=842.0mil; x2=443.0mil; y2=770.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.794 { + x1=443.0mil; y1=770.0mil; x2=443.0mil; y2=418.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.797 { + x1=443.0mil; y1=418.0mil; x2=207.0mil; y2=418.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.800 { + x1=207.0mil; y1=418.0mil; x2=207.0mil; y2=770.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.803 { + x1=207.0mil; y1=770.0mil; x2=233.0mil; y2=842.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.806 { + string=%a.parent.refdes%; x=325.0mil; y=398.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 360.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.807 { + x1=325.0mil; y1=625.0mil; x2=325.0mil; y2=625.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.810 { + x1=325.0mil; y1=625.0mil; x2=325.0mil; y2=625.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.813 { + x1=325.0mil; y1=625.0mil; x2=325.0mil; y2=14.875mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.816 { + x1=325.0mil; y1=625.0mil; x2=9.255mm; y2=625.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = LJaVZUMLh15GoNd+Ga8AAAAB + } + ha:subc.822 { + ha:attributes { + openscad-param="AB" + footprint=DO214AB SMT diode (pin 1 is cathode) + openscad=do214.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 75.5mil + -95.5mil + -75.5mil + -95.5mil + -75.5mil + 95.5mil + 75.5mil + 95.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.854 { + proto=0; x=434.0mil; y=26.035mm; rot=180.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.855 { + proto=0; x=216.0mil; y=26.035mm; rot=180.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.823 { + x1=542.0mil; y1=1.117in; x2=542.0mil; y2=933.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.826 { + x1=542.0mil; y1=933.0mil; x2=470.0mil; y2=907.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.829 { + x1=470.0mil; y1=907.0mil; x2=118.0mil; y2=907.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.832 { + x1=118.0mil; y1=907.0mil; x2=118.0mil; y2=1.143in; thickness=10.0mil; clearance=0.0; + } + ha:line.835 { + x1=118.0mil; y1=1.143in; x2=470.0mil; y2=1.143in; thickness=10.0mil; clearance=0.0; + } + ha:line.838 { + x1=470.0mil; y1=1.143in; x2=542.0mil; y2=1.117in; thickness=10.0mil; clearance=0.0; + } + ha:text.841 { + string=%a.parent.refdes%; x=98.0mil; y=26.035mm; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 90.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.842 { + x1=325.0mil; y1=26.035mm; x2=325.0mil; y2=26.035mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.845 { + x1=325.0mil; y1=26.035mm; x2=325.0mil; y2=26.035mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.848 { + x1=325.0mil; y1=26.035mm; x2=7.255mm; y2=26.035mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.851 { + x1=325.0mil; y1=26.035mm; x2=325.0mil; y2=25.035mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = LJaVZUMLh15GoNd+Ga8AAAAB + } + ha:subc.857 { + ha:attributes { + openscad-param="AB" + footprint=DO214AB SMT diode (pin 1 is cathode) + openscad=do214.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 75.5mil + -95.5mil + -75.5mil + -95.5mil + -75.5mil + 95.5mil + 75.5mil + 95.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 72.5mil + -92.5mil + -72.5mil + -92.5mil + -72.5mil + 92.5mil + 72.5mil + 92.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.889 { + proto=0; x=325.0mil; y=1.341in; rot=270.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.890 { + proto=0; x=325.0mil; y=39.5986mm; rot=270.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.858 { + x1=417.0mil; y1=1.233in; x2=233.0mil; y2=1.233in; thickness=20.0mil; clearance=0.0; + } + ha:line.861 { + x1=233.0mil; y1=1.233in; x2=207.0mil; y2=33.147mm; thickness=10.0mil; clearance=0.0; + } + ha:line.864 { + x1=207.0mil; y1=33.147mm; x2=207.0mil; y2=1.657in; thickness=10.0mil; clearance=0.0; + } + ha:line.867 { + x1=207.0mil; y1=1.657in; x2=443.0mil; y2=1.657in; thickness=10.0mil; clearance=0.0; + } + ha:line.870 { + x1=443.0mil; y1=1.657in; x2=443.0mil; y2=33.147mm; thickness=10.0mil; clearance=0.0; + } + ha:line.873 { + x1=443.0mil; y1=33.147mm; x2=417.0mil; y2=1.233in; thickness=10.0mil; clearance=0.0; + } + ha:text.876 { + string=%a.parent.refdes%; x=325.0mil; y=1.677in; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 180.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.877 { + x1=325.0mil; y1=36.83mm; x2=325.0mil; y2=36.83mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.880 { + x1=325.0mil; y1=36.83mm; x2=325.0mil; y2=36.83mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.883 { + x1=325.0mil; y1=36.83mm; x2=325.0mil; y2=37.83mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.886 { + x1=325.0mil; y1=36.83mm; x2=7.255mm; y2=36.83mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = LJaVZUMLh15GoNd+Ga8AAAAB + } + } + li:layers { + + ha:top-sig { + lid=0 + group=3 + ha:combining { } + + li:objects { + } + color = {#955a5a} + } + + ha:bottom-sig { + lid=1 + group=6 + ha:combining { } + + li:objects { + } + color = {#6075b4} + } + + ha:top-gnd { + lid=2 + group=3 + ha:combining { } + + li:objects { + } + color = {#ffb9b2} + } + + ha:bottom-gnd { + lid=3 + group=6 + ha:combining { } + + li:objects { + } + color = {#a0d9ff} + } + + ha:top-vcc { + lid=4 + group=3 + ha:combining { } + + li:objects { + } + color = {#ff002c} + } + + ha:bottom-vcc { + lid=5 + group=6 + ha:combining { } + + li:objects { + } + color = {#0056ff} + } + + ha:outline { + lid=6 + group=5 + ha:combining { } + + li:objects { + } + color = {#00868b} + } + + ha:bottom-silk { + lid=7 + group=8 + ha:combining { auto=1; } + + li:objects { + } + color = {#000000} + } + + ha:top-silk { + lid=8 + group=1 + ha:combining { auto=1; } + + li:objects { + } + color = {#000000} + } + + ha:top-paste { + lid=9 + group=0 + ha:combining { auto=1; } + + li:objects { + } + color = {#cd00cd} + } + + ha:top-mask { + lid=10 + group=2 + ha:combining { sub=1; auto=1; } + + li:objects { + } + color = {#ff0000} + } + + ha:bottom-mask { + lid=11 + group=7 + ha:combining { sub=1; auto=1; } + + li:objects { + } + color = {#ff0000} + } + + ha:bottom-paste { + lid=12 + group=9 + ha:combining { auto=1; } + + li:objects { + } + color = {#cd00cd} + } + + ha:slot-plated { + lid=13 + group=10 + ha:combining { auto=1; } + + li:objects { + } + color = {#8b7355} + } + + ha:slot-unplated { + lid=14 + group=11 + ha:combining { auto=1; } + + li:objects { + } + color = {#00868b} + } + } + } + + ha:layer_stack { + li:groups { + ha:0 { + name = top_paste + ha:type { top=1; paste=1; } + li:layers { 9; } + } + ha:1 { + name = top_silk + ha:type { silk=1; top=1; } + li:layers { 8; } + } + ha:2 { + name = top_mask + ha:type { top=1; mask=1; } + li:layers { 10; } + } + ha:3 { + name = top_copper + ha:type { copper=1; top=1; } + li:layers { 0; 2; 4; } + } + ha:4 { + name = grp_4 + ha:type { substrate=1; intern=1; } + li:layers { } + } + ha:5 { + name = global_outline + ha:type { boundary=1; } + li:layers { 6; } + purpose = uroute + } + ha:6 { + name = bottom_copper + ha:type { bottom=1; copper=1; } + li:layers { 1; 3; 5; } + } + ha:7 { + name = bottom_mask + ha:type { bottom=1; mask=1; } + li:layers { 11; } + } + ha:8 { + name = bottom_silk + ha:type { silk=1; bottom=1; } + li:layers { 7; } + } + ha:9 { + name = bottom_paste + ha:type { bottom=1; paste=1; } + li:layers { 12; } + } + ha:10 { + name = pmech + ha:type { mech=1; } + li:layers { 13; } + purpose = proute + } + ha:11 { + name = umech + ha:type { mech=1; } + li:layers { 14; } + purpose = uroute + } + } + } + ha:pixmaps { + } +} Index: work/openscad/do214.scad =================================================================== --- work/openscad/do214.scad (nonexistent) +++ work/openscad/do214.scad (revision 32589) @@ -0,0 +1,104 @@ +// Parametric model for DO214 AA/AB/AC packages +// +// Copyright (C) 2020 Alexey Kosilin +// +// File distribution license: +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +// +// The above distribution license applies when the file is distributed as a +// stand alone model file or as part of a library, in both cases intended +// for reuse combined by the user with other openscad scripts. +// +// Use license: +// as a special exception, the content of the file may be +// embedded in an openscad script that represents a printed circuit board, +// for example when a board is exported by pcb-rnd. In such use case, +// the content of this file may be copied into the resulting board file +// with or without modifications, without affecting the board file's license +// in any way. +// + +module part_do214 (var) +{ + module impl (L, W, H, P, Tw, Th) + { + delta = 1e-3 ; + $fn = 30 ; + + module lead (P, Tw, Th) + color ([0.9, 0.9, 0.9]) + translate ([-delta, -Tw/2, -delta]) + { + translate ([0.3/2, 0, 0.3/2]) + rotate ([-90, 0, 0]) + cylinder (d = 0.3, h = Tw) ; + + translate ([0.3/2, 0, Th]) + rotate ([-90, 0, 0]) + cylinder (d = 0.3, h = Tw) ; + + translate ([0, 0, 0.3/2]) + cube ([0.3, Tw, Th - 0.3/2]) ; + + translate ([0.3/2, 0, 0]) + cube ([3*P - 0.3/2, Tw, 0.3]) ; + + translate ([0.3/2, 0, Th - 0.3/2]) + cube ([2*P - 0.3/2, Tw, 0.3]) ; + } + + module case() + hull() + { + translate ([0, 0, H/2]) + cube ([L*0.95, W*0.95, H], center = true) ; + + translate ([0, 0, Th]) + cube ([L, W, delta], center = true) ; + } + + color ([0.5, 0.5, 0.5]) + intersection() + { + translate ([-L/3, -5, -5]) + cube ([0.5, 10, 10]) ; + + scale (1.002) + case() ; + } + + color ([0.3, 0.3, 0.3]) + case() ; + + translate ([-L/2-P, 0, 0]) + lead (P, Tw, Th) ; + + translate ([L/2+P, 0, 0]) + mirror ([1, 0, 0]) + lead (P, Tw, Th) ; + } + + variants = [ "AA", "AB", "AC" ] ; + + L = [ 4.57, 7.11, 4.6 ] ; + W = [ 3.94, 6.22, 2.90 ] ; + H = [ 2.5, 2.62, 2.45 ] ; + Tw = [ 2.21, 3.2, 1.65 ] ; + Tl = [ 5.59, 8.13, 5.35 ] ; + + idx = search ([var], variants)[0] ; + + impl (L[idx], W[idx], H[idx], (Tl[idx]-L[idx]) / 2, Tw[idx], H[idx]/2) ; +} Index: work/openscad/sod123-test-pcb.lht =================================================================== --- work/openscad/sod123-test-pcb.lht (nonexistent) +++ work/openscad/sod123-test-pcb.lht (revision 32589) @@ -0,0 +1,1740 @@ +ha:pcb-rnd-board-v6 { + + li:styles { + ha:Signal { + diameter = 0.9mm + text_scale = 0 + text_thick = 0.0 + thickness = 15.0mil + hole = 0.5mm + clearance = 10.0mil + } + ha:Power { + diameter = 1.6mm + text_scale = 0 + text_thick = 0.0 + thickness = 40.0mil + hole = 0.8mm + clearance = 15.0mil + } + ha:Fat { + diameter = 2.5mm + text_scale = 0 + text_thick = 0.0 + thickness = 80.0mil + hole = 1.1mm + clearance = 25.0mil + } + ha:Sig-tight { + diameter = 0.8mm + text_scale = 0 + text_thick = 0.0 + thickness = 10.0mil + hole = 0.4mm + clearance = 10.0mil + } + } + + ha:meta { + ha:size { + thermal_scale = 0.500000 + x = 700.0mil + y = 500.0mil + } + ha:grid { + spacing = 25.0mil + offs_x = 0.0 + offs_y = 0.0 + } + } + + ha:data { + li:padstack_prototypes { + } + + li:objects { + ha:subc.212 { + ha:attributes { + footprint=SOD123 SMT diode (pin 1 is cathode) + openscad=sod123.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 37.5mil + -43.5mil + -37.5mil + -43.5mil + -37.5mil + 43.5mil + 37.5mil + 43.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.244 { + proto=0; x=120.0mil; y=375.0mil; rot=0.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.245 { + proto=0; x=230.0mil; y=375.0mil; rot=0.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.213 { + x1=65.0mil; y1=415.0mil; x2=65.0mil; y2=335.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.216 { + x1=65.0mil; y1=335.0mil; x2=99.0mil; y2=324.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.219 { + x1=99.0mil; y1=324.0mil; x2=275.0mil; y2=324.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.222 { + x1=275.0mil; y1=324.0mil; x2=275.0mil; y2=426.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.225 { + x1=275.0mil; y1=426.0mil; x2=99.0mil; y2=426.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.228 { + x1=99.0mil; y1=426.0mil; x2=65.0mil; y2=415.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.231 { + string=%a.parent.refdes%; x=295.0mil; y=375.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 270.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.232 { + x1=175.0mil; y1=375.0mil; x2=175.0mil; y2=375.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.235 { + x1=175.0mil; y1=375.0mil; x2=175.0mil; y2=375.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.238 { + x1=175.0mil; y1=375.0mil; x2=5.445mm; y2=375.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.241 { + x1=175.0mil; y1=375.0mil; x2=175.0mil; y2=8.525mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + bottom = 1 + virtual = 1 + misc = 1 + } + } + } + } + uid = bK7s+7eWCVc1F+i9KCMAAAAB + } + ha:subc.422 { + ha:attributes { + footprint=SOD123 SMT diode (pin 1 is cathode) + openscad=sod123.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 37.5mil + -43.5mil + -37.5mil + -43.5mil + -37.5mil + 43.5mil + 37.5mil + 43.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.454 { + proto=0; x=555.0mil; y=375.0mil; rot=180.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.455 { + proto=0; x=445.0mil; y=375.0mil; rot=180.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.423 { + x1=610.0mil; y1=335.0mil; x2=610.0mil; y2=415.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.426 { + x1=610.0mil; y1=415.0mil; x2=576.0mil; y2=426.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.429 { + x1=576.0mil; y1=426.0mil; x2=400.0mil; y2=426.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.432 { + x1=400.0mil; y1=426.0mil; x2=400.0mil; y2=324.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.435 { + x1=400.0mil; y1=324.0mil; x2=576.0mil; y2=324.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.438 { + x1=576.0mil; y1=324.0mil; x2=610.0mil; y2=335.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.441 { + string=%a.parent.refdes%; x=380.0mil; y=375.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 90.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.442 { + x1=500.0mil; y1=375.0mil; x2=500.0mil; y2=375.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.445 { + x1=500.0mil; y1=375.0mil; x2=500.0mil; y2=375.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.448 { + x1=500.0mil; y1=375.0mil; x2=11.7mm; y2=375.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.451 { + x1=500.0mil; y1=375.0mil; x2=500.0mil; y2=10.525mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + bottom = 1 + virtual = 1 + misc = 1 + } + } + } + } + uid = bK7s+7eWCVc1F+i9KCMAAAAB + } + ha:subc.457 { + ha:attributes { + footprint=SOD123 SMT diode (pin 1 is cathode) + openscad=sod123.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 37.5mil + -43.5mil + -37.5mil + -43.5mil + -37.5mil + 43.5mil + 37.5mil + 43.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.489 { + proto=0; x=175.0mil; y=95.0mil; rot=90.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.490 { + proto=0; x=175.0mil; y=205.0mil; rot=90.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.458 { + x1=135.0mil; y1=40.0mil; x2=215.0mil; y2=40.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.461 { + x1=215.0mil; y1=40.0mil; x2=226.0mil; y2=74.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.464 { + x1=226.0mil; y1=74.0mil; x2=226.0mil; y2=250.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.467 { + x1=226.0mil; y1=250.0mil; x2=124.0mil; y2=250.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.470 { + x1=124.0mil; y1=250.0mil; x2=124.0mil; y2=74.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.473 { + x1=124.0mil; y1=74.0mil; x2=135.0mil; y2=40.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.476 { + string=%a.parent.refdes%; x=175.0mil; y=270.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 360.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.477 { + x1=175.0mil; y1=150.0mil; x2=175.0mil; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.480 { + x1=175.0mil; y1=150.0mil; x2=175.0mil; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.483 { + x1=175.0mil; y1=150.0mil; x2=175.0mil; y2=4.81mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.486 { + x1=175.0mil; y1=150.0mil; x2=5.445mm; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + bottom = 1 + virtual = 1 + misc = 1 + } + } + } + } + uid = bK7s+7eWCVc1F+i9KCMAAAAB + } + ha:subc.492 { + ha:attributes { + footprint=SOD123 SMT diode (pin 1 is cathode) + openscad=sod123.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 37.5mil + -43.5mil + -37.5mil + -43.5mil + -37.5mil + 43.5mil + 37.5mil + 43.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.524 { + proto=0; x=500.0mil; y=205.0mil; rot=270.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.525 { + proto=0; x=500.0mil; y=95.0mil; rot=270.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.493 { + x1=540.0mil; y1=260.0mil; x2=460.0mil; y2=260.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.496 { + x1=460.0mil; y1=260.0mil; x2=449.0mil; y2=226.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.499 { + x1=449.0mil; y1=226.0mil; x2=449.0mil; y2=50.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.502 { + x1=449.0mil; y1=50.0mil; x2=551.0mil; y2=50.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.505 { + x1=551.0mil; y1=50.0mil; x2=551.0mil; y2=226.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.508 { + x1=551.0mil; y1=226.0mil; x2=540.0mil; y2=260.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.511 { + string=%a.parent.refdes%; x=500.0mil; y=30.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 180.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.512 { + x1=500.0mil; y1=150.0mil; x2=500.0mil; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.515 { + x1=500.0mil; y1=150.0mil; x2=500.0mil; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.518 { + x1=500.0mil; y1=150.0mil; x2=500.0mil; y2=2.81mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.521 { + x1=500.0mil; y1=150.0mil; x2=11.7mm; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + bottom = 1 + virtual = 1 + misc = 1 + } + } + } + } + uid = bK7s+7eWCVc1F+i9KCMAAAAB + } + ha:subc.667 { + ha:attributes { + footprint=SOD123 SMT diode (pin 1 is cathode) + openscad=sod123.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 37.5mil + -43.5mil + -37.5mil + -43.5mil + -37.5mil + 43.5mil + 37.5mil + 43.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.699 { + proto=0; x=120.0mil; y=125.0mil; rot=0.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.700 { + proto=0; x=230.0mil; y=125.0mil; rot=0.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.668 { + x1=65.0mil; y1=85.0mil; x2=65.0mil; y2=165.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.671 { + x1=65.0mil; y1=165.0mil; x2=99.0mil; y2=176.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.674 { + x1=99.0mil; y1=176.0mil; x2=275.0mil; y2=176.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.677 { + x1=275.0mil; y1=176.0mil; x2=275.0mil; y2=74.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.680 { + x1=275.0mil; y1=74.0mil; x2=99.0mil; y2=74.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.683 { + x1=99.0mil; y1=74.0mil; x2=65.0mil; y2=85.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.686 { + string=%a.parent.refdes%; x=295.0mil; y=125.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 270.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.687 { + x1=175.0mil; y1=125.0mil; x2=175.0mil; y2=125.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.690 { + x1=175.0mil; y1=125.0mil; x2=175.0mil; y2=125.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.693 { + x1=175.0mil; y1=125.0mil; x2=5.445mm; y2=125.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.696 { + x1=175.0mil; y1=125.0mil; x2=175.0mil; y2=4.175mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = bK7s+7eWCVc1F+i9KCMAAAAB + } + ha:subc.702 { + ha:attributes { + footprint=SOD123 SMT diode (pin 1 is cathode) + openscad=sod123.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 37.5mil + -43.5mil + -37.5mil + -43.5mil + -37.5mil + 43.5mil + 37.5mil + 43.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.734 { + proto=0; x=555.0mil; y=125.0mil; rot=180.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.735 { + proto=0; x=445.0mil; y=125.0mil; rot=180.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.703 { + x1=610.0mil; y1=165.0mil; x2=610.0mil; y2=85.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.706 { + x1=610.0mil; y1=85.0mil; x2=576.0mil; y2=74.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.709 { + x1=576.0mil; y1=74.0mil; x2=400.0mil; y2=74.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.712 { + x1=400.0mil; y1=74.0mil; x2=400.0mil; y2=176.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.715 { + x1=400.0mil; y1=176.0mil; x2=576.0mil; y2=176.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.718 { + x1=576.0mil; y1=176.0mil; x2=610.0mil; y2=165.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.721 { + string=%a.parent.refdes%; x=380.0mil; y=125.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 90.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.722 { + x1=500.0mil; y1=125.0mil; x2=500.0mil; y2=125.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.725 { + x1=500.0mil; y1=125.0mil; x2=500.0mil; y2=125.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.728 { + x1=500.0mil; y1=125.0mil; x2=11.7mm; y2=125.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.731 { + x1=500.0mil; y1=125.0mil; x2=500.0mil; y2=2.175mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = bK7s+7eWCVc1F+i9KCMAAAAB + } + ha:subc.737 { + ha:attributes { + footprint=SOD123 SMT diode (pin 1 is cathode) + openscad=sod123.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 37.5mil + -43.5mil + -37.5mil + -43.5mil + -37.5mil + 43.5mil + 37.5mil + 43.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.769 { + proto=0; x=175.0mil; y=405.0mil; rot=90.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.770 { + proto=0; x=175.0mil; y=295.0mil; rot=90.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.738 { + x1=135.0mil; y1=460.0mil; x2=215.0mil; y2=460.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.741 { + x1=215.0mil; y1=460.0mil; x2=226.0mil; y2=426.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.744 { + x1=226.0mil; y1=426.0mil; x2=226.0mil; y2=250.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.747 { + x1=226.0mil; y1=250.0mil; x2=124.0mil; y2=250.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.750 { + x1=124.0mil; y1=250.0mil; x2=124.0mil; y2=426.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.753 { + x1=124.0mil; y1=426.0mil; x2=135.0mil; y2=460.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.756 { + string=%a.parent.refdes%; x=175.0mil; y=230.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 360.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.757 { + x1=175.0mil; y1=350.0mil; x2=175.0mil; y2=350.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.760 { + x1=175.0mil; y1=350.0mil; x2=175.0mil; y2=350.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.763 { + x1=175.0mil; y1=350.0mil; x2=175.0mil; y2=7.89mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.766 { + x1=175.0mil; y1=350.0mil; x2=5.445mm; y2=350.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = bK7s+7eWCVc1F+i9KCMAAAAB + } + ha:subc.772 { + ha:attributes { + footprint=SOD123 SMT diode (pin 1 is cathode) + openscad=sod123.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 37.5mil + -43.5mil + -37.5mil + -43.5mil + -37.5mil + 43.5mil + 37.5mil + 43.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 34.5mil + -40.5mil + -34.5mil + -40.5mil + -34.5mil + 40.5mil + 34.5mil + 40.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.804 { + proto=0; x=500.0mil; y=295.0mil; rot=270.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.805 { + proto=0; x=500.0mil; y=405.0mil; rot=270.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.773 { + x1=540.0mil; y1=240.0mil; x2=460.0mil; y2=240.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.776 { + x1=460.0mil; y1=240.0mil; x2=449.0mil; y2=274.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.779 { + x1=449.0mil; y1=274.0mil; x2=449.0mil; y2=450.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.782 { + x1=449.0mil; y1=450.0mil; x2=551.0mil; y2=450.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.785 { + x1=551.0mil; y1=450.0mil; x2=551.0mil; y2=274.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.788 { + x1=551.0mil; y1=274.0mil; x2=540.0mil; y2=240.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.791 { + string=%a.parent.refdes%; x=500.0mil; y=470.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 180.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.792 { + x1=500.0mil; y1=350.0mil; x2=500.0mil; y2=350.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.795 { + x1=500.0mil; y1=350.0mil; x2=500.0mil; y2=350.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.798 { + x1=500.0mil; y1=350.0mil; x2=500.0mil; y2=9.89mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.801 { + x1=500.0mil; y1=350.0mil; x2=11.7mm; y2=350.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = bK7s+7eWCVc1F+i9KCMAAAAB + } + } + li:layers { + + ha:top-sig { + lid=0 + group=3 + ha:combining { } + + li:objects { + } + color = {#955a5a} + } + + ha:bottom-sig { + lid=1 + group=6 + ha:combining { } + + li:objects { + } + color = {#6075b4} + } + + ha:top-gnd { + lid=2 + group=3 + ha:combining { } + + li:objects { + } + color = {#ffb9b2} + } + + ha:bottom-gnd { + lid=3 + group=6 + ha:combining { } + + li:objects { + } + color = {#a0d9ff} + } + + ha:top-vcc { + lid=4 + group=3 + ha:combining { } + + li:objects { + } + color = {#ff002c} + } + + ha:bottom-vcc { + lid=5 + group=6 + ha:combining { } + + li:objects { + } + color = {#0056ff} + } + + ha:outline { + lid=6 + group=5 + ha:combining { } + + li:objects { + } + color = {#00868b} + } + + ha:bottom-silk { + lid=7 + group=8 + ha:combining { auto=1; } + + li:objects { + } + color = {#000000} + } + + ha:top-silk { + lid=8 + group=1 + ha:combining { auto=1; } + + li:objects { + } + color = {#000000} + } + + ha:top-paste { + lid=9 + group=0 + ha:combining { auto=1; } + + li:objects { + } + color = {#cd00cd} + } + + ha:top-mask { + lid=10 + group=2 + ha:combining { sub=1; auto=1; } + + li:objects { + } + color = {#ff0000} + } + + ha:bottom-mask { + lid=11 + group=7 + ha:combining { sub=1; auto=1; } + + li:objects { + } + color = {#ff0000} + } + + ha:bottom-paste { + lid=12 + group=9 + ha:combining { auto=1; } + + li:objects { + } + color = {#cd00cd} + } + + ha:slot-plated { + lid=13 + group=10 + ha:combining { auto=1; } + + li:objects { + } + color = {#8b7355} + } + + ha:slot-unplated { + lid=14 + group=11 + ha:combining { auto=1; } + + li:objects { + } + color = {#00868b} + } + } + } + + ha:layer_stack { + li:groups { + ha:0 { + name = top_paste + ha:type { top=1; paste=1; } + li:layers { 9; } + } + ha:1 { + name = top_silk + ha:type { silk=1; top=1; } + li:layers { 8; } + } + ha:2 { + name = top_mask + ha:type { top=1; mask=1; } + li:layers { 10; } + } + ha:3 { + name = top_copper + ha:type { copper=1; top=1; } + li:layers { 0; 2; 4; } + } + ha:4 { + name = grp_4 + ha:type { substrate=1; intern=1; } + li:layers { } + } + ha:5 { + name = global_outline + ha:type { boundary=1; } + li:layers { 6; } + purpose = uroute + } + ha:6 { + name = bottom_copper + ha:type { bottom=1; copper=1; } + li:layers { 1; 3; 5; } + } + ha:7 { + name = bottom_mask + ha:type { bottom=1; mask=1; } + li:layers { 11; } + } + ha:8 { + name = bottom_silk + ha:type { silk=1; bottom=1; } + li:layers { 7; } + } + ha:9 { + name = bottom_paste + ha:type { bottom=1; paste=1; } + li:layers { 12; } + } + ha:10 { + name = pmech + ha:type { mech=1; } + li:layers { 13; } + purpose = proute + } + ha:11 { + name = umech + ha:type { mech=1; } + li:layers { 14; } + purpose = uroute + } + } + } + ha:pixmaps { + } +} Index: work/openscad/sod123.scad =================================================================== --- work/openscad/sod123.scad (nonexistent) +++ work/openscad/sod123.scad (revision 32589) @@ -0,0 +1,89 @@ +// Model for SOD123 package +// +// Copyright (C) 2020 Alexey Kosilin +// +// File distribution license: +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +// +// The above distribution license applies when the file is distributed as a +// stand alone model file or as part of a library, in both cases intended +// for reuse combined by the user with other openscad scripts. +// +// Use license: +// as a special exception, the content of the file may be +// embedded in an openscad script that represents a printed circuit board, +// for example when a board is exported by pcb-rnd. In such use case, +// the content of this file may be copied into the resulting board file +// with or without modifications, without affecting the board file's license +// in any way. +// + +module part_sod123() +{ + $fn = 30 ; + + A = 1.35 ; + D = 1.8 ; + E = 2.84 ; + He = 3.86 ; + + c = 0.15 ; + L = 0.25 ; + b = 0.71 ; + l2 = 0.15 ; + + module lead() + color ([0.9, 0.9, 0.9]) + { + translate ([0, -b/2, L+c]) + rotate ([-90, 0, 0]) + rotate_extrude (angle = 90) + translate ([L, 0, 0]) + square ([c, b]) ; + + translate ([L, -b/2, L+c]) + cube ([c, b, A/2 - (L+c)]) ; + + translate ([c+l2+L, b/2, A/2]) + rotate ([90, -90, 0]) + rotate_extrude (angle = 90) + translate ([l2, 0, 0]) + square ([c, b]) ; + } + + module case() + translate ([He/2 - E/2 - He/2, -D/2, 0]) + cube ([E, D, A]) ; + + translate ([-He/2, 0, 0]) + lead() ; + + translate ([He/2, 0, 0]) + mirror ([1, 0, 0]) + lead() ; + + color ([0.5, 0.5, 0.5]) + intersection() + { + translate ([-He/4, -5, -5]) + cube ([0.3, 10, 10]) ; + + scale (1.002) + case() ; + } + + color ([0.3, 0.3, 0.3]) + case() ; +} Index: work/openscad/sod323-test-pcb.lht =================================================================== --- work/openscad/sod323-test-pcb.lht (nonexistent) +++ work/openscad/sod323-test-pcb.lht (revision 32589) @@ -0,0 +1,1740 @@ +ha:pcb-rnd-board-v6 { + + li:styles { + ha:Signal { + diameter = 0.9mm + text_scale = 0 + text_thick = 0.0 + thickness = 15.0mil + hole = 0.5mm + clearance = 10.0mil + } + ha:Power { + diameter = 1.6mm + text_scale = 0 + text_thick = 0.0 + thickness = 40.0mil + hole = 0.8mm + clearance = 15.0mil + } + ha:Fat { + diameter = 2.5mm + text_scale = 0 + text_thick = 0.0 + thickness = 80.0mil + hole = 1.1mm + clearance = 25.0mil + } + ha:Sig-tight { + diameter = 0.8mm + text_scale = 0 + text_thick = 0.0 + thickness = 10.0mil + hole = 0.4mm + clearance = 10.0mil + } + } + + ha:meta { + ha:size { + thermal_scale = 0.500000 + x = 700.0mil + y = 700.0mil + } + ha:grid { + spacing = 25.0mil + offs_x = 0.0 + offs_y = 0.0 + } + } + + ha:data { + li:padstack_prototypes { + } + + li:objects { + ha:subc.142 { + ha:attributes { + footprint=SOD323 SMT diode (pin 1 is cathode) + openscad=sod323.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 28.5mil + -38.5mil + -28.5mil + -38.5mil + -28.5mil + 38.5mil + 28.5mil + 38.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.174 { + proto=0; x=549.0mil; y=425.0mil; rot=180.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.175 { + proto=0; x=475.0mil; y=425.0mil; rot=180.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.143 { + x1=595.0mil; y1=390.0mil; x2=595.0mil; y2=460.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.146 { + x1=595.0mil; y1=460.0mil; x2=570.0mil; y2=470.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.149 { + x1=570.0mil; y1=470.0mil; x2=439.0mil; y2=470.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.152 { + x1=439.0mil; y1=470.0mil; x2=439.0mil; y2=380.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.155 { + x1=439.0mil; y1=380.0mil; x2=570.0mil; y2=380.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.158 { + x1=570.0mil; y1=380.0mil; x2=595.0mil; y2=390.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.161 { + string=%a.parent.refdes%; x=419.0mil; y=425.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 90.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.162 { + x1=512.0mil; y1=425.0mil; x2=512.0mil; y2=425.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.165 { + x1=512.0mil; y1=425.0mil; x2=512.0mil; y2=425.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.168 { + x1=512.0mil; y1=425.0mil; x2=12.0048mm; y2=425.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.171 { + x1=512.0mil; y1=425.0mil; x2=512.0mil; y2=11.795mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + bottom = 1 + virtual = 1 + misc = 1 + } + } + } + } + uid = 2dW9Tvw7RTxCX0jj23YAAAAB + } + ha:subc.177 { + ha:attributes { + footprint=SOD323 SMT diode (pin 1 is cathode) + openscad=sod323.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 28.5mil + -38.5mil + -28.5mil + -38.5mil + -28.5mil + 38.5mil + 28.5mil + 38.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.209 { + proto=0; x=237.0mil; y=113.0mil; rot=90.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.210 { + proto=0; x=237.0mil; y=187.0mil; rot=90.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.178 { + x1=202.0mil; y1=67.0mil; x2=272.0mil; y2=67.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.181 { + x1=272.0mil; y1=67.0mil; x2=282.0mil; y2=92.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.184 { + x1=282.0mil; y1=92.0mil; x2=282.0mil; y2=223.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.187 { + x1=282.0mil; y1=223.0mil; x2=192.0mil; y2=223.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.190 { + x1=192.0mil; y1=223.0mil; x2=192.0mil; y2=92.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.193 { + x1=192.0mil; y1=92.0mil; x2=202.0mil; y2=67.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.196 { + string=%a.parent.refdes%; x=237.0mil; y=243.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 360.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.197 { + x1=237.0mil; y1=150.0mil; x2=237.0mil; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.200 { + x1=237.0mil; y1=150.0mil; x2=237.0mil; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.203 { + x1=237.0mil; y1=150.0mil; x2=237.0mil; y2=4.81mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.206 { + x1=237.0mil; y1=150.0mil; x2=7.0198mm; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + bottom = 1 + virtual = 1 + misc = 1 + } + } + } + } + uid = 2dW9Tvw7RTxCX0jj23YAAAAB + } + ha:subc.212 { + ha:attributes { + footprint=SOD323 SMT diode (pin 1 is cathode) + openscad=sod323.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 28.5mil + -38.5mil + -28.5mil + -38.5mil + -28.5mil + 38.5mil + 28.5mil + 38.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.244 { + proto=0; x=512.0mil; y=187.0mil; rot=270.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.245 { + proto=0; x=512.0mil; y=113.0mil; rot=270.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.213 { + x1=547.0mil; y1=233.0mil; x2=477.0mil; y2=233.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.216 { + x1=477.0mil; y1=233.0mil; x2=467.0mil; y2=208.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.219 { + x1=467.0mil; y1=208.0mil; x2=467.0mil; y2=77.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.222 { + x1=467.0mil; y1=77.0mil; x2=557.0mil; y2=77.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.225 { + x1=557.0mil; y1=77.0mil; x2=557.0mil; y2=208.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.228 { + x1=557.0mil; y1=208.0mil; x2=547.0mil; y2=233.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.231 { + string=%a.parent.refdes%; x=512.0mil; y=57.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 180.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.232 { + x1=512.0mil; y1=150.0mil; x2=512.0mil; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.235 { + x1=512.0mil; y1=150.0mil; x2=512.0mil; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.238 { + x1=512.0mil; y1=150.0mil; x2=512.0mil; y2=2.81mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.241 { + x1=512.0mil; y1=150.0mil; x2=12.0048mm; y2=150.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + bottom = 1 + virtual = 1 + misc = 1 + } + } + } + } + uid = 2dW9Tvw7RTxCX0jj23YAAAAB + } + ha:subc.72 { + ha:attributes { + footprint=SOD323 SMT diode (pin 1 is cathode) + openscad=sod323.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 28.5mil + -38.5mil + -28.5mil + -38.5mil + -28.5mil + 38.5mil + 28.5mil + 38.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.104 { + proto=0; x=188.0mil; y=425.0mil; rot=0.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.105 { + proto=0; x=262.0mil; y=425.0mil; rot=0.000000; xmirror=1; smirror=1; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.73 { + x1=142.0mil; y1=460.0mil; x2=142.0mil; y2=390.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.76 { + x1=142.0mil; y1=390.0mil; x2=167.0mil; y2=380.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.79 { + x1=167.0mil; y1=380.0mil; x2=298.0mil; y2=380.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.82 { + x1=298.0mil; y1=380.0mil; x2=298.0mil; y2=470.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.85 { + x1=298.0mil; y1=470.0mil; x2=167.0mil; y2=470.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.88 { + x1=167.0mil; y1=470.0mil; x2=142.0mil; y2=460.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.91 { + string=%a.parent.refdes%; x=318.0mil; y=425.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + onsolder=1 + } + rot = 270.000000 + } + } + ha:type { + silk = 1 + bottom = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.92 { + x1=225.0mil; y1=425.0mil; x2=225.0mil; y2=425.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.95 { + x1=225.0mil; y1=425.0mil; x2=225.0mil; y2=425.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.98 { + x1=225.0mil; y1=425.0mil; x2=6.715mm; y2=425.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.101 { + x1=225.0mil; y1=425.0mil; x2=225.0mil; y2=9.795mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + bottom = 1 + virtual = 1 + misc = 1 + } + } + } + } + uid = 2dW9Tvw7RTxCX0jj23YAAAAB + } + ha:subc.387 { + ha:attributes { + footprint=SOD323 SMT diode (pin 1 is cathode) + openscad=sod323.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 28.5mil + -38.5mil + -28.5mil + -38.5mil + -28.5mil + 38.5mil + 28.5mil + 38.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.419 { + proto=0; x=188.0mil; y=175.0mil; rot=0.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.420 { + proto=0; x=262.0mil; y=175.0mil; rot=0.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.388 { + x1=142.0mil; y1=140.0mil; x2=142.0mil; y2=210.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.391 { + x1=142.0mil; y1=210.0mil; x2=167.0mil; y2=220.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.394 { + x1=167.0mil; y1=220.0mil; x2=298.0mil; y2=220.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.397 { + x1=298.0mil; y1=220.0mil; x2=298.0mil; y2=130.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.400 { + x1=298.0mil; y1=130.0mil; x2=167.0mil; y2=130.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.403 { + x1=167.0mil; y1=130.0mil; x2=142.0mil; y2=140.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.406 { + string=%a.parent.refdes%; x=318.0mil; y=175.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 270.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.407 { + x1=225.0mil; y1=175.0mil; x2=225.0mil; y2=175.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.410 { + x1=225.0mil; y1=175.0mil; x2=225.0mil; y2=175.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.413 { + x1=225.0mil; y1=175.0mil; x2=6.715mm; y2=175.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.416 { + x1=225.0mil; y1=175.0mil; x2=225.0mil; y2=5.445mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = 2dW9Tvw7RTxCX0jj23YAAAAB + } + ha:subc.422 { + ha:attributes { + footprint=SOD323 SMT diode (pin 1 is cathode) + openscad=sod323.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 28.5mil + -38.5mil + -28.5mil + -38.5mil + -28.5mil + 38.5mil + 28.5mil + 38.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.454 { + proto=0; x=549.0mil; y=175.0mil; rot=180.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.455 { + proto=0; x=475.0mil; y=175.0mil; rot=180.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.423 { + x1=595.0mil; y1=210.0mil; x2=595.0mil; y2=140.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.426 { + x1=595.0mil; y1=140.0mil; x2=570.0mil; y2=130.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.429 { + x1=570.0mil; y1=130.0mil; x2=439.0mil; y2=130.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.432 { + x1=439.0mil; y1=130.0mil; x2=439.0mil; y2=220.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.435 { + x1=439.0mil; y1=220.0mil; x2=570.0mil; y2=220.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.438 { + x1=570.0mil; y1=220.0mil; x2=595.0mil; y2=210.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.441 { + string=%a.parent.refdes%; x=419.0mil; y=175.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 90.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.442 { + x1=512.0mil; y1=175.0mil; x2=512.0mil; y2=175.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.445 { + x1=512.0mil; y1=175.0mil; x2=512.0mil; y2=175.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.448 { + x1=512.0mil; y1=175.0mil; x2=12.0048mm; y2=175.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.451 { + x1=512.0mil; y1=175.0mil; x2=512.0mil; y2=3.445mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = 2dW9Tvw7RTxCX0jj23YAAAAB + } + ha:subc.457 { + ha:attributes { + footprint=SOD323 SMT diode (pin 1 is cathode) + openscad=sod323.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 28.5mil + -38.5mil + -28.5mil + -38.5mil + -28.5mil + 38.5mil + 28.5mil + 38.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.489 { + proto=0; x=237.0mil; y=487.0mil; rot=90.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.490 { + proto=0; x=237.0mil; y=413.0mil; rot=90.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.458 { + x1=202.0mil; y1=533.0mil; x2=272.0mil; y2=533.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.461 { + x1=272.0mil; y1=533.0mil; x2=282.0mil; y2=508.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.464 { + x1=282.0mil; y1=508.0mil; x2=282.0mil; y2=377.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.467 { + x1=282.0mil; y1=377.0mil; x2=192.0mil; y2=377.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.470 { + x1=192.0mil; y1=377.0mil; x2=192.0mil; y2=508.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.473 { + x1=192.0mil; y1=508.0mil; x2=202.0mil; y2=533.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.476 { + string=%a.parent.refdes%; x=237.0mil; y=357.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 360.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.477 { + x1=237.0mil; y1=450.0mil; x2=237.0mil; y2=450.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.480 { + x1=237.0mil; y1=450.0mil; x2=237.0mil; y2=450.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.483 { + x1=237.0mil; y1=450.0mil; x2=237.0mil; y2=10.43mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.486 { + x1=237.0mil; y1=450.0mil; x2=7.0198mm; y2=450.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = 2dW9Tvw7RTxCX0jj23YAAAAB + } + ha:subc.492 { + ha:attributes { + footprint=SOD323 SMT diode (pin 1 is cathode) + openscad=sod323.scad + } + ha:data { + li:padstack_prototypes { + + ha:ps_proto_v6.0 { + hdia=0.0; hplated=0; htop=0; hbottom=0; + li:shape { + + ha:ps_shape_v4 { + ha:combining { } + ha:layer_mask { + copper = 1 + top = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { sub=1; auto=1; } + ha:layer_mask { + top = 1 + mask = 1 + } + clearance=0.0 + li:ps_poly { + 28.5mil + -38.5mil + -28.5mil + -38.5mil + -28.5mil + 38.5mil + 28.5mil + 38.5mil + } + } + + ha:ps_shape_v4 { + ha:combining { auto=1; } + ha:layer_mask { + top = 1 + paste = 1 + } + clearance=0.0 + li:ps_poly { + 25.5mil + -35.5mil + -25.5mil + -35.5mil + -25.5mil + 35.5mil + 25.5mil + 35.5mil + } + } + } + } + } + + li:objects { + ha:padstack_ref.524 { + proto=0; x=512.0mil; y=413.0mil; rot=270.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=1 + name=1 + } + } + ha:padstack_ref.525 { + proto=0; x=512.0mil; y=487.0mil; rot=270.000000; xmirror=0; smirror=0; clearance=10.0mil; + ha:flags { + clearline=1 + } + + li:thermal { + } + + ha:attributes { + term=2 + name=2 + } + } + } + li:layers { + + ha:top-silk { + lid=0 + ha:combining { } + + li:objects { + ha:line.493 { + x1=547.0mil; y1=367.0mil; x2=477.0mil; y2=367.0mil; thickness=20.0mil; clearance=0.0; + } + ha:line.496 { + x1=477.0mil; y1=367.0mil; x2=467.0mil; y2=392.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.499 { + x1=467.0mil; y1=392.0mil; x2=467.0mil; y2=523.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.502 { + x1=467.0mil; y1=523.0mil; x2=557.0mil; y2=523.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.505 { + x1=557.0mil; y1=523.0mil; x2=557.0mil; y2=392.0mil; thickness=10.0mil; clearance=0.0; + } + ha:line.508 { + x1=557.0mil; y1=392.0mil; x2=547.0mil; y2=367.0mil; thickness=10.0mil; clearance=0.0; + } + ha:text.511 { + string=%a.parent.refdes%; x=512.0mil; y=543.0mil; scale=100; fid=0; + ha:flags { + dyntext=1 + floater=1 + } + rot = 180.000000 + } + } + ha:type { + silk = 1 + top = 1 + } + } + + ha:subc-aux { + lid=1 + ha:combining { } + + li:objects { + ha:line.512 { + x1=512.0mil; y1=450.0mil; x2=512.0mil; y2=450.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=pnp-origin + } + } + ha:line.515 { + x1=512.0mil; y1=450.0mil; x2=512.0mil; y2=450.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=origin + } + } + ha:line.518 { + x1=512.0mil; y1=450.0mil; x2=512.0mil; y2=12.43mm; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=x + } + } + ha:line.521 { + x1=512.0mil; y1=450.0mil; x2=12.0048mm; y2=450.0mil; thickness=0.1mm; clearance=0.0; + ha:attributes { + subc-role=y + } + } + } + ha:type { + top = 1 + misc = 1 + virtual = 1 + } + } + } + } + uid = 2dW9Tvw7RTxCX0jj23YAAAAB + } + } + li:layers { + + ha:top-sig { + lid=0 + group=3 + ha:combining { } + + li:objects { + } + color = {#955a5a} + } + + ha:bottom-sig { + lid=1 + group=6 + ha:combining { } + + li:objects { + } + color = {#6075b4} + } + + ha:top-gnd { + lid=2 + group=3 + ha:combining { } + + li:objects { + } + color = {#ffb9b2} + } + + ha:bottom-gnd { + lid=3 + group=6 + ha:combining { } + + li:objects { + } + color = {#a0d9ff} + } + + ha:top-vcc { + lid=4 + group=3 + ha:combining { } + + li:objects { + } + color = {#ff002c} + } + + ha:bottom-vcc { + lid=5 + group=6 + ha:combining { } + + li:objects { + } + color = {#0056ff} + } + + ha:outline { + lid=6 + group=5 + ha:combining { } + + li:objects { + } + color = {#00868b} + } + + ha:bottom-silk { + lid=7 + group=8 + ha:combining { auto=1; } + + li:objects { + } + color = {#000000} + } + + ha:top-silk { + lid=8 + group=1 + ha:combining { auto=1; } + + li:objects { + } + color = {#000000} + } + + ha:top-paste { + lid=9 + group=0 + ha:combining { auto=1; } + + li:objects { + } + color = {#cd00cd} + } + + ha:top-mask { + lid=10 + group=2 + ha:combining { sub=1; auto=1; } + + li:objects { + } + color = {#ff0000} + } + + ha:bottom-mask { + lid=11 + group=7 + ha:combining { sub=1; auto=1; } + + li:objects { + } + color = {#ff0000} + } + + ha:bottom-paste { + lid=12 + group=9 + ha:combining { auto=1; } + + li:objects { + } + color = {#cd00cd} + } + + ha:slot-plated { + lid=13 + group=10 + ha:combining { auto=1; } + + li:objects { + } + color = {#8b7355} + } + + ha:slot-unplated { + lid=14 + group=11 + ha:combining { auto=1; } + + li:objects { + } + color = {#00868b} + } + } + } + + ha:layer_stack { + li:groups { + ha:0 { + name = top_paste + ha:type { top=1; paste=1; } + li:layers { 9; } + } + ha:1 { + name = top_silk + ha:type { silk=1; top=1; } + li:layers { 8; } + } + ha:2 { + name = top_mask + ha:type { top=1; mask=1; } + li:layers { 10; } + } + ha:3 { + name = top_copper + ha:type { copper=1; top=1; } + li:layers { 0; 2; 4; } + } + ha:4 { + name = grp_4 + ha:type { substrate=1; intern=1; } + li:layers { } + } + ha:5 { + name = global_outline + ha:type { boundary=1; } + li:layers { 6; } + purpose = uroute + } + ha:6 { + name = bottom_copper + ha:type { bottom=1; copper=1; } + li:layers { 1; 3; 5; } + } + ha:7 { + name = bottom_mask + ha:type { bottom=1; mask=1; } + li:layers { 11; } + } + ha:8 { + name = bottom_silk + ha:type { silk=1; bottom=1; } + li:layers { 7; } + } + ha:9 { + name = bottom_paste + ha:type { bottom=1; paste=1; } + li:layers { 12; } + } + ha:10 { + name = pmech + ha:type { mech=1; } + li:layers { 13; } + purpose = proute + } + ha:11 { + name = umech + ha:type { mech=1; } + li:layers { 14; } + purpose = uroute + } + } + } + ha:pixmaps { + } +} Index: work/openscad/sod323.scad =================================================================== --- work/openscad/sod323.scad (nonexistent) +++ work/openscad/sod323.scad (revision 32589) @@ -0,0 +1,79 @@ +// Model for SOD323 package +// +// Copyright (C) 2020 Alexey Kosilin +// +// File distribution license: +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +// +// The above distribution license applies when the file is distributed as a +// stand alone model file or as part of a library, in both cases intended +// for reuse combined by the user with other openscad scripts. +// +// Use license: +// as a special exception, the content of the file may be +// embedded in an openscad script that represents a printed circuit board, +// for example when a board is exported by pcb-rnd. In such use case, +// the content of this file may be copied into the resulting board file +// with or without modifications, without affecting the board file's license +// in any way. +// + +module part_sod323() +{ + $fn = 30 ; + + module lead() + color ([0.9, 0.9, 0.9]) + { + translate ([0, -0.35/2, 0.4]) + rotate ([-90, 0, 0]) + rotate_extrude (angle = 90) + translate ([0.25, 0, 0]) + square ([0.15, 0.35]) ; + + translate ([0.25, -0.35/2, 0.4]) + cube ([0.15, 0.35, 1.35/2 - 0.4]) ; + + translate ([0.5, 0.35/2, 1.35/2]) + rotate ([90, -90, 0]) + rotate_extrude (angle = 90) + translate ([0.1, 0, 0]) + square ([0.15, 0.35]) ; + } + + module case() + translate ([-0.9, -0.7, 0]) + cube ([1.8, 1.4, 1.35]) ; + + translate ([-0.5-0.9, 0, 0]) + lead() ; + + mirror ([1, 0, 0]) + translate ([-0.5-0.9, 0, 0]) + lead() ; + + color ([0.5, 0.5, 0.5]) + intersection() + { + translate ([-0.7, -5, -5]) + cube ([0.3, 10, 10]) ; + + scale (1.002) + case() ; + } + + color ([0.3, 0.3, 0.3]) + case() ; +}