vrNodeService

vrNodeService

(继承 vrBaseService

提供用于处理 vrdNode 的辅助函数的服务。

TraverseChoice

定义下一个导线测量迭代的选择。

移动到下一个节点(子节点或同级节点)。

Continue

跳过所有子节点并继续下一个同级节点。

Skip

终止遍历。

Quit

摘要

函数:
信号:

函数

vrNodeService.clearFindCache()

清除查找缓存。

查找缓存是内部缓存结构,可加快 findNode(s) 命令的执行速度。更改场景图形后,findcache 不再有效,需要重建!vrNodeService.clearFindCache() 使缓存无效,因此所有查找调用将不再使用缓存,从而导致搜索时间更长。

vrNodeService.cloneNodes(nodes)

从场景图形克隆节点列表。

参数:nodes (List[vrdNode]) - 要克隆的节点的列表。
返回值:克隆节点的列表。
返回值类型:List[vrdNode]

vrNodeService.findNode(name, wildcard=False, includeComponents=False, root=vrdNode(), caseSensitive=True)

通过名称查找节点。

参数:
  • name (string) - 节点的名称。
  • wildcard (bool) - 使用通配符匹配。
  • includeComponents (bool) - 搜索以下壳。
  • root (vrdNode) - 搜索将从此节点开始。
  • caseSensitive (bool) - 如果设置为 False,则搜索不区分大小写
返回值:

找到的节点。

返回值类型:

vrdNode

vrNodeService.findNodes(name, wildcard=False, includeComponents=False, root=vrdNode(), caseSensitive=True)

根据节点名称查找节点列表。

请注意,此操作比较耗时。为了加快速度,请在场景图形结构不再更改后使用函数 vrNodeService.initFindCache()

参数:
  • name (string) - 节点的名称。
  • wildcard (bool) - 使用通配符匹配。
  • includeComponents (bool) - 搜索以下壳。
  • root (vrdNode) - 搜索将从此节点开始
  • caseSensitive (bool) - 如果设置为 False,则搜索不区分大小写
返回值:

找到的节点。

返回值类型:

List[vrdNode]

vrNodeService.findNodes(names, wildcard=False, includeComponents=False, root=vrdNode(), caseSensitive=True)

根据名称列表查找节点列表。

此函数将返回与列表中任意名称匹配的所有节点。

请注意,此操作比较耗时。为了加快速度,请在场景图形结构不再更改后使用函数 vrNodeService.initFindCache()

参数:
  • names (List[string]) - 节点名称列表。
  • wildcard (bool) - 使用通配符匹配。
  • includeComponents (bool) - 搜索以下壳。
  • root (vrdNode) - 搜索将从此节点开始
  • caseSensitive (bool) - 如果设置为 False,则搜索不区分大小写
返回值:

找到的节点。

返回值类型:

List[vrdNode]

vrNodeService.findNodes(function, options=vrdFindOptions(), root=vrdNode())

根据 Python 匹配函数查找节点列表。

Python 函数要求:
- 仅将一个 vrdNode 用作输入参数
- 必须求值为布尔值。
def findGeometry(node):
    return node.isType(vrdGeometryNode)

vrNodeService.findNodes(findGeometry, vrdFindOptions(), vrNodeService.getRootNode()) # also works with lambdas: vrNodeService.findNodes(lambda node: node.isType(vrdGeometryNode))

参数:
  • function (function) - Python 函数对象。
  • options (vrdFindOptions) - 其他查找选项。
  • root (vrdNode) - 搜索将从此节点开始。如果为空,则使用场景根。
返回值:

找到的节点。

返回值类型:

List[vrdNode]

vrNodeService.findNodesWithPath(path, wildcard=False, root=vrdNode())

根据节点路径查找节点列表。

节点路径是用斜杠 (/) 串联的祖先节点和节点本身的名称,例如“Root/Group/Geometry123”。

参数:
  • path (string) - 节点路径。
  • wildcard (bool) - 使用通配符匹配。
  • root (vrdNode) - 搜索将从此节点开始。
返回值:

找到的节点。

返回值类型:

List[vrdNode]

vrNodeService.findNodeWithPath(path, wildcard=False, root=vrdNode())

根据节点路径查找节点。

节点路径是用斜杠 (/) 串联的祖先节点和节点本身的名称,例如“Root/Group/Geometry123”。

参数:
  • path (string) - 节点路径。
  • wildcard (bool) - 使用通配符匹配。
  • root (vrdNode) - 搜索将从此节点开始
返回值:

找到的节点。

返回值类型:

vrdNode

vrNodeService.findNodeWithUniquePath(uniquePath)

按节点的唯一路径查找节点。请参见 vrdNode.getUniquePath()

参数:uniquePath (string) - 要查找的唯一路径。
返回值:具有给定唯一路径的节点。
返回值类型:vrdNode

vrNodeService.getAllNodes(root, options=vrdFindOptions())

获取给定子图形中的所有节点。

参数:
  • root (vrdNode) - 图形的根节点
  • options (vrdFindOptions) - 查找选项。默认情况下,将跳过组件
返回值:

在给定图形中找到的所有节点

返回值类型:

List[vrdNode]

vrNodeService.getCloneRoot(node)

获取克隆层次的最顶部节点。

参数:node (vrdNode) - 要检查的节点
返回值:克隆层次的最顶部节点
返回值类型:vrdNode

vrNodeService.getClones(node)

获取给定节点的克隆。

参数:node (vrdNode) - 要查询的节点。
返回值:节点列表。
返回值类型:List[vrdNode]

vrNodeService.getCommonParent(nodes)

查找给定节点的第一个相等父节点。

参数:nodes (List[vrdNode]) - 要检查的节点
返回值:第一个作为所有给定节点父节点的节点
返回值类型:vrdNode

vrNodeService.getMaxDepth(node)

获取给定图形的最大深度。

参数:node (vrdNode) - 要检查的图形
返回值:任何子图形的最大深度
返回值类型:integer

vrNodeService.getNodeFromId(nodeId)

按标识符获取节点。

这将根据给定节点标识符返回 vrdNode。您可以通过从旧节点获取 ID,从而从旧 vrNodePtr 转换为 vrdNode,如下所示:

newnode = vrNodeService.getNodeFromId(oldnode.getID())
参数:nodeId (integer) - 节点标识符
返回值:标识符对应的节点。
返回值类型:vrdNode

vrNodeService.getNodesFromIds(nodeIds)

从其标识符获取节点。

参数:nodeIds (List[integer]) - 节点标识符。
返回值:关联节点。
返回值类型:List[vrdNode]

vrNodeService.getRootNode()

返回根节点。

返回值:根节点。
返回值类型:vrdNode

vrNodeService.getSelectedNodes()

返回选定节点的列表。

返回值:选定节点。
返回值类型:List[vrdNode]

vrNodeService.getSelectedRootNodes()

返回选定根节点的列表。

返回值:选定的根节点。
返回值类型:List[vrdNode]

vrNodeService.getUniqueName(name, root, recursive=True)

获取节点的唯一名称。

参数:
  • name (string) - 此名称用于创建唯一名称
  • root (vrdNode) - 名称在此图形中应是唯一的
  • recursive (bool) - 如果为 False,则名称将仅对根的直接子项唯一
返回值:

唯一名称

返回值类型:

string

vrNodeService.initFindCache()

构建内部缓存结构,以加快查找命令的执行速度。

构建内部缓存结构,以加快 Python 命令 findNode 和 findNodes 的执行速度。例如,对于具有 10000 个节点的场景,速度可提高约 700 倍。请注意,在删除或创建节点后,此缓存不再有效。

注意:壳组件(壳几何体节点的子节点)不包含在缓存中。

示例:另请参见 find2.py 示例

vrNodeService.isInSubtree(root, node)

指示节点是给定根节点的直接子节点还是间接子节点。

参数:
  • root (vrdNode) - 根节点。
  • node (vrdNode) - 要检查的节点。
返回值:

如果给定节点是直接或间接子节点,则为 True。

返回值类型:

bool

vrNodeService.removeNodes(nodes)

从场景图形中移除节点列表。

参数:nodes (List[vrdNode]) - 要移除的节点列表。

vrNodeService.traverse(function, root=vrdNode())

遍历节点图并为每个节点调用 Python 函数。

Python 函数要求:
- 仅将一个 vrdNode 用作输入参数
- 必须求值为 TraverseChoice。
shells = []

def collectShells(node): if node.isType(vrdGeometryNode) and node.isShell(): shells.append(node) return vrNodeService.TraverseChoice.Skip return vrNodeService.TraverseChoice.Continue

vrNodeService.traverse(collectShells, vrNodeService.getRootNode())

参数:
  • function (function) - Python 函数对象。
  • root (vrdNode) - 搜索将从此节点开始。如果为空,则使用场景根。

vrNodeService.unshareNodes(nodes, option=vrScenegraphTypes.KeepLocalClones)

从场景图形中取消共享子树列表。

取消共享将断开具有相同设置和子节点的两个节点之间的连接。

- vrScenegraphTypes::UnshareOption::UnshareAll 将完全取消共享子树中的所有节点。
- vrScenegraphTypes::UnshareOption::KeepLocalClones 将取消共享树,但会保留子树中的克隆连接。
- vrScenegraphTypes::UnshareOption::KeepGlobalClones 将取消共享节点和隐式共享的子节点,但不会取消共享与(子树内外部)其他节点具有显式克隆连接的克隆子节点。
参数:

信号

vrNodeService.nodesAdded(nodes)

添加新节点后将发送此信号。

参数:nodes (List[vrdNode]) - 所有已添加节点的列表。

vrNodeService.nodesRemoved(nodes)

删除节点后将发送此信号。

参数:nodes (List[vrdNode]) - 所有已移除节点的列表。

vrNodeService.selectionChanged()

场景树选择更改后,将发出信号。