Electron Python API can't get pads or smd values from elements

Electron Python API can't get pads or smd values from elements

dricherP6UA6
Participant Participant
88 Views
0 Replies
Message 1 of 1

Electron Python API can't get pads or smd values from elements

dricherP6UA6
Participant
Participant

Hi,

I can't seem to be able to read the pad values (drill, x, y, etc.) nor smd values when I try to read them from the following lines of code that I used to test the access to those data (using python api):

app = adsk.core.Application.get()
board = adsk.electron.Board.cast(app.activeProduct)

elements = board.elements

logger.log(f"NB ELEMENTS: {elements.count}")
logger.log("---------------------------------")
for i in range(elements.count):
    element = elements.item(i)
    logger.log(f"ELEMENT {i} NAME: {element.name}")
    logger.log(f"ELEMENT {i} X/Y: {iu_to_mm(element.x)}/{iu_to_mm(element.y)}")
    contacts = element.package.contacts
    holes = element.package.holes

    logger.log(f"ELEMENT {i} HOLES: {holes.count}")

    holes_cnt = 0

    k=0            
    for k in range(holes.count):
        hole = holes.item(k)
        logger.log(f"ELEMENT {i} HOLE {k} DRILL: {hole.drill}")
        logger.log(f"ELEMENT {i} HOLE {k} X/Y: {iu_to_mm(hole.x)}/{iu_to_mm(hole.y)}")
        holes_cnt += 1

    logger.log(f"ELEMENT {i} CONTACTS: {contacts.count}")
    j=0
    for j in range(contacts.count):
        contact = contacts.item(j)
        smd_cnt = 0
        pad_cnt = 0
        logger.log(f"ELEMENT {i} CONTACT {j} X/Y: {iu_to_mm(contact.x)}/{iu_to_mm(contact.y)}")
        if contact.pad:
            logger.log(f"ELEMENT {i} CONTACT {j} PAD DRILL: {contact.pad.drill}")
            logger.log(f"ELEMENT {i} CONTACT {j} PAD X/Y: {iu_to_mm(contact.pad.x)}/{iu_to_mm(contact.pad.y)}")
            pad_cnt += 1
        else:
            logger.log(f"ELEMENT {i} CONTACT {j} PAD {contact.pad}")
        if contact.smd:
            smd_cnt += 1
        else:
            logger.log(f"ELEMENT {i} CONTACT {j} SMD {contact.smd}")

    logger.log("---------------------------------")

    logger.log(f"ELEMENT {i} HOLES: {str(holes_cnt)} PADS:{str(pad_cnt)} SMD: {str(smd_cnt)}")

    logger.log("---------------------------------")

 

