为什么Revit模型有多个视图,丢到 Forge 转换后确只剩一个? (如何设定多个视图)

在 Revit 里面有多个 2D 和 3D 的视图,但透过 Forge 转换以后确只有(看到)一个,请问是怎么回事?

阅读 5.8k
1 个回答

您好,这个问题的解决方法有两个,一个是从 Revit 文檔的设置下手,另一个则是从您的 JavaScript 代码着手修改,可尝试依照下列的步骤来解决:

一.Revit文檔设置:

A.找到设置按钮:

I. 如果使用的是 Revit 2016 以前(包含2016) 的朋友必需安装 A360 Collaboration for Revit
这个插件,可以从下列地址下载,安装完成后可在 Collaborate 页签下找到 Views For A360 这个按钮,如下两图图所示。

A360 Collaboration for Revit安装
Views For A360 按钮

II. 如使用 Revit 2017 以前版本(含2017) 的朋友可以在 Collaborate 页签下找到 Publish Settings 这个按钮,如下图所示。

Publish Settings 按钮

B. 设置 Forge 视图: 点击 Views For A360 或 Publish Settings

这个按钮后,会有一个窗口弹出来,如下图所示。在这个窗口选取想要的视图后,点击 Save Set & Close 按钮,最后将 Revit
文檔储存到硬盘上,这样就完成Revit文檔的视图设置。

Views for A360窗口

C. 上传 Forge 转换以及透过 Viewer 检视模型 完成 Revit 文檔的视图设置后,将此文档丢到 Forge 转换就可以在
Viewer 里看到多个视图,如下两图所示。

Forge Viewer1
Forge Viewer2

二.JavaScript代码修改: Autodesk 提供两种方式从 Model Derivative
服务上加载模型,在这两种方式里要各注意一个地方,如下所示:

A. 方式一:

var viewer = new Autodesk.Viewing.Private.GuiViewer3D ( viewerElement, {} );
Autodesk.Viewing.Initializer( options, function() {
    viewer.initialize();

    Autodesk.Viewing.Document.load(
        documentId,
        function( doc ) {
            var geometryItems = [];
            geometryItems = Autodesk.Viewing.Document.getSubItemsWithProperties( doc.getRootItem(), {
            'type' : 'geometry',
            'role' : '3d'
            }, true );

            if ( geometryItems.length <= 0 ) return;

            // 在这边变更数列 geometryItems的索引
            var view = doc.getViewablePath( geometryItems[0] );
            viewer.load( view );
        },
        function( errorMsg ) {
            alert( ‘Load Error: ‘ + errorMsg );
        });
});

B. 方式二:

var viewerApp;
Autodesk.Viewing.Initializer( options, function() {
    viewerApp = new Autodesk.Viewing.ViewingApplication( 'viewer' );
    viewerApp.registerViewer( viewerApp.k3D, Autodesk.Viewing.Private.GuiViewer3D, null );
    viewerApp.loadDocument( documentId, onDocumentLoadSuccess, onDocumentLoadFailure );
});
          
function onDocumentLoadSuccess( doc ) {
    var viewables = viewerApp.bubble.search({
        'type': 'geometry',
        'role' : '3d'
    });

    if ( viewables.length <= 0 ) return;

    // 在这边变更数列viewables的索引
    viewerApp.selectItem( viewables[0].data, onItemLoadSuccess, onItemLoadFail );
}

function onDocumentLoadFailure( viewerErrorCode ) {
    console.error( 'onDocumentLoadFailure() - errorCode:' + viewerErrorCode );
}

function onItemLoadSuccess( viewer, item ) {
    console.log( 'onItemLoadSuccess()!' );
}

function onItemLoadFail( errorCode ) {
    console.error( 'onItemLoadFail() - errorCode:' + errorCode );
}

参考自:http://adndevblog.typepad.com...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