目录

基础
高级应用
  • xBIM 综合使用案例与 ASP.NET MVC 集成(一)
  • xBIM 综合使用案例与 ASP.NET MVC 集成(二)
  • xBIM 综合使用案例与 ASP.NET MVC 集成(三)

在本次我们探讨xViewer 的导航、剖切、隐藏、相机位置。这应该足以让用户通过所有缩放、平移和隐藏可能的障碍物来检查建筑物内部。

1、相机位置

根据产品的ID设置相机目标很容易。可能最常见的方法是根据用户操作设置一个目标。这些需要用户选择按钮或者鼠标操作来设置。如下例子:

viewer.on('pick', function (args) {
var id = args.id;
viewer.setCameraTarget(id);
pickedId = id;
});

使用 setCameraTarget() 方法设置相机位置也很容易,如下实例将使用HTML输入来设置值。

<input type="text" id="camX" value="-15000" />
<input type="text" id="camY" value="-15000" />
<input type="text" id="camZ" value="15000" />
<button onclick="SetCamera()">Set camera</button>
<script type="text/javascript">
function SetCamera() {
if (viewer) {
var iX = document.getElementById('camX');
var iY = document.getElementById('camY');
var iZ = document.getElementById('camZ');
viewer.setCameraPosition([iX.value, iY.value, iZ.value]);
}
}
</script>

能够向模型或零件显示默认轴对齐视图总是很重要的。这是xViewer的内置功能。它始终根据setCameraTarget()方法设置的原点和距离进行操作。在该示例中,每当用户选择如上所列的元素时,相机目标被设置。

<button onclick="if (viewer) viewer.show('front');">前</button>
<button onclick="if (viewer) viewer.show('back');">后</button>
<button onclick="if (viewer) viewer.show('top');">上</button>
<button onclick="if (viewer) viewer.show('bottom');">下</button>
<button onclick="if (viewer) viewer.show('left');">左</button>
<button onclick="if (viewer) viewer.show('right');">右</button>

xViewer 只使用浏览器的默认导航功能,这些功能在鼠标左键轨道上运行,平移中键和放大滚动键。这应该是 直观的。请注意,查看器的最佳做法是将其放在一个没有垂直滚动条的页面上。因为缩放模型并同时滚动网站,缩放很难。如果您希望这样做,可以使用以下代码更改左按钮的默认行为:

<button onclick="if (viewer) viewer.navigationMode = 'orbit';"> 旋转 </button>
<button onclick="if (viewer) viewer.navigationMode = 'free-orbit';"> 自由旋转 </button>
<button onclick="if (viewer) viewer.navigationMode = 'pan';"> 平移 </button>
<button onclick="if (viewer) viewer.navigationMode = 'zoom';"> 缩放 </button>
<button onclick="if (viewer) viewer.navigationMode = 'none';"> 完全禁用默认导航 </button>

当模型绕Z轴旋转时,默认轨道模式是固定的旋转。您也可以使用围绕实际轴旋转模型的自由旋转,因此更自由。你可以用这个从不同寻常的角度看模型。就像提示一样 - 如果需要的话,画圆圈来调整水平面。

2、剖切

剖切我们会经常使用,用户想要看到建筑物内部深处的东西。建筑物内部的导航可能会很容易变得复杂,但如果您可以剖切建筑物并看到内部,则可以让用户的操作变得更加轻松。这也是默认情况下在查看器中构建的。如果您将平面上的点和平面上的点传递给方法,您可以使用clip()方法自己设置裁剪平面,或者如果您调用没有参数的方法,您可以让用户以交互方式定义裁剪平面。使用unclip()方法比完全放弃剪辑。

<button onclick="if (viewer) viewer.clip();">开始剖切</button>
<button onclick="if (viewer) viewer.unclip();">取消剖切</button> <input type="text" id="clipOrigX" value="0" />
<input type="text" id="clipOrigY" value="0" />
<input type="text" id="clipOrigZ" value="0" /> <input type="text" id="clipNormX" value="-1" />
<input type="text" id="clipNormY" value="0" />
<input type="text" id="clipNormZ" value="0" /> <button onclick="Clip()">剖切</button>
<script type="text/javascript">
function Clip() {
var oX = document.getElementById('clipOrigX').value;
var oY = document.getElementById('clipOrigY').value;
var oZ = document.getElementById('clipOrigZ').value; var nX = document.getElementById('clipNormX').value;
var nY = document.getElementById('clipNormY').value;
var nZ = document.getElementById('clipNormZ').value; if (viewer)
viewer.clip([oX, oY, oZ], [nX, nY, nZ]);
}
</script>

3、隐藏

有时你也需要隐藏一个元素或一种元素,让我们说所有的墙壁。这可以通过使用setState()方法设置产品的状态来实现。使用resetStates()方法将所有状态重置为默认状态。此方法有一个可选参数,您可以使用它来显示空格。这些都是默认隐藏的,除非您将它们显示为manualy。

