在 userFunction 中使用 getBulkProperties2 来提高性能

问题描述

我目前正在通过 getBulkProperties2 查询属性数据库。我通过在数据库上运行 userFunctionexecuteUserFunctionbruteForceFind 获得此查询的 ID。

在我们公司的一些速度较慢的笔记本电脑上,getBulkProperties2 调用大约需要 40-50 秒。由于单线程 JS 的特性,整个 Vue 应用程序和 UI 都冻结了。我曾尝试将批量调用移至 WebWorker,但您无法将模型传递给 WebWorker,因为模型对象引用自身,因此无法序列化(循环引用)。

理想的解决方案是在 userFunction 内执行批量调用,因为它按照设计是在 WebWorker 上执行的。我在文档(或我反编译的源代码)中没有看到可以执行此类操作的方法

userFunction 中执行批量调用的推荐方法是什么?

解决方法

您可以在 pdb.getObjectProperties 内调用 userFunction。见https://forge.autodesk.com/en/docs/viewer/v7/reference/globals/PropertyDatabase/#getobjectproperties-dbid-propfilter-ignorehidden-propignored

const ignoreHidden = false;
pdb.getObjectProperties( dbId,['myAttributeName'],ignoreHidden );