1

我正在寻找在源文件中丢失模型体积时重新计算模型体积的最佳实践和性能指导建议。这是在我正在构建的 Web 应用程序的上下文中实现的:

  1. 以各种文件格式上传 3D 模型
  2. 使用 AutoDesk Viewer 与这些模型交互
  3. 在查看器旁边显示质量属性,例如体积和表面积(本文的主题

摘要级业务流程

背景

某些文件格式具有由创作应用程序计算并写入文件的非常可靠的卷信息。对于这些文件,我们可以通过 AutoDesk Viewer 访问卷作为属性。

然而,其他格式不携带体积信息- 至少不是以使用创作应用程序以外的工具可公开访问的方式(这里的主要示例是 SolidWorks)。这给我们留下了一个巨大的空白——我们需要使用文件中的内容重新计算模型的体积。

已知的解决方法和选项

AutoDesk 发表了一篇博文,详细介绍了一种使用查看器内模型的三角形来近似模型体积的方法。我认为这是一个理想的用例解决方案,可以用准确性来换取性能的提升——它将所有内容都集中在查看器中,使开发和后续维护更简单。然而,这个应用程序不能依赖于这样的近似值。我正在审查利用AutoDesk 设计自动化 API的选项:

  1. 启动一个 Inventor 实例
  2. 加载模型文件
  3. 依靠 iLogic 触发重新计算模型的零件属性(可能是这样的?
  4. 将该数据推送回我的 Web 应用程序

我需要帮助的地方

我的理解是AppBundleActivity是提前定义的,然后每个上传的模型都将作为工作项提交

我希望得到以下指导:

目前的想法

比如我在想我在源文件上传后的第一步是立即初始化两个并行进程:第一个为查看器翻译源文件,第二个启动Inventor并触发相关的下游进程得到体积。

我正在考虑的另一个选项是处理 Inventor 中的所有工作 - 并将 SVF 文件推送到包含体积数据的查看器。这种方法的优点是我的前端将只有一个体数据源(无论是否在原始文件中提供,它都将在丰富的 SVF 中)。

在理想情况下,我只能在源文件中缺少体积数据时调用设计自动化 API——但我只有在翻译文件并将其带回查看器后才知道这一点。鉴于我们的许多文件是在 SolidWorks 和其他高端专有 CAD 平台中创建的,我的工作假设是,我们将需要更频繁地填补体积空白。

4

1 回答 1

1

你的理解是正确的:

  • appbundle只是封装特定 Inventor/Revit/3dsMax/AutoCad 插件的文件(二进制文件、数据)的集合
  • 活动是一种作业模板,指定应调用哪个应用程序,应将哪个应用程序加载到应用程序中,将为作业提供哪些输入,以及将生成哪些输出
  • 工作项是工作的特定实例,将活动输入和输出绑定到特定 URL

除了使用这 3 种类型的实体之外,目前没有其他方法可以访问设计自动化功能。

我建议如下:

  • 尽可能使用 Inventor 的设计自动化来计算精确的面积/体积
  • 对于无法导入 Inventor 或任何其他设计自动化引擎的文件格式,您可以使用https://github.com/petrbroz/forge-convert-utils等工具来解析 SVF 并计算(非常粗略的估计)三角形网格的面积/表面;但是,这将在计算上非常昂贵且不精确
于 2020-06-02T13:37:39.717 回答