在 userFunction 中使用 getBulkProperties2 来提高性能

Use getBulkProperties2 within userFunction to speed up performance

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

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

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

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

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

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