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