# 切换显示模式及视图

在审图时,偶尔我们需要调整图纸的背景颜色或者图元颜色。同时,dwg图纸往往同时包含多个视图,BIMFACE默认打开模型视图。审图时往往需要在不同视图间切换。

# 教程内容

你的图纸已经加载成功了,接下来我们需要

  • 切换图纸的显示模式为黑白模式
  • 获取图纸中所有的视图ID
  • 切换到指定的视图

# 切换显示模式及视图

# 1. 切换图纸的显示模式为黑白模式

BIMFACE具有多种图纸显示模式:

  • 普通模式:图元颜色与dwg源文件一致,背景颜色为黑色;
  • 白底模式:图元颜色与dwg源文件一致,背景颜色为白色;
  • 黑白模式:图元颜色皆为黑色,背景颜色为黑色;
  • 自定义模式:图元颜色和背景颜色都可以自定义设置

首先我们要在页面中添加一个按钮,用来切换图纸模式为黑白模式。在class为buttons的div下输入如下内容:

<button class="button" id="btnBlack_and_white" onclick="black_and_white()">黑白模式</button>

然后我们对按钮的样式进行定义,在之后的教程中我们还会创建更多的按钮,但样式都通过这段css代码来保持一致。

.button {
  margin: 5px 0 5px 5px;
  width: 90px;
  height: 30px;
  border-radius: 3px;
  border: none;
  background: #11DAB7;
  color: #FFFFFF;
}

接下来,我们开始调用BIMFACE JSAPI来切换图纸显示模式为黑白模式。在script标签内构造一个函数:

function black_and_white(){
    viewer2D.setDisplayMode(2);
}

加载页面并点击黑白模式的按钮,我们能看到图纸已经呈现为黑白模式了。

image

# 2. 获取图纸中所有的视图ID

dwg图纸中有2种视图(仅第一张图纸能够加载视图数据):

  • Model视图:有且仅有1个;
  • Layout视图:可以没有,也可以有多个

该图纸的model视图的图纸貌似比较乱,让我们去它的layout视图看看吧。首先获取所有视图的信息。与切换为黑白模式相似,我们先添加一个按钮:

<button class="button" id="btnViewslist" onclick="viewsList()">视图列表</button>

然后在script标签内构造函数:

function viewsList(){ 
    let viewsList = viewer2D.getDrawing(modelId).getViews(); 
    console.log(viewsList);
}

此时可以在控制台获得每个视图的name和ID信息。可以发现layout视图的ID为2629559。

image

# 3. 切换到指定的视图

找到目标layout视图的ID后,就可以切换到该张图纸上来了。

我们首先添加一个按钮:

<button class="button" id="btnLayout" onclick="layout()">切换视图</button>

然后在script标签内构造函数:

function layout(){
    viewer2D.showViewById(2629559); 
}

image

# 完整代码

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>BIMFACE drawing scene</title>
  <style type="text/css">
    * {
      margin: 0;
      padding: 0;
    }

    html,
    body {
      height: 100%;
    }

    .buttons {
      font-size: 0;
    }

    .button {
      margin: 5px 0 5px 5px;
      width: 90px;
      height: 30px;
      border-radius: 3px;
      border: none;
      background: #11DAB7;
      color: #FFFFFF;
    }

    .main {
      display: flex;
      flex-direction: column;
      overflow: hidden;
      height: 100%;
    }

    #domId {
      flex: 1;
    }
  </style>
</head>

<body>
  <div class='main'>
    <div class='buttons'>
      <button class="button" id="btnBlack_and_white" onclick="black_and_white()">黑白模式</button>
      <button class="button" id="btnViewslist" onclick="viewsList()">视图列表</button>
      <button class="button" id="btnLayout" onclick="layout()">切换视图</button>
    </div>
    <div id="domId"></div>
  </div>
  <script src="https://static.bimface.com/api/BimfaceSDKLoader/BimfaceSDKLoader@latest-release.js"></script>
  <script>
    let viewToken = '<yourViewToken>';
    let modelId = '0';
    // 声明Viewer及App
    let viewer2D;
    let app;
    // 配置JSSDK加载项
    window.onload = function () {
      let loaderConfig = new BimfaceSDKLoaderConfig();
      loaderConfig.viewToken = viewToken;
      BimfaceSDKLoader.load(loaderConfig, successCallback, failureCallback);
    }
    // 加载成功回调函数
    function successCallback(viewMetaData) {
      //获取dom元素
      let domShow = document.getElementById('domId');
      //新建WebApplicationDrawingConfig
      let WebAppConfig = new Glodon.Bimface.Application.WebApplicationDrawingConfig();
      //设置WebApplicationDrawingConfig的dom元素
      WebAppConfig.domElement = domShow;
      //创建WebApplicationDrawing
      app = new Glodon.Bimface.Application.WebApplicationDrawing(WebAppConfig);
      //获取二维图纸对象
      viewer2D = app.getViewer();
      // 加载图纸
      viewer2D.loadDrawing({
        viewToken: viewToken,
        modelId: modelId
      })
    }
    // 加载失败回调函数
    function failureCallback(error) {
      console.log(error);
    }
    // 切换显示模式为黑白模式
    function black_and_white() {
      viewer2D.setDisplayMode(2);
    }
    // 获取视图列表
    function viewsList() {
      let viewsList = viewer2D.getDrawing(modelId).getViews();
      console.log(viewsList);
    }
    // 切换视图
    function layout() {
      viewer2D.showViewById("2629559");
    }
  </script>
</body>

</html>

恭喜你,现在你已经可以自由切换图纸的显示模式和视图内容了,接下来我们将去管理图层和图元 (opens new window)