Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.

Python Script - Adding Item Number To BOM Export

isocam
Collaborator

Python Script - Adding Item Number To BOM Export

isocam
Collaborator
Collaborator

Can anybody help?

 

I have the following Python script.....

 

def ExportBomFile(BomFileName):
ui = None
try:
app = adsk.core.Application.get()

ui = app.userInterface

design = adsk.fusion.Design.cast(app.activeProduct)

component: adsk.fusion.Component

for idx, component in enumerate(list(design.allComponents)):


PartQuantity = "{:>4}".format(len(design.rootComponent.allOccurrencesByComponent(component)))

 

PartNumber = re.split(' v\d+', component.partNumber)[0]


ItemNumber = ????????

ui.messageBox(ItemNumber, 'Fusion 360', 0, 3)

 

except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

 

Does anybody know how to add the item number to the script as shown in the attached picture?

 

Many thanks in advance!

 

Darren

0 Likes
Reply
Accepted solutions (1)
277 Views
1 Reply
Reply (1)

Jorge_Jaramillo
Collaborator
Collaborator
Accepted solution

Hi @isocam ,

 

Give a try to this recursive function:

 

def ExportBomFile_recursive(BomFileName, component, item_id, PartQuantity):
    try:
        if item_id:
            PartNumber = re.split(' v\d+', component.partNumber)[0]
            ui.messageBox(f'{item_id} | {PartQuantity} | {PartNumber}', 'Fusion 360', 0, 3)
        unique_components = []
        sub_components = []
        for occurrence in component.occurrences:
            if occurrence.component and occurrence.component not in unique_components:
                unique_components.append(occurrence.component)
            sub_components.append(occurrence.component)
        grouped_components = [(comp, sub_components.count(comp)) for comp in unique_components]
        idx = 1
        item_id = f'{item_id}{"." if item_id else ""}'
        for (component, quantity) in grouped_components:
            ExportBomFile_recursive(BomFileName, component, f'{item_id}{idx}', quantity)
            idx += 1
    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

 

 

You can start it by calling:

 

ExportBomFile_recursive('/tmp/bom.txt', des.rootComponent, "", 0)

 

 

You must complete the code regarding adding the results to the BOM file.

 

Hope this help.

 

Regards,
Jorge

1 Like