Advanced Release¶
Advanced Release¶
1# Advanced Release example
2# to run this script you will need a customer with code "(DEFAULT)"
3# and a project folder called "COMTests"
4# and you need not to already have a project called "COM Update Test"
5
6
7db = impact.active_database
8
9
10def describe_action(action):
11 if action == ipReleaseAction.raUpdate:
12 impact.gui.output_toolbox.add("Action: Updating")
13 elif action == ipReleaseAction.raDiscard:
14 impact.gui.output_toolbox.add("Action: Discarding")
15 elif action == ipReleaseAction.raRelease:
16 impact.gui.output_toolbox.add("Action: Releasing")
17 elif action == ipReleaseAction.raKeepOut:
18 impact.gui.output_toolbox.add("Action: Keeping Out")
19
20def describe_release_action(ra):
21 describe_action(ra.action)
22 impact.gui.output_toolbox.add("Comment: " + str(ra.comment))
23
24 impact.gui.output_toolbox.add("Keep Working: " + str(ra.keep_working))
25 impact.gui.output_toolbox.add("Lock: " + str(ra.lock))
26 impact.gui.output_toolbox.add("Create Revision: " + str(ra.create_revision))
27
28 if ra.reassign_to is not None:
29 impact.gui.output_toolbox.add("Reassign To: " + str(ra.reassign_to.login_id))
30 impact.gui.output_toolbox.add("Reassign without update: " + str(ra.reassign_without_update))
31
32 impact.gui.output_toolbox.add("customer Changed: " + str(ra.customer_changed))
33 impact.gui.output_toolbox.add("Project Info Changed: " + str(ra.project_info_changed))
34
35 impact.gui.output_toolbox.add("Release Layer Count: " + str(ra.layers.count))
36
37 for layer in ra.layers:
38 impact.gui.output_toolbox.add("Layer Key: " + str(layer.key))
39 impact.gui.output_toolbox.add("Layer Name: " + str(layer.name))
40 impact.gui.output_toolbox.add("Type: " + str(layer.type))
41 impact.gui.output_toolbox.add("Type Key: " + str(layer.type_key))
42 impact.gui.output_toolbox.add("Modified: " + str(layer.modified))
43 describe_action(layer.action)
44 impact.gui.output_toolbox.add("Added: " + str(layer.added))
45 impact.gui.output_toolbox.add("Deleted: " + str(layer.deleted))
46
47
48impact.gui.output_toolbox.clear()
49
50drawing = db.create_item(ipDrawingType.dtProject, "")
51if drawing is not None:
52 impact.gui.output_toolbox.add("Created new project")
53
54 cus = db.customers.find_by_code("(DEFAULT)")
55 if cus is not None:
56 drawing.customer = cus
57
58 # Create three layers A, B and C
59 drawing.active_layer.full_name = "A"
60 drawing.layers.add("B", "ONE_UP", drawing.active_layer)
61 drawing.layers.add("C", "ONE_UP", drawing.active_layer)
62
63 impact.gui.output_toolbox.add("Finding folder r'\\COMTests'")
64 folder = db.projects.find("COMTests")
65
66 if folder is not None:
67 if drawing.save_as("", "COM Update Test", "", folder, True):
68 impact.gui.output_toolbox.add("Successfully saved project")
69
70 db_item = drawing.database_item
71
72 # Modify two of the layers in the drawing and save
73 drawing.active_layer = drawing.layers.item("A")
74 drawing.active_layer.active_block.move_ad(0, 0)
75 drawing.active_layer.active_block.line_ad(100, 100)
76
77 drawing.active_layer = drawing.layers.item("C")
78 drawing.active_layer.active_block.move_ad(0, 0)
79 drawing.active_layer.active_block.line_ad(100, -100)
80
81 if drawing.save():
82 ra = db_item.release_action
83
84 ra.action = ipReleaseAction.raUpdate
85 ra.comment = "Updated from COM"
86 ra.create_revision = True
87 ra.keep_working = False
88
89 describe_release_action(ra)
90
91 if db_item.close_and_release():
92 impact.gui.output_toolbox.add("Successfully closed and released the project")
93 else:
94 impact.gui.output_toolbox.add("Error: Unable to release the project")
95 else:
96 impact.gui.output_toolbox.add("Error: Unable to save the modified project")
97 else:
98 impact.gui.output_toolbox.add("Error: Unable to save the new project")
99 else:
100 impact.gui.output_toolbox.add("Error: Unable to find project folder")
101 else:
102 impact.gui.output_toolbox.add("Error: Unable to find customer")
103else:
104 impact.gui.output_toolbox.add("Error: Unable to create new project")