tagEditing

Example use of tag functions from vrScenegraphService and vrMetadataService.

snippets/tagEditing.py
 1# © 2024 Autodesk, Inc. All rights reserved.
 2
 3# Changing node tags with API v2.
 4
 5# add multiple tags to selected nodes. Note: only selected nodes are tagged, not their children.
 6selected = vrScenegraphService.getSelectedNodes()
 7vrMetadataService.addTags(selected, ["TagA", "TagB"])
 8
 9# add a tag to materials
10materials = [node.getMaterial() for node in selected if not node.getMaterial().isNull()]
11vrMetadataService.addTags( materials, ["TagA"] )
12
13# get all nodes with TagA
14nodes = vrScenegraphService.getNodesWithAnyTag( ["TagA"])
15print("Nodes with TagA:", len(nodes))
16for n in nodes:
17    print(n.getName())
18
19# get all objects with TagA
20objects = vrMetadataService.getObjectsWithTag( "TagA")
21print("Objects with TagA:", len(objects))
22for o in objects:
23    # print(type(o))
24    if o.isType(vrdNode):
25        print("node:", vrdNode(o).getName())
26    elif o.isType(vrdMaterial):
27        print("material:", vrdMaterial(o).getName())
28
29
30# check if a given node has a tag
31print(vrMetadataService.hasTag( vrScenegraphService.getSelectedNode(), "TagB"))
32
33# remove the tag from all nodes
34vrMetadataService.removeTags( vrScenegraphService.getNodesWithAnyTag( ["TagA"]), ["TagA"])
35
36# remove the tag from all objects
37vrMetadataService.removeTags( vrMetadataService.getObjectsWithTag( "TagA"), ["TagA"])