xBIM WeXplorer xViewer的导航,相机、剖切、隐藏 等操作
目录
基础
- xBIM WeXplorer 简要介绍
- xBIM WeXplorer xViewer 基本应用
- xBIM WeXplorer xViewer 浏览器检查
- xBIM WeXplorer xViewer的导航,相机、剖切、隐藏 等操作
- xBIM WeXplorer 设置模型颜色
高级应用
- 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的导航,相机、剖切、隐藏 等操作的更多相关文章
- xBIM WeXplorer xViewer 基本应用
目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...
- xBIM WeXplorer xViewer 浏览器检查
目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...
- xBIM 基础12 WeXplorer xViewer的导航、相机、剖切、隐藏等操作
系列目录 [已更新最新开发文章,点击查看详细] 本篇将学习xViewer的导航,剪切和隐藏.这应该足以使用户能够通过所有缩放,平移,轨道运行和隐藏可能的障碍物来检查建筑物内部.点击这里可以看到 ...
- xBIM WeXplorer
目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...
- xBIM WeXplorer 设置模型颜色
目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...
- SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何实现对三维模型和地形的剖切展示
现在很多三维项目中,不仅仅要用到三维地形,正射影像和矢量数据,还会融合到各种三维模型,包括传统的3DMax手工建模,BIM,倾斜摄影自动建模,激光点云模型,三维地质体模型等等. 三维平台首先要做的是把 ...
- iOS导航栏的正确隐藏方式【转】
简介:在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如 ...
- 导航栏底部黑线隐藏 UINavigationBar hidden Bottom Line
3种方法: 1.大杀器 ,iOS 10.2 最新系统亲测无问题( 添加导航栏分类) https://github.com/samwize/UINavigationBar-Addition/ 2.io ...
- iOS导航栏的正确隐藏方式
在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如何做了 ...
随机推荐
- WaitForXXX等待无效句柄
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- 为什么要进行URL编码
我们都知道Http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割.如"?name1=value1&a ...
- [拾 得] 一枚迷人的贝壳 SHELL / Linux | shell 脚本初步入门
坚持知识分享,该文章由Alopex编著, 转载请注明源地址: http://www.cnblogs.com/alopex/ 索引: 什么是shell shell的分类 shell脚本的执行方式 ...
- Reflection and array
java.lang.Reflect.Array类提供了动态创建和访问数组元素的各种静态方法. package com.sunchao.reflection; import java.lang.refl ...
- MySQL Index Merge Optimization
Index Merge用在通过一些range scans得到检索数据行和合并成一个整体.合并可以通过 unions,intersections,或者unions-intersection运用在底层的扫 ...
- PL/SQL FAQ in installation "make sure you have the 32 bits Oracle client installed" and "Database character set(AL32UTF8) and Client character set (GBK) are different"
requirement : connecting to remote oracle server . now I know the connectionURL :connectionUrl :jdb ...
- Linux指令--cd,pwd
本文参照博客做了修改和总结,感谢作者的分享.http://www.cnblogs.com/peida/archive/2012/10/24/2736501.html cd 命令可以说是Linux中最基 ...
- java常用类--与用户互动
运行java的参数: 主方法:public static void main(String[] args){}:为了让JVM可以自由调用main方法,使用public修饰,JVM通过类来调用main方 ...
- MySQL主从复制-xtrabackup的使用与延时复制(附原理图)
标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 xtrabackup是percona公司针对MySQL开发的一款开源的物理备份工 ...
- Part 7:自定义admin站点--Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...