Count and Find Layers by Query

Count and Find Layers by Query
 1# This example shows how to count and find ONE_UP layers using a Database Query
 2# having a single criterion on LAYERS.l_name
 3
 4ot = impact.gui.output_toolbox
 5ot.clear()
 6
 7db = impact.active_database
 8settings = db.find_master_tool_settings(ipMasterSettingType.mstDBQuery)
 9
10if settings is not None:
11    query_name = "Name contains"
12    setting = settings.item(query_name)
13    if not setting.isNone():
14        criteria = setting.criteria
15        criterion = criteria.item(1)
16        criterion.value = "base"
17
18        CountOpts = impact.creator.count_items_options()
19        CountOpts.query_mts = setting
20        CountOpts.layer_table_context = "ONE_UP"
21        q_count = db.count_layers(CountOpts)
22        ot.add("Found " + str(q_count) + " items")
23
24        FindOpts = impact.creator.find_items_options()
25        FindOpts.query_mts = setting
26        FindOpts.layer_table_context = "ONE_UP"
27        FindOpts.order_ascending = False
28        FindOpts.order_by = "DRAWINGS.D_NAME"
29        layers = db.find_layers(FindOpts)
30        for layer in layers:
31            proj_name = layer.database_item.reference
32            ot.add(str(proj_name) + " - " + layer.name)
33    else:
34        ot.add("Count not find query: " + str(query_name))