Examples

Here are some short examples using Swoop.

Extract the Netlist From a Schematic

sch = Swoop.EagleFile.from_file("foo.sch")
for n in (Swoop.From(sch).
          get_sheets().   # get all the sheets
          get_nets().     # get all the nets in the sheets
          get_name().     # get all the names of the nets
          unique().       # remove duplicates
          sort()):        # sort them
   print n + " : " + " ".join(Swoop.From(s).
                              get_sheets().    # get all the sheets
                              get_net(n).      # get all the nets with name n
                              get_segments().  # get all their segments
                              get_pinrefs().   # get all their pin references
                              map(lambda x: str(x.get_part())+ "." + str(x.get_pin())). # combine part name and pin name
                              sort())          # sort the result.

Will yield something like this:

D5 : JP4.7 U1.PD5(T1)
D6 : JP4.6 U1.PD6(AIN0)
D7 : R5.1 U1.PD7(AIN1)
D8 : JP4.5 U1.PB0(ICP)
D9 : JP3.1 U1.PB1(OC1A)
DTR/RTS : C4.2 FTDI.6
GND : C1.2 C1A.2 C1B.2 C3.2 C5.2 D3.C D4.C FTDI.1 FTDI.2 GND10.GND GND11.GND GND13.GND GND14.GND GND15.GND GND16.GND GND17.GND GND3.GND GND4.GND GND9.GND J1.2 J2.2 JP1.GND JP4.2 LED1.C LED2.C R1.1 R1A.1 SW1.1 SW1.4 SW1.5 U1.GND U1.GND@1 U1.GND@2 U2.GND U2A.GND U2B.GND Y1.GND

Listing All Drill Sizes Used in a Board

b = Swoop.EagleFile.from_file("foo.brd")
print (Swoop.From(b).
       get_plain_elements().   # Get the Lines, holes, arcs, polygons, etc. not attached to any package
       with_type(Swoop.Hole).  # We just want the holes.
       add(Swoop.From(b).      # Add some more items to this group of EFPs
           get_elements().     # These are the electrical components
           find_package().     # Grab the package they refer to
           get_pads()).        # get all the pads (i.e., through-hole pins)
       get_drill().            # get the drill attributes for the holes and pads
       sort().                 # sort them
       unique().               # remove duplicates
       unpack())               # get values as python list.

Will yield something like this:

[1.0, 0.8, 1.1, 1.3, 0.73, 0.7, 1.06]