<select id="cmbHide">
<option value="noAction">无操作</option>
<option value="hideProduct">隐藏产品</option>
<option value="hideType">隐藏类型</option>
<option value="highlight">高亮</option>
</select>
<button onclick="if (viewer) viewer.resetStates()">显示所有</button>
<script type="text/javascript">
function initHiding() {
viewer.on('pick', function (args) {
var cmb = document.getElementById('cmbHide');
var option = cmb.value;
switch (option) {
case 'hideProduct':
viewer.setState(xState.HIDDEN, [args.id]);
break;
case 'hideType':
var type = viewer.getProductType(args.id);
viewer.setState(xState.HIDDEN, type);
break;
case 'highlight':
viewer.setState(xState.HIGHLIGHTED, [args.id]);
break;
default:
break;
}
});
};
</script>

xBIM WeXplorer xViewer的导航,相机、剖切、隐藏 等操作的更多相关文章

  1. xBIM WeXplorer xViewer 基本应用

    目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...

  2. xBIM WeXplorer xViewer 浏览器检查

    目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...

  3. xBIM 基础12 WeXplorer xViewer的导航、相机、剖切、隐藏等操作

    系列目录    [已更新最新开发文章,点击查看详细]  本篇将学习xViewer的导航,剪切和隐藏.这应该足以使用户能够通过所有缩放,平移,轨道运行和隐藏可能的障碍物来检查建筑物内部.点击这里可以看到 ...

  4. xBIM WeXplorer

    目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...

  5. xBIM WeXplorer 设置模型颜色

    目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...

  6. SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何实现对三维模型和地形的剖切展示

    现在很多三维项目中,不仅仅要用到三维地形,正射影像和矢量数据,还会融合到各种三维模型,包括传统的3DMax手工建模,BIM,倾斜摄影自动建模,激光点云模型,三维地质体模型等等. 三维平台首先要做的是把 ...

  7. iOS导航栏的正确隐藏方式【转】

    简介:在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如 ...

  8. 导航栏底部黑线隐藏 UINavigationBar hidden Bottom Line

    3种方法: 1.大杀器  ,iOS 10.2 最新系统亲测无问题( 添加导航栏分类) https://github.com/samwize/UINavigationBar-Addition/ 2.io ...

  9. iOS导航栏的正确隐藏方式

    在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如何做了 ...

随机推荐

  1. openfire服务器+Spark搭建即时聊天系统 & 阿里云的初步探索

    晚上出去和洋仔吃了涮肉,喝了点啤酒,不知不觉就聊到了11点,感觉他工作状态还不错,emmm...都要加油吧.虽然没有当时去山西零下二十多度那么夸张,这几天北京的冬夜还是有点小冷的.好了进入正题: 一. ...

  2. 第一章 用HTML5中的结构元素构建网站

    1.当一个容器需要直接定义样式或通过脚本定义行为时,推荐使用div元素而非section元素. 2.section是需要标题的,而nav或aside没有标题也是可以的. 3.html5轮廓工具 htt ...

  3. CCF系列之最大的矩形(201312-3)

    试题名称: 最大的矩形 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi.这n个矩 ...

  4. redux学习日志:关于异步action

    当我们在执行某个动作的时候,会直接dispatch(action),此时state会立即更新,但是如果这个动作是个异步的呢,我们要等结果出来了才能知道要更新什么样的state(比如ajax请求),那就 ...

  5. Unix/Linux命令:SED

    在Unix/Linux系统中,sed命令采用逐行处理的方式对文件进行查找.删除.替换.添加.插入等操作. 语法:sed [OPTION]... {script-only-if-no-other-scr ...

  6. Redis 2种持久化模式的缺陷

    http://blog.csdn.net/hexieshangwang/article/details/47254087 一.RDB持久化模式缺陷 1.问题描述: 并发200路,模拟不断写Redis, ...

  7. scipy.optimize.minimize 解决实际问题

    接上博客问题http://www.cnblogs.com/shizhenqiang/p/8274806.html # coding=utf-8 from scipy import optimize i ...

  8. 如何去掉ul标签的多余空白或多余大距离?

    在css中写入 ul{ margin:; padding:; list-style: none; } 让其内边距和外边距为0,列表样式为空

  9. word中正文分栏重新换页问题

    小论文常需要正文分栏,但是标题.摘要不分栏的编排格式. 1.在摘要后面加入分隔符来将内容分为摘要和正文两个部分.选择 插入→分隔符→分节符(连续). 2.然后进行分栏.选择 格式→分栏. 3.此时如果 ...

  10. Linux使用top与free命令查看CPU与内存使用情况

    top命令: 显示内容解释: 第一行top分别为:当前时间:系统运行天数:使用者个数:系统负载的平均值,后面的三个值分别为1分钟前.5分钟前.15分钟前进程的平均数,这个数值超过 CPU 数目时,说明 ...