Skip to content
导览

高级检索 ExpertSearchManager

高级检索管理器是用于控制云渲染高级检索的工具,通过获取该管理器,用户可以方便地进行高级检索控制和管理。 该工具的主要功能包括:

  1. 根据条件检索节点,再通过回调获取结果
  2. 获取节点下的所有属性组

我们将提供详细的使用指南和功能说明,帮助用户更好地使用该工具。

expertSearchManager

用户可以调用云渲染实例 cloud 上的 getExpertSearchManager() 方法来获取 ExpertSearchManager 相机管理器。

ts
const expertSearchManager = await cloud.getExpertSearchManager()
const expertSearchManager = await cloud.getExpertSearchManager()

用户调用 cloud.getExpertSearchManager() 后,expertSearchManager 属性会被自动挂载到当前 cloud 实例上。

ts
await cloud.getExpertSearchManager()
const expertSearchManager = cloud.expertSearchManager
await cloud.getExpertSearchManager()
const expertSearchManager = cloud.expertSearchManager

检索节点 | advancedRetrieval

  • 说明:根据条件检索节点,通过回调获取结果

我们可以调用 ExpertSearchManager 上面的 advancedRetrieval 方法,通过传入初始根节点以及检索条件来检索出符合条件的节点。

检索节点

根据条件检索节点功能是指通过设定特定规则来查找符合条件的模型节点,例如根据名称、属性、位置、大小、材质等条件来检索节点。

  • 参数说明
NameTypeDescription
rootNodeNode | VirtualNode检索初始根节点
rulesexpertSearch[]检索条件
ignoreCasenull | boolean是否忽略大小写

调用示例:

ts
const rules: expertSearch[] = [
  {
    type: 'DirectoryTree',
    name: 'nodeName',
    condition: 'like',
    value: '设备%',
    connector: 'where',
  },
  {
    type: 'DirectoryTree',
    name: 'nodeName',
    condition: '=',
    value: '设备',
    connector: 'where',
  },
  {
    type: 'Guid',
    name: 'nodeGuid',
    condition: '=',
    value: '5acd17629aef894b4ab37959f19f5404',
    connector: 'orWhere',
  },
  {
    type: 'rvmprop',
    name: 'ColorIndex',
    condition: '=',
    value: '1',
    connector: 'orWhere',
  },
]
const aaaa = await cloud.getSceneManager()
const noderoot = await aaaa.getRootNode3D()
const expert = await cloud.getExpertSearchManager()
let a
if (noderoot)
  a = await expert.advancedRetrieval(noderoot, rules, false)
console.log(a)
const rules: expertSearch[] = [
  {
    type: 'DirectoryTree',
    name: 'nodeName',
    condition: 'like',
    value: '设备%',
    connector: 'where',
  },
  {
    type: 'DirectoryTree',
    name: 'nodeName',
    condition: '=',
    value: '设备',
    connector: 'where',
  },
  {
    type: 'Guid',
    name: 'nodeGuid',
    condition: '=',
    value: '5acd17629aef894b4ab37959f19f5404',
    connector: 'orWhere',
  },
  {
    type: 'rvmprop',
    name: 'ColorIndex',
    condition: '=',
    value: '1',
    connector: 'orWhere',
  },
]
const aaaa = await cloud.getSceneManager()
const noderoot = await aaaa.getRootNode3D()
const expert = await cloud.getExpertSearchManager()
let a
if (noderoot)
  a = await expert.advancedRetrieval(noderoot, rules, false)
console.log(a)

检索完成回调

  • 说明:根据条件检索节点完成后的回调函数

我们可以设置 ExpertSearchManager 上面的 setSearchFinished 回调函数来获取检索结果。

  • 参数说明
NameTypeDescription
fn(virtualNode: VirtualNode) => void回调函数,virtualNode为虚节点

调用示例:

ts
function SearchFinished(virtualNode: VirtualNode) {
  (window as any).root = re
  console.log(re)
}
cloud.expertSearchManager.setSearchFinished(SearchFinished)
function SearchFinished(virtualNode: VirtualNode) {
  (window as any).root = re
  console.log(re)
}
cloud.expertSearchManager.setSearchFinished(SearchFinished)

获取节点属性组 | getAllPropertyGroupsName

  • 说明:获取节点下的所有属性组

我们可以调用 ExpertSearchManager 上面的 getAllPropertyGroupsName 方法,获取到加载模型的所有属性组。

调用示例:

ts
const expert = await cloud.getExpertSearchManager()
const groups = await expert.getAllPropertyGroupsName()
const expert = await cloud.getExpertSearchManager()
const groups = await expert.getAllPropertyGroupsName()

Returns

Promise<String[]>

返回加载模型的所有属性组