//业务监测点 //业务监测点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;; }