lixiaojun
2024-11-23 979fa511e23ad4cb8d7e25b813aade4aaec45535
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//业务监测点
 
 
//业务监测点id列表
let _logicMonitorIds = new Set();
 
//设置业务监测点
function setLogicMonitors(data) {
    initialMarker3dContainer();
    clearLogicMonitors();
    if (data == null || data.length < 1) {
        return;
    }
    data.forEach(item => {
        let marker3d = createLogicMonitor(item);
        let logicMonitorId = marker3d.getId();
        _logicMonitorIds.add(logicMonitorId);
        _marker3dContainer.addItem(marker3d);
    });
    _viewer.render();
}
 
//添加业务监测点
function addLogicMonitor(item) {
    let marker3d = createLogicMonitor(item);
    if (marker3d == null) {
        return;
    }
    var logicMonitorId = marker3d.getId();
    _logicMonitorIds.add(logicMonitorId);
    _marker3dContainer.addItem(marker3d);
    _viewer.render();
}
 
//创建业务监测点
function createLogicMonitor(item) {
    let marker3dConfig = new Glodon.Bimface.Plugins.Marker3D.Marker3DConfig();
    marker3dConfig.viewer = _viewer;
    marker3dConfig.src = "../imgs/" + item.propName + ".png";
    if (item.propName == "CalcuPress") {
        marker3dConfig.src = _base64_monitor.CalcuPress;
    }
    else if (item.propName == "CalcuHead") {
        marker3dConfig.src = _base64_monitor.CalcuHead;
    }
    else if (item.propName == "CalcuDemand") {
        marker3dConfig.src = _base64_monitor.CalcuDemand;
    }
    else if (item.propName == "CalcuFlow") {
        marker3dConfig.src = _base64_monitor.CalcuFlow;
    }
    else if (item.propName == "CalcuVelocity") {
        marker3dConfig.src = _base64_monitor.CalcuVelocity;
    }
    else if (item.propName == "CalcuHeadLoss") {
        marker3dConfig.src = _base64_monitor.CalcuHeadLoss;
    }
    else if (item.propName == "CalcuQ") {
        marker3dConfig.src = _base64_monitor.CalcuQ;
    }
    else if (item.propName == "CalcuPr") {
        marker3dConfig.src = _base64_monitor.CalcuPr;
    }
    else if (item.propName == "CalcuH") {
        marker3dConfig.src = _base64_monitor.CalcuH;
    }
    else if (item.propName == "CalcuP") {
        marker3dConfig.src = _base64_monitor.CalcuP;
    }
    else if (item.propName == "CalcuE") {
        marker3dConfig.src = _base64_monitor.CalcuE;
    }
    let boundingBox = _modeler.getBoundingBoxById(item.id);
    let boundingBoxMin = boundingBox.min;
    let boundingBoxMax = boundingBox.max;
    marker3dConfig.worldPosition = {
        x: (boundingBoxMin.x + boundingBoxMax.x) / 2,
        y: (boundingBoxMin.y + boundingBoxMax.y) / 2,
        z: (boundingBoxMin.z + boundingBoxMax.z) / 2 + 30
    };
    marker3dConfig.objectId = item.id;
    marker3dConfig.tooltip = item.description;
    marker3dConfig.id = getLogicMonitorId(item);
    let marker3d = new Glodon.Bimface.Plugins.Marker3D.Marker3D(marker3dConfig);
    return marker3d;
}
 
//移除业务监测点
function removeLogicMonitor(item) {
    if (_logicMonitorIds.size > 0) {
        let logicMonitorId = getLogicMonitorId(item);
        _logicMonitorIds.delete(logicMonitorId);
        _marker3dContainer.removeItemById(logicMonitorId);
        _viewer.render();
    }
}
 
//清除业务监测点
function clearLogicMonitors() {
    if (_marker3dContainer == null) {
        return;
    }
    if (_logicMonitorIds.size > 0) {
        _logicMonitorIds.forEach(x => _marker3dContainer.removeItemById(x));
        _logicMonitorIds.clear();
        _viewer.render();
    }
}
 
//获取业务监测点id
function getLogicMonitorId(item) {
    return "LogicMonitor" + item.id + item.propName;;
}