引言

在现代建筑信息模型(BIM)项目中,Autodesk Construction Cloud (ACC) 提供了一个强大的平台,让团队能够协作处理建筑项目中的各种文件,其中包括IFC(Industry Foundation Classes)模型。今天我们将深入探讨如何在ACC项目中上传IFC文件,并通过Autodesk的API来查看和转换这些模型。

背景知识

IFC是建筑行业广泛采用的数据模型标准,它允许不同软件之间的数据交换和共享。当我们将IFC文件上传到ACC项目中的Files模块时,系统会自动处理这些文件,使其能够在3D模型查看器中进行预览。然而,有时我们需要将这些模型转换为特定格式以便在自定义的3D查看器中显示。

问题描述

当我们上传IFC文件到ACC项目后,虽然可以在线直接查看模型,但如果想在自定义的Autodesk Viewer中显示模型,似乎需要提交一个转换任务到Model Derivative API。这种情况引发了以下疑问:

  • 为什么已经能在线查看模型,却还需要再次提交转换任务?
  • 是否有更直接的方法来利用ACC自动处理的结果?

解决方案与步骤

1. 获取文件URN

首先,我们需要找到上传到ACC的IFC文件的URN(统一资源名称)。这个URN可以在Files模块中找到,或者通过API获取。URN的格式类似于:

urn:adsk.objects:os.object:wip.dm.prod/8e9936f0-dbec-4b70-b6b2-5ce385ff4225.ifc

2. 检查模型处理状态

通过访问Model Derivative API的manifest端点,我们可以检查模型的处理状态:

https://developer.api.autodesk.com/modelderivative/v2/designdata/{urn}/manifest

如果没有返回manifest,说明模型可能还没有被自动转换。

3. 理解自动转换

实际上,ACC会自动将上传的IFC文件转换为SVF2格式,这意味着模型已经准备好在Autodesk Viewer中显示。关键在于,我们需要使用正确的URN来获取转换后的模型数据。

4. 正确使用URN

在ACC中,IFC文件的URN并非简单的base64编码,而是使用了URL安全的base64编码,其中一些字符如"_“和”-"会被替换。确保使用正确的解码方式来获取文件版本ID:

  • 将"_“替换为”/"
  • 将"-“替换为”+"

示例代码

import base64
from urllib.parse import unquote

# 示例URN
urn = "urn:adsk.objects:os.object:wip.dm.prod/8e9936f0-dbec-4b70-b6b2-5ce385ff4225.ifc"

# 移除"urn:adsk.objects:os.object:"前缀
urn_without_prefix = urn.split(":", 5)[-1]

# 解码URL安全的base64编码
decoded_urn = base64.urlsafe_b64decode(unquote(urn_without_prefix) + '==')

print(f"Decoded URN: {decoded_urn.decode('utf-8')}")

5. 直接使用转换后的模型

一旦得到正确的URN,我们可以直接使用Autodesk Viewer SDK来显示模型,无需再次提交转换任务。

结论

通过理解ACC自动处理IFC文件的机制,并正确解码和使用URN,我们可以避免不必要的模型转换任务,从而提高工作效率。希望这个博客能够帮助你在使用Autodesk ACC时更加得心应手。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