Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: IPC-2581 Import #1731

Open
s-ol opened this issue Jan 24, 2025 · 0 comments
Open

Feature Request: IPC-2581 Import #1731

s-ol opened this issue Jan 24, 2025 · 0 comments

Comments

@s-ol
Copy link

s-ol commented Jan 24, 2025

Disclaimer: I'm aware this is a very big feature and am posting this mainly to start a conversation around the topic of interoperability in the ecosystem. I'd also be happy to collaborate on an implementation in the future.

IPC-2581 is an industry standard file format for exchanging PCB design information. The format contains Board, Package, Part and Placement information in a single XML file and is roughly equivalent to the concept of an OpenPNP job in scope.

If OpenPNP were able to import IPC-2581 files, it would potentially be able to load Part, Package, Board and Job information automatically from resources provided by the EDA package, improving the job setup experience dramatically.

The IPC-2581 standard is quite extensive and EDA packages will implement different sets of information. As a reference, KiCAD merged IPC-2581 fabrication output a bit over a year ago, and currently outputs Package definitions like the following:

    <Package name="KI:PG1350_1" type="OTHER" pinOne="1" pinOneOrientation="OTHER">
      <Outline>
        <Polygon>
          <PolyBegin x="7.495" y="7.495"/>
          <PolyStepSegment x="7.495" y="-7.495"/>
          <PolyStepSegment x="-7.495" y="-7.495"/>
          <PolyStepSegment x="-7.495" y="7.495"/>
          <PolyStepSegment x="7.495" y="7.495"/>
        </Polygon>
        <LineDescRef id="LINE_1"/>
      </Outline>
      <PickupPoint x="0.0" y="0.0"/>
      <SilkScreen> ... (graphical data) ...</SilkScreen>
      <AssemblyDrawing>
        <Outline>
          <Polygon>...</Polygon>
          <LineDescRef id="LINE_3"/>
        </Outline>
        <Marking markingUsage="NONE">
          <UserSpecial> ... (graphical data) ...</UserSpecial>
        </Marking>
      </AssemblyDrawing>
      <Pin number="PIN:1" electricalType="ELECTRICAL" type="THRU">
        <Location x="-5.0" y="-3.80"/>
        <StandardPrimitiveRef id="CIRCLE_3"/>
      </Pin>
      <Pin number="PIN:2" electricalType="ELECTRICAL" type="THRU">
        <Location x="0.0" y="-5.90"/>
        <StandardPrimitiveRef id="CIRCLE_3"/>
      </Pin>
    </Package>

As you can see a lot of the information relevant to OpenPNP is included, including Pad and Outline Geometry. The standard also includes a way to specify part height, which KiCAD doesn't currently capture (but could feasibly expose through footprint attributes).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant