Created
September 29, 2016 07:55
-
-
Save WhiteBoardDev/93ca0ff90128e5a81d689c6d00d1aecf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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