目录

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

本次我们探讨模型颜色操作,正如您已经注意到的模型在默认情况下具有合理的图形表示形式。这是从 IFC 模型, 它应该在所有的工具看起来相同, 它应该看起来像在您或您的用户的创作环境。但是,有时能够对这种表示进行修改以向用户报告某种结果 (分类, 错误报告, 冲突检测等) 非常重要。

我们将使用在HTML 元素的onclick 属性中定义的Javascript函数使用难看的代码,这是不推荐的做法,但为了清晰和简单起见,鼓励您遵循这些准则来 编写可持续和清晰的Web应用程序。

首先有必要定义自己的风格,有简单的函数 defineStyle()来做到这一点。您最多可以定义224种样式。我们将在以下代码中为每种产品类型定义新颜色:

<button onclick="Recolour()">按类型重新着色</button>
<button onclick="if (viewer) viewer.resetStyles();">重置</button>
<script type="text/javascript">
function Recolour() {
if (!viewer) return;
var index = 0;
for (var i in xProductType) {
var type = xProductType[i];
var colour = [Math.random() * 255, Math.random() * 255, Math.random() * 255, 255];
viewer.defineStyle(index, colour);
viewer.setStyle(index, type);
index++;
}
};
</script>

您可以根据需要扩展此示例。只需定义0 - 224种颜色样式,并将其设置为产品或产品类型的覆盖样式。如果您想将样式重置为其默认使用的resetStyles()函数。

还有一个视觉特征,那就是突出显示。你可以把它看作是一个选择,但这样做并不是太好。它将所有最终的选择逻辑留给你。这只是一种视觉表现。

<select id="cmbSelection">
<option value="noAction">无</option>
<option value="select">选择</option>
</select>
<button onclick="if (viewer) viewer.resetStates()">重置</button>
<script type="text/javascript">
function initHighlighting() {
viewer.on('pick', function (args) {
var cmb = document.getElementById('cmbSelection');
var option = cmb.value;
switch (option) {
case 'select':
viewer.setState(xState.HIGHLIGHTED, [args.id]);
break;
case 'hide':
viewer.setState(xState.HIDDEN, [args.id]);
break;
default:
break;
}
});
};
</script>

这种方法的好处在于突出显示与其他视觉外观是分开的。您不能同时突出显示和隐藏产品,但这是有道理的。重要的是您可以显示分析结果并同时进行选择。如果你放弃选择,你仍然有一个有效的结果表示。您通常可以以任何方式组合样式状态

整体的HTML 代码 如下:

 <link href="styles/xviewer-styles.css" rel="stylesheet" />
<script src="scripts/xbim-viewer.debug.bundle.js"></script>
<body>
<div id="main">
<div>
<div class="xviewer-control">
<button onclick="Recolour()">按类型重新着色</button>
<button onclick="if (viewer) viewer.resetStyles();">重置样式</button>
<script type="text/javascript">
function Recolour() {
if (!viewer) return;
var index = 0;
for (var i in xProductType) {
var type = xProductType[i];
var colour = [Math.random() * 255, Math.random() * 255, Math.random() * 255, 255];
viewer.defineStyle(index, colour);
viewer.setStyle(index, type);
index++;
}
};
</script>
</div>
<div class="xviewer-control">
选择操作:
<select id="cmbSelection">
<option value="noAction">无</option>
<option value="select">选择</option>
<option value="hide">隐藏</option>
</select>
<button onclick="if (viewer) viewer.resetStates()">重置</button>
<script type="text/javascript">
function initHighlighting() {
viewer.on('pick', function (args) {
var cmb = document.getElementById('cmbSelection');
var option = cmb.value;
switch (option) {
case 'select':
viewer.setState(xState.HIGHLIGHTED, [args.id]);
break;
case 'hide':
viewer.setState(xState.HIDDEN, [args.id]);
break;
default:
break;
}
});
};
</script>
</div>
</div> <canvas id="viewer" width="500" height="300"></canvas>
<div>
您选择产品的编号: <span id="productId">model</span>.
</div>
<div id="errors"></div> <script type="text/javascript">
//检查
var check = xViewer.check();
var viewer = null;
var pickedId = null;
if (check.noErrors) {
viewer = new xViewer('viewer');
viewer.on('loaded', function () {
initHighlighting();
viewer.start();
}); viewer.on('error', function (arg) {
var container = document.getElementById('errors');
if (container) {
//相关的错误
container.innerHTML = "<pre style='color:red;'>" + arg.message + "</pre> <br />" + container.innerHTML;
}
}); viewer.on('pick', function (args) {
var id = args.id;
var span = document.getElementById('productId');
if (span) {
span.innerHTML = id ? id : 'model';
} });
viewer.load('data/SampleHouse.wexbim');
}
else {
var msg = document.getElementById('errors');
for (var i in check.errors) {
var error = check.errors[i];
msg.innerHTML += "<pre style='color: red;'>" + error + "</pre> <br />";
}
}
</script> </div>

