更改默认的ViewCube方向

时间:2018-07-31 10:56:50

标签: autodesk-forge

我正在使用Forge Viewer显示建筑物的简单几何图形提取。 但是,在加载它们时,模型/视图多维数据集的方向与预期的用例不匹配(请参见图)。 基本上,我需要将“前视图”与“顶视图”交换。 是否有可能通过例如查看器对象的默认设置?

我的设置基本上与Forge Viewer的第三方反应包装中的设置相同:https://github.com/outer-labs/react-forge-viewer

已经非常感谢您了。

丹尼尔

编辑:模型为STP格式 Default orientation when loading the model

1 个答案:

答案 0 :(得分:1)

基本上,您可以在模型完全加载并且可以分为两部分之后,通过Viewer API通过以下步骤对其进行存档。

  1. (过程)获取要设为Front的查看器的Top视图状态:

    a。将当前视图定向到Front视图:viewer.setViewCube( 'front' )
    b。获取视口的当前视像:var viewState = .getState( { viewport: true } )
    C。将此viewState保存到您的js文件或数据库中。

  2. 还原视图状态并将其设置为Top视图:

    a。从您从step1获得的某个地方(例如js文件或数据库)获取viewState
    b。通过viewer.restoreState( viewState )恢复视图状态。
    C。将当前视图设置为Top视图:viewer.autocam.setCurrentViewAsTop()
    d。将当前视图设置为Home,以避免重置视图多维数据集的状态:viewer.autocam.setCurrentViewAsHome()

第二步的代码段:

viewer.addEventListener(
    Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
    function( event ) {
        console.log( '%cGEOMETRY_LOADED_EVENT: !!!Geometries loaded!!!', 'color: green;' );

        setTimeout(() => {
            const onOrientTopViewCompleted = function() {
                viewer.removeEventListener(
                    Autodesk.Viewing.CAMERA_TRANSITION_COMPLETED,
                    onOrientTopViewCompleted
                );

                viewer.autocam.setCurrentViewAsTop();
                viewer.autocam.setCurrentViewAsHome();

                console.log( 'CAMERA_TRANSITION_COMPLETED' );
            };

            viewer.addEventListener(
                Autodesk.Viewing.CAMERA_TRANSITION_COMPLETED,
                onOrientTopViewCompleted
            );

            var viewState = '....'; //!<< the view state of the original `Front` view.

            viewer.restoreState( viewState )
        }, 1000);
    });

希望有帮助!