From 661b28c879e6d9048d6dc3b4b04bda486c4f22ff Mon Sep 17 00:00:00 2001 From: trp <2477421791@qq.com> Date: Fri, 3 Jan 2025 14:13:43 +0800 Subject: [PATCH] =?UTF-8?q?trp:=E4=BF=AE=E5=A4=8D=E4=BB=BF=E7=9C=9F?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E9=87=8D=E6=96=B0=E6=B8=B2=E6=9F=93=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E4=B8=8D=E4=B8=80=E8=87=B4=E9=97=AE=E9=A2=98=E3=80=81?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E5=BC=82=E5=B8=B8=E5=9B=9E=E6=98=BE=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/content/tunnelScene/sceneClass/demo.js | 2 ++ .../tunnelScene/sceneClass/editEquipment/index.js | 10 ++++++++++ .../tunnelScene/sceneClass/editTunnelInit/index.js | 8 +++++++- .../sceneClass/handleRLclick/handleLhover.js | 1 + .../tunnelScene/sceneClass/previewTunnelInit/index.js | 1 - 5 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/components/content/tunnelScene/sceneClass/demo.js b/src/components/content/tunnelScene/sceneClass/demo.js index 6375bdf..571de53 100644 --- a/src/components/content/tunnelScene/sceneClass/demo.js +++ b/src/components/content/tunnelScene/sceneClass/demo.js @@ -259,7 +259,9 @@ export default class Demo { const raycaster = new this.THREE.Raycaster(); raycaster.setFromCamera(mouse, this.camera); const intersects = raycaster.intersectObjects(hoverModels); + if (intersects.length > 0) { + if(Object.keys(intersects[0].object).includes('enableHover') && !intersects[0].object.enableHover)return; if (!this.preHover) { this.preHover = intersects[0].object; } else { diff --git a/src/components/content/tunnelScene/sceneClass/editEquipment/index.js b/src/components/content/tunnelScene/sceneClass/editEquipment/index.js index ef55395..a969b50 100644 --- a/src/components/content/tunnelScene/sceneClass/editEquipment/index.js +++ b/src/components/content/tunnelScene/sceneClass/editEquipment/index.js @@ -364,6 +364,16 @@ function changeFanColor(fanData, targetPoint, scene) { } export function clearTunnelEquipments() { + if (this.group) this.scene.remove(this.group); + if (this.scene.getObjectByName("boxHelper")) { + const preModel = this.scene.getObjectByName("boxHelper"); + this.scene.remove(preModel); + } + this.scene.traverse(function (point) { + if (/^point/.test(point.name)) { + point.hasDevice = false; + } + }); this.deviceModels.forEach((deviceModel) => { this.scene.remove(this.scene.getObjectById(deviceModel.objId)); }); diff --git a/src/components/content/tunnelScene/sceneClass/editTunnelInit/index.js b/src/components/content/tunnelScene/sceneClass/editTunnelInit/index.js index dc48440..7df7d7d 100644 --- a/src/components/content/tunnelScene/sceneClass/editTunnelInit/index.js +++ b/src/components/content/tunnelScene/sceneClass/editTunnelInit/index.js @@ -1,10 +1,16 @@ export function editTunnelInit(equipmentList) { // 清空设备 - this.clearTunnelEquipments() + this.clearTunnelEquipments(); //初始化将墙壁隐藏起来 equipmentList.forEach((item) => { // 根据定位获取附着点信息 const target = this.scene.getObjectByName(item.position); this.addEquipment(target, item, 1); }); + this.scene.traverse(function (point) { + if (/^point/.test(point.name)) { + point.enableHover = + equipmentList.findIndex((item) => item.position === point.name) >= 0; + } + }); } diff --git a/src/components/content/tunnelScene/sceneClass/handleRLclick/handleLhover.js b/src/components/content/tunnelScene/sceneClass/handleRLclick/handleLhover.js index 7d39f34..e0b34a9 100644 --- a/src/components/content/tunnelScene/sceneClass/handleRLclick/handleLhover.js +++ b/src/components/content/tunnelScene/sceneClass/handleRLclick/handleLhover.js @@ -1,4 +1,5 @@ export function handleLHover(targetPoint) { + // if(Object.keys(targetPoint).includes('enableHover') && !targetPoint.enableHover)return; if (this.tag3CSS2DObj.element.style.opacity != '1') { // 保存进入状态 this._saveState(); diff --git a/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js b/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js index 4664584..d9d4cbf 100644 --- a/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js +++ b/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js @@ -11,7 +11,6 @@ export default function previewtunnelModeInit(equipmentList, fanData) { // } // } // console.log(equipmentList); - equipmentList.forEach((item) => { this.addEquipment(this.scene.getObjectByName(item.position), item, fanData); });