Forge 服务转换Revit 三维模型和二维图纸以及Forge Viewer中加载事宜

Forge的 Model Derivative 模型数据提取和格式转换可以操作行业内几乎所有设计模型格式,包括Autodesk 工程建设行业的设计格式:Revit。Revit设计文件中,一般会包含三维视图,二维图纸,二维视图,导入图纸,链接模型或图纸等内容。Forge服务都是可以提取转换的。

本文整理几点相关事宜:

  1. Forge转换服务可以转换在Revit发布设置中的设置好的图纸或视图。通常以选择集(Set)方式选择上。
    Forge 服务转换Revit 三维模型和二维图纸以及Forge Viewer中加载事宜_第1张图片
  2. 默认Forge服务会寻找名为{3D}的视图,如果没有,则会自动创建一个。因此当Revit模型中默认的{3D}视图被更名(例如中文名)或删掉了,在发布设置也要选上,否则Forge转换后,可能误认为默认加载的是自己调整后的视图。
  3. 转换后,所有视图都是这个模型的转换数据,通过端口API GET Manifest (modelderivative/v2/designdata/:urn),可以看到有多少转换数据,一个节点(derivative)对应一个三维模型或二维图纸/视图。Forge还会处理阶段模型视图,也将是一个derivative。
    Forge 服务转换Revit 三维模型和二维图纸以及Forge Viewer中加载事宜_第2张图片
  4. 在Forge Viewer中加载模型,若不做特别设置,默认是加载那个{3D}的视图。而要切换到某个其它视图图纸,则需要在加载选项中设置 viewerable id,见上图中的viewerableId。代码样例默认是加载缺省的{3D}视图,所以直接拿取的是根节点的数据,无需指定viewerableId。
function onDocumentLoadSuccess(doc) {
    // if a viewableId was specified, load that view, otherwise the default view
    var viewables = (viewableId ? doc.getRoot().findByGuid(viewableId) : doc.getRoot().getDefaultGeometry()); 
      viewer.loadDocumentNode(doc, viewables, { ids: global_queryBuilder.ids }).then(i => {
        });
  1. 如果不做任何开发调整,可以利用Viewer自带的扩展Autodesk.DocumentBrowser,加载此扩展后,在工具条打开的对话框里,会列出所有转换的三维模型和二维图纸/视图,点击就可灵活切换加载。这个对话框也包括阶段模型视图,都集中在此Guid(08f99ae5-b8be-4f8d-881b-128675723c10)的节点下。Guid是Forge管理阶段模型视图 特有id,任何Revit模型都一样。

Forge 服务转换Revit 三维模型和二维图纸以及Forge Viewer中加载事宜_第3张图片

  1. 阶段模型视图 在Revit中是没有的,只有阶段设置(Phase)。启动转换Forge转换必须设置generateMasterViews = true, 才会做阶段模型视图组织工作。否则将没有阶段模型视图
{
         "input": {
           "urn": "{{urnBase64}}" 
         },
         "output": {
           "destination": {
             "region": "us"
           },
           "formats": [
             {
               "type": "svf",
               "views": [
                 "2d",
                 "3d"
               ],"advanced":{
                 "generateMasterViews":true
             }   
             } 
           ] 
         }
       }
  1. 导入图纸(例如DWG)是和Revit模型原身一体,只需遵循常规转换要求即可。目前二维的DWG合并进来,某些图元显示会有点问题,开发部已知晓,正在研究改进中
  2. 链接模型是属于额外的数据内容,若只转换主Revit模型,这些链接模型是不被转换的,Get Manifest会告知 xxx 文件缺失.. 若需要链接模型内容,几个方式:
    8.1) 整体打包主Revit模型和链接模型为zip,发送zip给Forge服务转换,并设置转换选项
{
    "input": {
        "urn": "{{urnBase64}}",
        "compressedUrn":true,
        "rootFilename":"main.rvt"
        },
    "output": {
         "destination": {
            "region": "us"
        },
        "formats": [
        {
            "type": "svf",
            "views":["2d", "3d"]
        } 
        ]
    }
}

8.2)分别转换主Revit模型和链接模型,然后通过模型聚合方式在Viewer中合并。参考模型聚合的专题课程
8.3) BIM 360或ACC中,主Revit模型和链接模型分别上载,也分别转换好,则只需要POST Xref的模式链接即可。这篇博客有详细讲述。

  1. 无论是二维图纸还是三维模型,甚至三维模型和二维图纸都是可以做聚合工作。可以自行用常规方式依次加载合并,在模型聚合的专题课程有讲述,但推荐使用Viewer的AggregateView类,或直接使用Viewer自带的扩展Autodesk.AEC.Hypermodeling(底层机制也是用到了AggregateView类)。

你可能感兴趣的:(autodesk-forge)