近两年内,常遇到一些 Forge Viewer的Revit客户向我咨询一些问题,例如要怎么在3D视图里看到 Revit房间或空间?或是模型里有房间/空间,但在转换后却看不到,怎么解?一般状况下,我给予的答复大可能是下面两种:html
看到这里,你可能会询问:有没有更直接的方法,直接在 Revit 模型里直接支持?在2个月之前,我必须很抱歉地说没有,但在咱们开发部同仁的努力下,终于在今年9月初的时候,Forge Model Derivative API原生支持 (Native Support) 这个功能 – Revit房间和空间的转换,且此转换须经过 Master View 才能支持,这里是他的更新公告:https://forge.autodesk.com/en...json
本次的更新重点在于,POST Jobs端点在request payload的 advanced参数里增长了一个名为generateMasterViews 的子参数,此子参数只在Revit 的 RVT 模型转换为SVF时被支持,那么咱们来看看要怎么使用这个参数吧!api
使用generateMasterViews的样例 Request Payload以下:app
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: truecurl
到这里你可能有点蒙了,这个generateMasterViews究竟有什么用途?为何加上后就能够看到房间/空间?如此神秘!ui
好的,不卖关子,且听我娓娓道来~ url
根据API文檔,generateMasterViews这个新的转换选项会根据RVT文文件里的每一个阶段 (Phases) 转换额外生成3D的主视图 (Master views),主视图包含该阶段主模型中存在的全部组件(包括房间组件)。主视图的显示名称为其生成阶段的名称。然而,若是已经存在具备该名称的视图,系统会在默认显示名称后面增长字尾”。如今,咱们用Revit官方样例模型 rac_basic_sample_project.rvt来看,这模型分别在建物的一层及二层的楼层平面图里有放置房间,在9月之前或是不将generateMasterViews参数设置为 true的话,SVF转换后在Viewer里头是看不到房间或空间的,由于他们不存在于 Revit的3D视图里。spa
注意: generateMasterViews选项默认值是 false3d
在来,咱们仔细看一下这个样例模型,这里面包含了两个阶段 (Phases):“Working Drawings” 和 “Learning Content”。在Forge转换完成后,能够在GET :urn/manifest的响应里看到多了两个新的 viewable,其name及phaseNames是上面提到的阶段名称,且name及phaseNames的值是同样的。code
{ "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模型里面提取更多额外内容细节,故转换时间会再拉长,所以请尽可能在须要的时候才使用此参数。