#!/usr/bin/env python

from __future__ import print_function

import sys
from pcbnew import *

filename=sys.argv[1]

pcb = LoadBoard(filename)

ToUnits = ToMM
FromUnits = FromMM
#ToUnits=ToMils
#FromUnits=FromMils

print("LISTING VIAS:")

for item in pcb.GetTracks():
    if type(item) is VIA:

        pos = item.GetPosition()
        drill = item.GetDrillValue()
        width = item.GetWidth()
        print(" * Via:   %s - %f/%f " % (ToUnits(pos), ToUnits(drill), ToUnits(width)))

    elif type(item) is TRACK:

        start = item.GetStart()
        end = item.GetEnd()
        width = item.GetWidth()

        print(" * Track: %s to %s, width %f" % (ToUnits(start), ToUnits(end), ToUnits(width)))

    else:
        print("Unknown type    %s" % type(item))

print("")
print("LIST DRAWINGS:")

for item in pcb.GetDrawings():
    if type(item) is TEXTE_PCB:
        print("* Text:    '%s' at %s" % (item.GetText(), item.GetPosition()))
    elif type(item) is DRAWSEGMENT:
        print("* Drawing: %s" % item.GetShapeStr())  # dir(item)
    else:
        print(type(item))

print("")
print("LIST MODULES:")

for module in pcb.GetModules():
    print("* Module: %s at %s" % (module.GetReference(), ToUnits(module.GetPosition())))

print("")
print("Nets cnt: ", pcb.GetNetCount())
print("track w cnt:", len(pcb.GetTrackWidthList()))
print("via s cnt:", len(pcb.GetViasDimensionsList()))

print("")
print("LIST ZONES:", pcb.GetAreaCount())

for idx in range(0, pcb.GetAreaCount()):
    zone=pcb.GetArea(idx)
    print("zone:", idx, "priority:", zone.GetPriority(), "netname", zone.GetNetname())

print("")
print("NetClasses:", pcb.GetNetClasses().GetCount())