xBIM WeXplorer 设置模型颜色的更多相关文章

  1. xBIM 基础13 WeXplorer 设置模型颜色

    系列目录    [已更新最新开发文章,点击查看详细]  默认情况下模型具有合理的图形表示.这是从IFC模型中获取的,它应该在所有工具中看起来相同,它应该与您或您的用户的创作环境中的相同.但有时候能够改 ...

  2. xBIM WeXplorer

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

  3. xBIM WeXplorer xViewer 基本应用

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

  4. xBIM WeXplorer xViewer 浏览器检查

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

  5. xBIM WeXplorer xViewer的导航,相机、剖切、隐藏 等操作

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

  6. xBIM 基本的模型操作

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  7. 【代码笔记】iOS-UITextField设置placeholder颜色

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  8. ubuntu 终端设置(颜色与长路径)

    Linux给人最大的享受就是可以根据个人喜好去定制令自己舒服的系统配置,像终端颜色的设置就是一个典型的例子. 图1 系统默认状态下的终端显示     在没有经过自定义配置的终端下工作久了,难免容易疲劳 ...

  9. Pyqt 设置 背景颜色和背景图片、 QPalette 调色板 与QPainter 画板区别 、 不规则图片

    设置 背景颜色和背景图片 首先设置autoFillBackground属性为真然后定义一个QPalette对象设置QPalette对象的背景属性(颜色或图片)最后设置QWidget对象的Palette ...

随机推荐

  1. WEB安全_csrf攻击

    什么是xss跨站攻击? 正常访问服务器A,用户信任并在服务器A上登录操作,服务器A保存着用户的session数据,这时用户并没有退出服务器A的系统,然后访问危险服务器B,本来是用户请求服务器返回数据, ...

  2. common-logging--源码之SimpleLog

    common-logging源码Log接口 在common-logging的源码中,将log核心类抽象成了一个Log接口. 这里贴出Log接口的源码: /* * Licensed to the Apa ...

  3. Runtime.addShutdownHook的用法

    原文出处:http://kim-miao.iteye.com/blog/1662550.感谢作者的无私分享. 一.Runtime.addShutdownHook理解 在看别人的代码时,发现其中有这个方 ...

  4. jdbc与java.sql

    JDBC连接操作数据库流程:1.将数据库驱动jar包放在lib文件夹下. 2.定义驱动名(driver),数据库url,username,password字符串常量 3.注册数据库驱动Class.fo ...

  5. c++ singleton单例模式

    方法1:加锁的经典懒汉实现: class singleton { public: static pthread_mutex_t mutex; static singleton* initance(); ...

  6. Android Studio库依赖问题

    Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android. ...

  7. golang变量作用域问题-避免使用全局变量

    最近遇到了一个变量作用域的问题,一个比较低级的问题,可能作为一个熟手不应该犯这样的低级错误,但是golang的语法特点可能让你稍微不注意就踩坑,嘿嘿. 变量作用域 全局变量的作用域是整个包,局部变量的 ...

  8. Struts2中拦截器的使用与配置

    一,拦截器是什么? 拦截器是在Action执行之前和之后执行的代码,是一个类似于过滤器的类: 二,拦截器的作用 拦截器拦截Action的请求,在Action之前或之后实现某项功能: 三,拦截器的特点 ...

  9. DAY11-Java中的类--接上篇

    一.用户自定义类 1.写先出一个简单的Employee类作为例子说明. 代码如下: import java.time.LocalDate; /** * 自定义方法练习--测试 这个程序中包含了两个类E ...

  10. Spring学习一

    1.POJO和JavaBean的区别 POJO 和JavaBean是我们常见的两个关键字,一般容易混淆,POJO全称是Plain Ordinary Java Object / Pure Old Jav ...