繁体   English   中英

Autodesk Forge 查看器:getBulkProperties2 的 categoryFilter 根本不起作用

[英]Autodesk Forge Viewer: categoryFilter for getBulkProperties2 not working at all

我有一个 Autodesk Forge Viewer 工具栏扩展,我正在尝试从当前模型中检索过滤的元素列表。 我正在尝试为此使用getBulkProperties2 ,因为它专门在选项对象中包含categoryFilter ,这将(至少假设)使我不必拉动所有内容并手动进行过滤。

我已将对getBulkProperties2的调用包装在一个承诺中,以使其更易于处理:

function getBulkProperties(model, dbIds, options) {
    return new Promise(function (resolve, reject) {
        model.getBulkProperties2(dbIds, options, resolve, reject);
    });
}

从那里,一旦模型通过添加事件侦听器并将其包含在回调中成功加载,我就会调用此函数:

viewer.addEventListener(Autodesk.Viewing.OBJECT_TREE_CREATED_EVENT, async function (e) {
    var props = await getBulkProperties(viewer.model, AllDbIds, { categoryFilter: ["Revit Rooms"] });
});

不幸的是,以这种方式配置的categoryFilter选项,结果总是一个空数组。 我已经尝试了几种不同的配置,但结果总是一样的。

如果我发出相同的请求,省略categoryFilter选项并在浏览器控制台中手动过滤列表,我可以看到我正在寻找的元素确实存在,在我正在寻找的配置中:

› props.filter(p => p.properties.some(v => v.displayName == 'Category' && v.displayValue == 'Revit Rooms')).length
‹ 113

这是否意味着categoryFilter不起作用? 还是我以某种方式没有正确使用它?

请注意, categoryFilter指的是属性类别(例如,“身份数据”),而不是Revit 类别(例如您的示例中的“Revit 房间”)。

https://imgur.com/a/5ipSnMc

如果您只想获取“Revit Rooms”的属性,您可以尝试在模型浏览器中找到“Rooms”对象,找到其所有子项的 dbID,然后将这些 dbID 传递给getBulkProperties2方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM