Skip to content

Instantly share code, notes, and snippets.

@WhiteBoardDev
Created September 29, 2016 07:55
Show Gist options
  • Save WhiteBoardDev/93ca0ff90128e5a81d689c6d00d1aecf to your computer and use it in GitHub Desktop.
Save WhiteBoardDev/93ca0ff90128e5a81d689c6d00d1aecf to your computer and use it in GitHub Desktop.
import copy
class Part:
part_id = 0
description = 0
level = 0
class PartRelationship:
part_id = 0
parent_part_id = 0
print "Hello, and welcome to the Bill of Materials builder POC"
parts = []
def printPart(part):
print str(part.part_id) + " | " + part.desc + " | " + str(part.level)
def addToMasterPartsList(desc):
part = Part()
part.part_id = len(parts) + 1
part.desc = desc
parts.append(part)
addToMasterPartsList("Part1")
addToMasterPartsList("Part2")
addToMasterPartsList("Part3")
addToMasterPartsList("Part4")
addToMasterPartsList("Part5")
addToMasterPartsList("Part6")
print "\n\n----- Master Parts List ----"
for part in parts:
printPart(part)
part_relationships = []
def addPartRelationship(part_id, parent_part_id):
part_relationship = PartRelationship()
part_relationship.part_id = part_id
part_relationship.parent_part_id = parent_part_id
part_relationships.append(part_relationship)
addPartRelationship(5, 3)
addPartRelationship(4, 2)
addPartRelationship(2, 1)
addPartRelationship(3, 1)
addPartRelationship(6, 5)
print "\n\n------ Part Relationships -----"
for part_relationship in part_relationships:
print str(part_relationship.part_id) + " | " + str(part_relationship.parent_part_id)
root_part_id = raw_input("What part id would you like to use to build the bom?")
print "you have choosen " + root_part_id
root_part = copy.deepcopy(parts[int(root_part_id) - 1])
root_part.level = 0
print "\n\n----- Building BOM based off of root part " + str(root_part.part_id) + " -----"
traverse_stack = []
traverse_stack.append(root_part)
master_bom_list = [root_part]
while len(traverse_stack) > 0:
part = traverse_stack.pop()
print "current part " + str(part.part_id)
for part_relationship in part_relationships:
if part.part_id == part_relationship.parent_part_id:
print "--- child " + str(part_relationship.part_id)
child_part = copy.deepcopy(parts[part_relationship.part_id - 1])
child_part.level = part.level + 1
master_bom_list.append(child_part)
traverse_stack.append(child_part)
print "\n\n----- Master Bom Created -----"
print "part_id | desc | level"
print "-----------------------------"
for part in master_bom_list:
printPart(part)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment