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

查看:460
本文介绍了autodesk-forge - 为什么Revit模型有多个视图,丢到 Forge 转换后确只剩一个? (如何设定多个视图)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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

解决方案

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

一.Revit文檔设置:

A.找到设置按钮:

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


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

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

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

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


二.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...

这篇关于autodesk-forge - 为什么Revit模型有多个视图,丢到 Forge 转换后确只剩一个? (如何设定多个视图)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