I get the following output in the command line:

 NB ELEMENTS: 2
 ---------------------------------
 ELEMENT 0 NAME: RJ45_HOLE
 ELEMENT 0 X/Y: 10.16/38.862
 ELEMENT 0 HOLES: 2
 ELEMENT 0 HOLE 0 DRILL: 1040384
 ELEMENT 0 HOLE 0 X/Y: 5.715/0.0
 ELEMENT 0 HOLE 1 DRILL: 1040384
 ELEMENT 0 HOLE 1 X/Y: -5.715/0.0
 ELEMENT 0 CONTACTS: 10
 ELEMENT 0 CONTACT 0 X/Y: -0.635/8.89
 ELEMENT 0 CONTACT 0 PAD None
 ELEMENT 0 CONTACT 0 SMD None
 ELEMENT 0 CONTACT 1 X/Y: -1.905/6.35
 ELEMENT 0 CONTACT 1 PAD None
 ELEMENT 0 CONTACT 1 SMD None
 ELEMENT 0 CONTACT 2 X/Y: -3.175/8.89
 ELEMENT 0 CONTACT 2 PAD None
 ELEMENT 0 CONTACT 2 SMD None
 ELEMENT 0 CONTACT 3 X/Y: 0.635/6.35
 ELEMENT 0 CONTACT 3 PAD None
 ELEMENT 0 CONTACT 3 SMD None
 ELEMENT 0 CONTACT 4 X/Y: -4.445/6.35
 ELEMENT 0 CONTACT 4 PAD None
 ELEMENT 0 CONTACT 4 SMD None
 ELEMENT 0 CONTACT 5 X/Y: 1.905/8.89
 ELEMENT 0 CONTACT 5 PAD None
 ELEMENT 0 CONTACT 5 SMD None
 ELEMENT 0 CONTACT 6 X/Y: 3.175/6.35
 ELEMENT 0 CONTACT 6 PAD None
 ELEMENT 0 CONTACT 6 SMD None
 ELEMENT 0 CONTACT 7 X/Y: 4.445/8.89
 ELEMENT 0 CONTACT 7 PAD None
 ELEMENT 0 CONTACT 7 SMD None
 ELEMENT 0 CONTACT 8 X/Y: 7.7724/3.048
 ELEMENT 0 CONTACT 8 PAD None
 ELEMENT 0 CONTACT 8 SMD None
 ELEMENT 0 CONTACT 9 X/Y: -7.7724/3.048
 ELEMENT 0 CONTACT 9 PAD None
 ELEMENT 0 CONTACT 9 SMD None
 ---------------------------------
 ELEMENT 0 HOLES: 2 PADS:0 SMD: 0
 ---------------------------------
 ELEMENT 1 NAME: U$1
 ELEMENT 1 X/Y: 2.3622/20.7264
 ELEMENT 1 HOLES: 0
 ELEMENT 1 CONTACTS: 9
 ELEMENT 1 CONTACT 0 X/Y: 14.605/0.0
 ELEMENT 1 CONTACT 0 PAD None
 ELEMENT 1 CONTACT 0 SMD None
 ELEMENT 1 CONTACT 1 X/Y: 12.7/-1.905
 ELEMENT 1 CONTACT 1 PAD None
 ELEMENT 1 CONTACT 1 SMD None
 ELEMENT 1 CONTACT 2 X/Y: 10.795/0.0
 ELEMENT 1 CONTACT 2 PAD None
 ELEMENT 1 CONTACT 2 SMD None
 ELEMENT 1 CONTACT 3 X/Y: 8.89/-1.905
 ELEMENT 1 CONTACT 3 PAD None
 ELEMENT 1 CONTACT 3 SMD None
 ELEMENT 1 CONTACT 4 X/Y: 7.1374/0.0
 ELEMENT 1 CONTACT 4 PAD None
 ELEMENT 1 CONTACT 4 SMD None
 ELEMENT 1 CONTACT 5 X/Y: 5.08/-1.905
 ELEMENT 1 CONTACT 5 PAD None
 ELEMENT 1 CONTACT 5 SMD None
 ELEMENT 1 CONTACT 6 X/Y: 3.175/0.0
 ELEMENT 1 CONTACT 6 PAD None
 ELEMENT 1 CONTACT 6 SMD None
 ELEMENT 1 CONTACT 7 X/Y: 1.27/-1.905
 ELEMENT 1 CONTACT 7 PAD None
 ELEMENT 1 CONTACT 7 SMD None
 ELEMENT 1 CONTACT 8 X/Y: 7.9375/-6.35
 ELEMENT 1 CONTACT 8 PAD None
 ELEMENT 1 CONTACT 8 SMD None
 ---------------------------------
 ELEMENT 1 HOLES: 0 PADS:0 SMD: 0
 ---------------------------------

 
I tested it is a very simple board with a RJ45 jack with 2 NPTH and 10 PTH and a connector with 9 PTH so it is normal that I don't have any SMDs but I have tested it with a board that has exclusively SMD components (300+) and it still ouputs none.

If I read the pads with the signals I can read the values of the different properties.

0 Likes
89 Views
0 Replies
Replies (0)