前言
随着现代工业生产规模的日益扩大,工业自动化应用日益呈现规模化、复杂化和广域分布化特征,同时随着信息化时代的到来,使得用户对组态的功能和结构都提出了更高的要求。
Demo预览
实现
第一步,加载场景代码。
//加载场景代码
var app = new THING.App({
// 场景地址
"url": "http://www.thingjs.com/./uploads/wechat/S2Vyd2lu/scene/CB20190227155744",
});
第二步, 完成各模块之间的连线。先创建一个createLine(points)方法,设置 scrollUV= true;可可开启line的UV动画会看到流动的效果。
function createLine(points) {
var line = app.create({
type: 'RouteLine',
name: "panoLine",
arrowFlag: false,
points: points,
image: 'http://thumb.static.3dmomoda.com/textures/18090613poqikheg.png' // 线路中的纹理资源
});
// 启用 UV 动画
line.scrollUV = true;
line.renderOrder = -10000;
line.width = 8;
return line;
}
第二步,当点击某一模块时弹出面板。
var panel;
app.on('SingleClick', function (ev) {
var object = ev.object;
if (object == null || object.name == "field")
return;
if (panel) {
panel.destroy();
panel = null;
}
panel = new THING.widget.Panel({
width: '150px',
cornerType: 'polyline',
})
// 绑定物体身上相应的属性数据
panel.addString(object, 'name').caption('name');
panel.addString(object, 'id').caption('power');
// 创建UIAnchor面板
var uiAnchor = app.create({
// 类型
type: 'UIAnchor',
// 父节点设置
parent: object,
// 要绑定的页面的 element 对象
element: panel.domElement,
// 设置 localPosition 为 [0, 0, 0]
localPosition: [0, 0, 0],
// 指定页面的哪个点放到localPosition位置上(百分比)
pivot: [-0.2, 2.1]
});
// 将对应的 Panel 存下来 便于后续使用
uiAnchor["panel"] = panel;
return uiAnchor;
});
第三步,添加鼠标悬停,鼠标滑过,点击右键,双击左键等鼠标监听事件。
app.on('click'