From 70364c8e10537f02797331a2b8b0684f675f1f3f Mon Sep 17 00:00:00 2001 From: Hcat <2768237203@qq.com> Date: Wed, 28 Feb 2024 21:23:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BB=96=E6=9D=B0=EF=BC=9A=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E5=BD=93=E9=A3=8E=E6=9C=BA=E7=A6=BB=E7=BA=BF?= =?UTF-8?q?(=E4=B8=8D=E5=9C=A8online=E4=B8=8B)=E4=BC=9A=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E7=BA=A2=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/tunnelScene/PreviewScene.vue | 4 +- .../content/tunnelScene/sceneClass/demo.js | 3 +- .../sceneClass/editEquipment/index.js | 40 ++++++++++++++++++- .../sceneClass/previewTunnelInit/index.js | 4 +- 4 files changed, 45 insertions(+), 6 deletions(-) diff --git a/src/components/content/tunnelScene/PreviewScene.vue b/src/components/content/tunnelScene/PreviewScene.vue index 348f5d8..c797e5b 100644 --- a/src/components/content/tunnelScene/PreviewScene.vue +++ b/src/components/content/tunnelScene/PreviewScene.vue @@ -145,6 +145,7 @@ async function handleMounted() { // ); // 初始化设备模型 try { + //在这加载隧道 const map = new Map(); map.set("equ_fan", await loadModel("/devicesModel/model2.obj")); @@ -153,8 +154,9 @@ async function handleMounted() { demo.initDevicesModel(map); // const equipmentList = await store.getEquipmentList(); modelList.value = await modelStore.initModelDataPreview(params.tunnelId); + // console.log(modelList.value); // console.log("init", params.tunnelId); - demo.previewtunnelModeInit(toRaw(modelList.value)); + demo.previewtunnelModeInit(toRaw(modelList.value), fanData); demo.SignsInf(params.tunnelName, String(params.tunnelLen.value)) // watch( // () => params.tunnelId, diff --git a/src/components/content/tunnelScene/sceneClass/demo.js b/src/components/content/tunnelScene/sceneClass/demo.js index 1adc142..d96bc81 100644 --- a/src/components/content/tunnelScene/sceneClass/demo.js +++ b/src/components/content/tunnelScene/sceneClass/demo.js @@ -388,6 +388,7 @@ export default class Demo { // 初始化风机颜色 this.equMap.get("equ_fan").traverse((v) => { v.material = new this.THREE.MeshBasicMaterial(); + // v.material.color = new this.THREE.Color(0xFF0000); v.material.color = new this.THREE.Color(0xC0C0C0); if (/^leaf/.test(v.name) || /^roller/.test(v.name)) { group.add(v.clone()); @@ -452,7 +453,7 @@ export default class Demo { ); } changeFanColor(fanData) { - console.log(this.scene.getObjectById(22)); + console.log(this.scene.getObjectByName('fan')); } /** * diff --git a/src/components/content/tunnelScene/sceneClass/editEquipment/index.js b/src/components/content/tunnelScene/sceneClass/editEquipment/index.js index eb47537..4b5c8b2 100644 --- a/src/components/content/tunnelScene/sceneClass/editEquipment/index.js +++ b/src/components/content/tunnelScene/sceneClass/editEquipment/index.js @@ -8,14 +8,14 @@ import EquipmentTag from "../utils/EquipmentTag"; //formInfo需要的信息这里包括了 //equipmentType -function addEquipment(targetPoint, formInfo) { +function addEquipment(targetPoint, formInfo, fanData) { if (targetPoint.hasDevice) { return; } switch (formInfo.equipmentType) { case "frequency": - handleFanEqu.call(this, targetPoint, formInfo); + handleFanEqu.call(this, targetPoint, formInfo, fanData); break; // 还没有风压阀的模型,所以先用其他设备传感器实现 // case "valve": @@ -177,6 +177,7 @@ function handleOtherEqu(targetPoint, equipmentInfo) { function handleFanEqu( targetPoint, equipmentInfo, + fanData, speed = Math.random().toFixed(1) * 1000 ) { // 由于风机比较多,每个风机转速不一直,保存在一个数中遍历 @@ -196,6 +197,41 @@ function handleFanEqu( id: equMesh.id, //模型在场景id ...equipmentInfo, }; + // console.log(targetPoint.info); + //风机颜色重新命名 + let fan1 = fanData[0].equipmentType + let fan2 = fanData[1].equipmentType + if (targetPoint.info.typeKey == fan1) { + if (fanData[0].online == false) { + this.scene.traverse(function (child) { + if (child.id === 1005) { + child.traverse(function (obj) { + // console.log(obj); + // 判断子对象是否是物体,如果是,更改其颜色 + if (obj.isMesh) { + obj.material.color.set(0xFF0000) + } + }) + } + }); + } + } else { + if (fanData[1].online == false) { + this.scene.traverse(function (child) { + if (child.id === 1005) { + child.traverse(function (obj) { + // console.log(obj); + // 判断子对象是否是物体,如果是,更改其颜色 + if (obj.isMesh) { + obj.material.color.set(0xFF0000) + } + }) + } + }); + } + } + // console.log(fanData); + // 定义风机旋转 const fanLeaf = equMesh.getObjectByName("fan_leafs"); diff --git a/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js b/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js index 59b98c4..4664584 100644 --- a/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js +++ b/src/components/content/tunnelScene/sceneClass/previewTunnelInit/index.js @@ -1,5 +1,5 @@ -export default function previewtunnelModeInit(equipmentList) { +export default function previewtunnelModeInit(equipmentList, fanData) { //初始化将墙壁隐藏起来 // for (let line = 1; line <= 20; line++) { // if (line < 10) { @@ -13,7 +13,7 @@ export default function previewtunnelModeInit(equipmentList) { // console.log(equipmentList); equipmentList.forEach((item) => { - this.addEquipment(this.scene.getObjectByName(item.position), item); + this.addEquipment(this.scene.getObjectByName(item.position), item, fanData); }); //进行预览和编辑模式的一些操作 if (this.isedit == false) {