近两年内,常遇到一些 Forge Viewer的Revit客户向我咨询一些问题,例如要怎么在3D视图里看到 Revit房间或空间?或是模型里有房间/空间,但在转换后却看不到,怎么解?通常情况下,我给予的答复大多是下面两种:
- 将Revit转成 NWC/NWD (在Navisworks的转换设置里勾选转换空间几何),通过上载NWC/NWD到 Forge转换:https://www.keanw.com/2016/06...
- 通过 Revit API在Revit 3D视图里创建房间/空间的DirectShape,在上传转换:https://thebuildingcoder.type...
看到这里,你可能会询问:有没有更直接的方法,直接在 Revit 模型里直接支持?在2个月以前,我必须很抱歉地说没有,但在我们开发部同仁的努力下,终于在今年9月初的时候,Forge Model Derivative API原生支持 (Native Support) 这个功能 – Revit房间和空间的转换,且此转换须通过 Master View 才能支持,这里是他的更新公告:https://forge.autodesk.com/en...
本次的更新重点在于,POST Jobs端点在request payload的 advanced参数里增加了一个名为generateMasterViews 的子参数,此子参数只在Revit 的 RVT 模型转换为SVF时被支持,那么我们来看看要怎么使用这个参数吧!
使用generateMasterViews的样例 Request Payload如下:
curl -X 'POST' \
-H 'Content-Type: application/json; charset=utf-8' \
-H 'Authorization: Bearer PtnrvrtSRpWwUi3407QhgvqdUVKL' \
-H 'x-ads-force: true' -v 'https://developer.api.autodesk.com/modelderivative/v2/designdata/job' \
-d
'{
"input": {
"urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bW9kZWxkZXJpdmF0aXZlL21vZGVsLmlmYw",
},
"output": {
"formats": [
{
"type": "svf",
"views": [
"2d",
"3d"
],
"advanced": {
"generateMasterViews": true
}
}
]
}
}'
注意: 如果你想在以前转换好的模型上看到房间或空间的话,记得在 Request Header里添加 x-ads-force: true
到这里你可能有点蒙了,这个generateMasterViews究竟有什么用途?为什么加上后就可以看到房间/空间?如此神秘!
好的,不卖关子,且听我娓娓道来~
根据API文檔,generateMasterViews这个新的转换选项会根据RVT文文件里的每个阶段 (Phases) 转换额外生成3D的主视图 (Master views),主视图包含该阶段主模型中存在的所有组件(包括房间组件)。主视图的显示名称为其生成阶段的名称。然而,如果已经存在具有该名称的视图,系统会在默认显示名称后面增加字尾”。现在,我们用Revit官方样例模型 rac_basic_sample_project.rvt来看,这模型分别在建物的一层及二层的楼层平面图里有放置房间,在9月以前或是不将generateMasterViews参数设置为 true的话,SVF转换后在Viewer里头是看不到房间或空间的,因为他们不存在于 Revit的3D视图里。
注意: generateMasterViews选项默认值是 false
在来,我们仔细看一下这个样例模型,这里面包含了两个阶段 (Phases):“Working Drawings” 和 “Learning Content”。在Forge转换完成后,可以在GET :urn/manifest的响应里看到多了两个新的 viewable,其name及phaseNames是上面提到的阶段名称,且name及phaseNames的值是一样的。
{
"guid": "75ddc022-2fc2-cfc5-2fe8-8ccf72d25ea7",
"type": "geometry",
"role": "3d",
"name": "Working Drawings",
"viewableID": "c884ae1b-61e7-4f9d-0001-719e20b22d0b-0010d056",
"phaseNames": "Working Drawings",
...
},
{
"guid": "303a794c-a168-c792-c7e3-c7b1d93ad01a",
"type": "geometry",
"role": "3d",
"name": "Learning Content",
"viewableID": "c884ae1b-61e7-4f9d-0002-719e20b22d0b-0010d062",
"phaseNames": "Learning Content",
...
},
注意: 除了用name及phaseNames来辨别Master View外,还可以通过检查 viewable的urn有无包含08f99ae5-b8be-4f8d-881b-128675723c10
使用 Petr Broz’s awesome VS Code tool,我们也可以看到这两个新的viewable:
当你在 Viewer 里加载Master View后,你会发现里头包含了一些以前通常转换看不到的内容,但这些内容默认是不可见的,例如房间。
注意: 可以通过加载 Autodesk.DocumentBrowser来切换视图。
除了建筑的房间外,我们可以看到MEP模型的区域(Zone)或空间(Sapce),下图以rme_advanced_sample_project.rvt为例:
注意: BIM360 Docs 的模型转换默认设置generateMasterViews选项为 true。
此外,上面这些房间、空间或区域的构件属性信息都是可以被查找、检视的。例如,空间的尺寸属性:
注意: 设置generateMasterViews选项为 true后,Model Derivative API 会从Revit模型里面提取更多额外内容细节,故转换时间会再拉长,因此请尽量在需要的时候才使用此参数。