在 userFunction 中使用 getBulkProperties2 来提高性能
Use getBulkProperties2 within userFunction to speed up performance
我目前正在通过 getBulkProperties2
查询 属性 数据库。我通过在数据库上运行 bruteForceFind
的 executeUserFunction
执行 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 );
我目前正在通过 getBulkProperties2
查询 属性 数据库。我通过在数据库上运行 bruteForceFind
的 executeUserFunction
执行 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 );