//业务监测点 //业务监测点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; if (item.sourceType == 0) { marker3dConfig.src = _base64_monitor.Docking; } else { marker3dConfig.src = _base64_monitor.Analyse; } let boundingBox = _modeler.getBoundingBoxById(item.code); 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.code; 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.code + item.sourceType;; }