This commit is contained in:
Brendan Haines 2022-09-21 01:19:35 -06:00
parent 6d35a1f8a1
commit 5fb3448f9e

View File

@ -7,7 +7,6 @@ from zipfile import ZipFile
import numpy as np import numpy as np
import regex as re import regex as re
from retry import retry
from selenium import webdriver from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import By from selenium.webdriver.support.select import By
@ -29,7 +28,6 @@ PARTS = [
URL_STEP = "https://www.snapeda.com/parts/{0}/Samtec/embed/?ref=samtec" URL_STEP = "https://www.snapeda.com/parts/{0}/Samtec/embed/?ref=samtec"
# @retry(tries=10, delay=1)
def download_step_samtec(part: str): def download_step_samtec(part: str):
print(part) print(part)
with TemporaryDirectory(prefix=str(dir_ / "tmp") + "/") as tmp: with TemporaryDirectory(prefix=str(dir_ / "tmp") + "/") as tmp:
@ -95,6 +93,7 @@ def footprint_samtec(part: str, lib: Optional[Union[Path, str]] = None) -> str:
# lead_style = { # lead_style = {
# 5: # 5:
# }[int(match[4])] # }[int(match[4])]
lead_style = "vertical"
plating = { plating = {
"F": "Gold flash on post, Matte Tin on tail", "F": "Gold flash on post, Matte Tin on tail",
"L": '10 µ" (0.25 µm) Gold on post, Matte Tin on tail', "L": '10 µ" (0.25 µm) Gold on post, Matte Tin on tail',
@ -108,6 +107,10 @@ def footprint_samtec(part: str, lib: Optional[Union[Path, str]] = None) -> str:
# only outer columns filled # only outer columns filled
cols = 2 cols = 2
fp_name = f"PinHeader_{cols}x{rows:02d}_0.1in_{part}" fp_name = f"PinHeader_{cols}x{rows:02d}_0.1in_{part}"
description = (
f"Header, Male, {cols}x{rows:02d}, {lead_style}, {plating}{', high temperature' if high_temp else ''}"
)
keywords = ["header", "pin"]
hole_diam = 0.040 * INCH hole_diam = 0.040 * INCH
pad_size = 0.075 * INCH pad_size = 0.075 * INCH
@ -122,6 +125,8 @@ def footprint_samtec(part: str, lib: Optional[Union[Path, str]] = None) -> str:
( (
f'(footprint "{fp_name}" (version {now.strftime("%Y%m%d")}) (generator pcbnew) (layer "F.Cu")', f'(footprint "{fp_name}" (version {now.strftime("%Y%m%d")}) (generator pcbnew) (layer "F.Cu")',
r" (attr through_hole)", r" (attr through_hole)",
f' (descr "{description}")',
f' (tags "{" ".join(keywords)}")',
f' (fp_text reference "REF**" (at {center[0]} {-2.032}) (layer "F.SilkS")', f' (fp_text reference "REF**" (at {center[0]} {-2.032}) (layer "F.SilkS")',
r" (effects (font (size 0.762 0.762) (thickness 0.127)))", r" (effects (font (size 0.762 0.762) (thickness 0.127)))",
r" )", r" )",
@ -131,13 +136,17 @@ def footprint_samtec(part: str, lib: Optional[Union[Path, str]] = None) -> str:
r' (fp_text user "${REFERENCE}" ' f'(at {center[0]} {center[1]} 90) (layer "F.Fab")', r' (fp_text user "${REFERENCE}" ' f'(at {center[0]} {center[1]} 90) (layer "F.Fab")',
r" (effects (font (size 1 1) (thickness 0.15)))", r" (effects (font (size 1 1) (thickness 0.15)))",
r" )", r" )",
f" (fp_rect (start {-0.05 * INCH} {-0.05 * INCH}) (end {0.05 * INCH + strobe[0] * (cols - 1)} {0.05 * INCH + strobe[1] * (rows - 1)})", f" (fp_rect (start {-0.05 * INCH} {-0.05 * INCH}) "
f"(end {0.05 * INCH + strobe[0] * (cols - 1)} {0.05 * INCH + strobe[1] * (rows - 1)})",
f' (stroke (width {SILK_WIDTH}) (type default)) (fill none) (layer "F.SilkS")' r" )", f' (stroke (width {SILK_WIDTH}) (type default)) (fill none) (layer "F.SilkS")' r" )",
f' (fp_line (start {-0.05 * INCH} {0.05 * INCH}) (end {0.05 * INCH} {0.05 * INCH}) (layer "F.SilkS") (width {SILK_WIDTH}))', f" (fp_line (start {-0.05 * INCH} {0.05 * INCH}) (end {0.05 * INCH} {0.05 * INCH}) "
f' (fp_line (start {0.05 * INCH} {-0.05 * INCH}) (end {0.05 * INCH} {0.05 * INCH}) (layer "F.SilkS") (width {SILK_WIDTH}))', f'(layer "F.SilkS") (width {SILK_WIDTH}))',
f" (fp_line (start {0.05 * INCH} {-0.05 * INCH}) (end {0.05 * INCH} {0.05 * INCH}) "
f'(layer "F.SilkS") (width {SILK_WIDTH}))',
*[ *[
f' (pad "{pad + 1}" thru_hole {"rect" if pad == 0 else "circle"} ' f' (pad "{pad + 1}" thru_hole {"rect" if pad == 0 else "circle"} '
f"(at {strobe[0] * (pad % cols)} {strobe[1] * int(pad / cols)}) (size {pad_size} {pad_size}) (drill {hole_diam}) (layers *.Cu *.Mask))" f"(at {strobe[0] * (pad % cols)} {strobe[1] * int(pad / cols)}) "
f"(size {pad_size} {pad_size}) (drill {hole_diam}) (layers *.Cu *.Mask))"
for pad in range(rows * cols) for pad in range(rows * cols)
], ],
f' (model "/home/brendan/Documents/projects/kicad/samtec.pretty/3dshapes/{part}.stp"', f' (model "/home/brendan/Documents/projects/kicad/samtec.pretty/3dshapes/{part}.stp"',