コード例 #1
0
def exportPcbway(board, outputdir, assembly, schematic, ignore, manufacturer,
                 partnumber, description, notes, soldertype, footprint,
                 corrections, missingerror, nboards):
    """
    Prepare fabrication files for PCBWay including their assembly service
    """
    loadedBoard = pcbnew.LoadBoard(board)
    refsToIgnore = parseReferences(ignore)
    removeComponents(loadedBoard, refsToIgnore)
    Path(outputdir).mkdir(parents=True, exist_ok=True)

    gerberdir = os.path.join(outputdir, "gerber")
    shutil.rmtree(gerberdir, ignore_errors=True)
    gerberImpl(board, gerberdir, settings=exportSettingsPcbway)
    shutil.make_archive(os.path.join(outputdir, "gerbers"), "zip", outputdir,
                        "gerber")

    if not assembly:
        return
    if schematic is None:
        raise RuntimeError(
            "When outputing assembly data, schematic is required")
    components = extractComponents(schematic)
    correctionFields = [x.strip() for x in corrections.split(",")]
    manufacturerFields = [x.strip() for x in manufacturer.split(",")]
    partNumberFields = [x.strip() for x in partnumber.split(",")]
    descriptionFields = [x.strip() for x in description.split(",")]
    notesFields = [x.strip() for x in notes.split(",")]
    typeFields = [x.strip() for x in soldertype.split(",")]
    footprintFields = [x.strip() for x in footprint.split(",")]
    addVirtualToRefsToIgnore(refsToIgnore, loadedBoard)
    bom = collectBom(components, manufacturerFields, partNumberFields,
                     descriptionFields, notesFields, typeFields,
                     footprintFields, refsToIgnore)

    missingFields = False
    for type, references in bom.items():
        _, _, manu, partno, _, _ = type
        if not manu or not partno:
            missingFields = True
            for r in references:
                print(
                    f"WARNING: Component {r} is missing manufacturer and/or part number"
                )
    if missingFields and missingerror:
        sys.exit("There are components with missing ordercode, aborting")

    posData = collectPosData(loadedBoard, correctionFields, bom=components)
    posDataToFile(posData, os.path.join(outputdir, "pos.csv"))
    types = collectSolderTypes(loadedBoard)
    bomToCsv(bom, os.path.join(outputdir, "bom.csv"), nboards, types)
コード例 #2
0
ファイル: jlcpcb.py プロジェクト: runger1101001/KiKit
def exportJlcpcb(board, outputdir, assembly, schematic, forcesmd, ignore,
                 field, corrections, missingerror):
    """
    Prepare fabrication files for JLCPCB including their assembly service
    """
    loadedBoard = pcbnew.LoadBoard(board)
    refsToIgnore = parseReferences(ignore)
    removeComponents(loadedBoard, refsToIgnore)
    Path(outputdir).mkdir(parents=True, exist_ok=True)

    gerberdir = os.path.join(outputdir, "gerber")
    shutil.rmtree(gerberdir, ignore_errors=True)
    gerberImpl(board, gerberdir)
    shutil.make_archive(os.path.join(outputdir, "gerbers"), "zip", outputdir,
                        "gerber")

    if not assembly:
        return
    if schematic is None:
        raise RuntimeError(
            "When outputing assembly data, schematic is required")
    correctionFields = [x.strip() for x in corrections.split(",")]
    components = extractComponents(schematic)
    ordercodeFields = [x.strip() for x in field.split(",")]
    bom = collectBom(components, ordercodeFields, refsToIgnore)

    missingFields = False
    for type, references in bom.items():
        _, _, lcsc = type
        if not lcsc:
            missingFields = True
            for r in references:
                print(f"WARNING: Component {r} is missing ordercode")
    if missingFields and missingerror:
        sys.exit("There are components with missing ordercode, aborting")

    posData = collectPosData(loadedBoard,
                             correctionFields,
                             posFilter=genPosFilter(forcesmd),
                             bom=components)
    posDataToFile(posData, os.path.join(outputdir, "pos.csv"))
    bomToCsv(bom, os.path.join(outputdir, "bom.csv"))