From 1ed195b4b507082cc45599c87224c57ef6e3e2c8 Mon Sep 17 00:00:00 2001 From: Hcat <2768237203@qq.com> Date: Wed, 28 Feb 2024 00:35:54 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=B8=80=E5=8D=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/tunnelScene/PreviewScene.vue | 17 ++++++++++++++++- .../content/tunnelScene/sceneClass/demo.js | 2 +- src/views/tunnel/index.vue | 13 ++++++++----- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/components/content/tunnelScene/PreviewScene.vue b/src/components/content/tunnelScene/PreviewScene.vue index 948ab07..b982ae7 100644 --- a/src/components/content/tunnelScene/PreviewScene.vue +++ b/src/components/content/tunnelScene/PreviewScene.vue @@ -63,11 +63,22 @@ const loader = new OBJLoader(); let hdrLoader = new RGBELoader(); let backColorSet = three.sRGBEncoding; const modelStore = useModelSceneStore(); -const params = defineProps(["isedit", "tunnelId", "tunnelLen", "tunnelName"]); //接收参数看是不是编辑模式,如果是编辑模式,则需要做一些处理 +const params = defineProps(["isedit", "tunnelId", "tunnelLen", "tunnelName", "largeScreen"]); //接收参数看是不是编辑模式,如果是编辑模式,则需要做一些处理 let isedit = ref(params.isedit) +let fanData = reactive(); + +watch( + () => params.largeScreen, + (now) => { + params.largeScreen = now; + fanData = (toRaw(params.largeScreen.value)).frequencyChangerList; + console.log(fanData); + }, + { deep: true } +); // const form = ref({ // tunnelName: "", // serialNumber: "", @@ -144,6 +155,7 @@ async function handleMounted() { // console.log("init", params.tunnelId); demo.previewtunnelModeInit(toRaw(modelList.value)); demo.SignsInf(params.tunnelName, String(params.tunnelLen.value)) + checkFanColor(fanData); // watch( // () => params.tunnelId, // (now) => { @@ -343,6 +355,9 @@ function previewEquInfProcess(equipmentList, targetP) { } +function checkFanColor(fanData) { + demo.scene.getObjectByName('1号变频器'); +} diff --git a/src/components/content/tunnelScene/sceneClass/demo.js b/src/components/content/tunnelScene/sceneClass/demo.js index 4b65ecc..6c79dc1 100644 --- a/src/components/content/tunnelScene/sceneClass/demo.js +++ b/src/components/content/tunnelScene/sceneClass/demo.js @@ -512,7 +512,7 @@ export default class Demo { } SignsInf(tunnelName, tunnelLength) { let Signs = this.scene.getObjectByName('streetSigns'); - console.log(Signs); + // console.log(Signs); const tag = new this.THREE.Mesh( new this.THREE.PlaneGeometry(100, 76), new this.THREE.MeshBasicMaterial({ color: "white" }) diff --git a/src/views/tunnel/index.vue b/src/views/tunnel/index.vue index d4b3a97..8238362 100644 --- a/src/views/tunnel/index.vue +++ b/src/views/tunnel/index.vue @@ -34,7 +34,7 @@ + :tunnelName="tunnelName" :largeScreen="largeScreen">
@@ -87,6 +87,7 @@ import { getLargeScreen, getLargeScreenInfo, getTunnelBySiteId } from "@/api/lar import { ElMessage, ElMessageBox } from "element-plus"; import { getUserInfo } from "@/api/login"; import { initSceneData } from "@/api/tunnelScene"; +import { computed } from "vue"; const authStore = useAuthStore(); const router = useRouter(); const previewId = reactive(router.currentRoute.value.params.tunnelId) @@ -190,9 +191,9 @@ const getOtherInfo = () => { currentSiteId.value = res.data.siteOption[0].value currentSite.value = res.data.siteOption[0].label localStorage.setItem('site', currentSite.value) - if(res.data.tunnelOption.length === 0){ + if (res.data.tunnelOption.length === 0) { getTunnel(res.data.siteOption[0].value) - }else { + } else { tunnelList.value = res.data.tunnelOption } if (previewId) { @@ -241,6 +242,7 @@ const getScreenInfo = (id) => { showBadLoading.value = 1 } largeScreenData.value = res.data; + // console.log(largeScreenData.value); } else { ElMessage.warning(res.msg) } @@ -254,13 +256,14 @@ const getScreenInfo = (id) => { } }; //根据站点id获取隧道信息 +let largeScreen = computed(() => largeScreenData) const getTunnel = (id) => { getTunnelBySiteId(id).then((res) => { if (res?.code === 1000) { - if(res.data.length === 0){ + if (res.data.length === 0) { ElMessage.warning('该站点下无隧道, 请新增隧道后再尝试!') tunnelList.value = [] - }else { + } else { getScreenInfo(res.data[0]?.value) tunnelName = res.data[0].label tunnelList.value = res.data 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 2/3] =?UTF-8?q?=E5=BB=96=E6=9D=B0=EF=BC=9A=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E6=A8=A1=E5=BC=8F=E5=BD=93=E9=A3=8E=E6=9C=BA=E7=A6=BB?= =?UTF-8?q?=E7=BA=BF(=E4=B8=8D=E5=9C=A8online=E4=B8=8B)=E4=BC=9A=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=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) { From 3d706c10ca7c284cd04dfe251550d7cd3f39da55 Mon Sep 17 00:00:00 2001 From: Hcat <2768237203@qq.com> Date: Wed, 28 Feb 2024 21:27:36 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=20=20=20=20=E5=BB=96=E6=9D=B0=EF=BC=9A?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E6=A8=A1=E5=BC=8F=E5=BD=93=E9=A3=8E=E6=9C=BA?= =?UTF-8?q?=E7=A6=BB=E7=BA=BF(=E4=B8=8D=E5=9C=A8online=E4=B8=8B)=E4=BC=9A?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=BA=A2=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/content/tunnelScene/PreviewScene.vue | 1 - src/components/content/tunnelScene/sceneClass/demo.js | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/components/content/tunnelScene/PreviewScene.vue b/src/components/content/tunnelScene/PreviewScene.vue index c797e5b..d88500d 100644 --- a/src/components/content/tunnelScene/PreviewScene.vue +++ b/src/components/content/tunnelScene/PreviewScene.vue @@ -135,7 +135,6 @@ async function handleMounted() { //加载HDR背景图片 demo.loadBackground(hdrLoader, backColorSet); - demo.changeFanColor(fanData); //先不加试试??? // watch( // () => params.tunnelId, diff --git a/src/components/content/tunnelScene/sceneClass/demo.js b/src/components/content/tunnelScene/sceneClass/demo.js index d96bc81..ec095af 100644 --- a/src/components/content/tunnelScene/sceneClass/demo.js +++ b/src/components/content/tunnelScene/sceneClass/demo.js @@ -452,9 +452,6 @@ export default class Demo { } ); } - changeFanColor(fanData) { - console.log(this.scene.getObjectByName('fan')); - } /** * * @param {Boolean} option 是否禁用轨道控制器