Finding Columns (Python)¶
Finding Columns (Python)¶
1ot = impact.gui.output_toolbox
2db = impact.active_database
3
4def DescribeColumn(name, column):
5 if column.isNone():
6
7 ot.add("Unable to locate column '" + name + "'")
8
9 else:
10
11 ot.add("Found Column: " + name)
12 ot.add(" Name: " + column.name)
13 ot.add(" Type: " + str(column.type))
14
15 if column.known_column != ipDocumentKnownColumn.dkcCustom:
16 ot.add(" KnownColumn: " + str(column.known_column))
17
18docSettings = db.settings.document_settings
19
20ot.add("=== Find all document columns ===")
21defDocType = docSettings.types.default_document_type
22allColumns = defDocType.columns
23
24ot.add("Default Document Type: " + defDocType.name + " (" + defDocType.key + ")")
25ot.add("All Document Columns: " + allColumns.count)
26
27# find known document columns
28DescribeColumn("ipDocumentKnownColumn.dkcName", allColumns.known_item(ipDocumentKnownColumn.dkcName))
29DescribeColumn("ipDocumentKnownColumn.dkcSize", allColumns.known_item(ipDocumentKnownColumn.dkcSize))
30DescribeColumn("ipDocumentKnownColumn.dkcGroup", allColumns.known_item(ipDocumentKnownColumn.dkcGroup))
31
32# find custom columns (ensures KnownColumn == ipDocumentKnownColumn.dkcCustom)
33DescribeColumn("DC_WIDTH", allColumns.custom_item("DC_WIDTH"))
34DescribeColumn("DC_HEIGHT", allColumns.custom_item("DC_HEIGHT"))
35
36# find any column by name (not recommended for KnownColumn != ipDocumentKnownColumn.dkcCustom)
37DescribeColumn("DC_NAME", allColumns.item("DC_NAME"))
38
39ot.add("=== Find columns for a specific IDocumentType ===")
40cadDocType = None
41try:
42 cadDocType = docSettings.types.item("impact:cad")
43except Exception as exc:
44 impact.gui.output_toolbox.add(f"Failed to create object via doc_settings.types.item(): {exc}")
45cadColumns = cadDocType.columns
46
47ot.add("CAD Document Type: " + cadDocType.name + " (" + cadDocType.key + ")")
48ot.add("CAD Document Columns: " + cadColumns.count)
49
50# find known columns for CAD document type
51DescribeColumn("ipDocumentKnownColumn.dkcName", cadColumns.known_item(ipDocumentKnownColumn.dkcName))
52DescribeColumn("ipDocumentKnownColumn.dkcSize", cadColumns.known_item(ipDocumentKnownColumn.dkcSize))
53
54# find custom columns for CAD document type (should fail in typical configuration)
55DescribeColumn("DC_WIDTH", cadColumns.custom_item("DC_WIDTH"))
56
57ot.clear()