我正在寻找在源文件中丢失模型体积时重新计算模型体积的最佳实践和性能指导建议。这是在我正在构建的 Web 应用程序的上下文中实现的:
- 以各种文件格式上传 3D 模型
- 使用 AutoDesk Viewer 与这些模型交互
- 在查看器旁边显示质量属性,例如体积和表面积(本文的主题)
背景
某些文件格式具有由创作应用程序计算并写入文件的非常可靠的卷信息。对于这些文件,我们可以通过 AutoDesk Viewer 访问卷作为属性。
然而,其他格式不携带体积信息- 至少不是以使用创作应用程序以外的工具可公开访问的方式(这里的主要示例是 SolidWorks)。这给我们留下了一个巨大的空白——我们需要使用文件中的内容重新计算模型的体积。
已知的解决方法和选项
AutoDesk 发表了一篇博文,详细介绍了一种使用查看器内模型的三角形来近似模型体积的方法。我认为这是一个理想的用例解决方案,可以用准确性来换取性能的提升——它将所有内容都集中在查看器中,使开发和后续维护更简单。然而,这个应用程序不能依赖于这样的近似值。我正在审查利用AutoDesk 设计自动化 API的选项:
- 启动一个 Inventor 实例
- 加载模型文件
- 依靠 iLogic 触发重新计算模型的零件属性(可能是这样的?)
- 将该数据推送回我的 Web 应用程序
我需要帮助的地方
我的理解是AppBundle和Activity是提前定义的,然后每个上传的模型都将作为工作项提交。
我希望得到以下指导:
- 这是唯一的方法还是还有其他值得考虑的选择
- 如何从操作顺序/工作流程的角度最好地编排端到端流程以最大限度地提高性能
目前的想法
比如我在想我在源文件上传后的第一步是立即初始化两个并行进程:第一个为查看器翻译源文件,第二个启动Inventor并触发相关的下游进程得到体积。
我正在考虑的另一个选项是处理 Inventor 中的所有工作 - 并将 SVF 文件推送到包含体积数据的查看器。这种方法的优点是我的前端将只有一个体数据源(无论是否在原始文件中提供,它都将在丰富的 SVF 中)。
在理想情况下,我只能在源文件中缺少体积数据时调用设计自动化 API——但我只有在翻译文件并将其带回查看器后才知道这一点。鉴于我们的许多文件是在 SolidWorks 和其他高端专有 CAD 平台中创建的,我的工作假设是,我们将需要更频繁地填补体积空白。