diff --git a/src/components/content/tunnelScene/PreviewScene.vue b/src/components/content/tunnelScene/PreviewScene.vue index 948ab07..d88500d 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; + +watch( + () => params.largeScreen, + (now) => { + params.largeScreen = now; + fanData = (toRaw(params.largeScreen.value)).frequencyChangerList; + console.log(fanData); + }, + { deep: true } +); // const form = ref({ // tunnelName: "", // serialNumber: "", @@ -133,6 +144,7 @@ async function handleMounted() { // ); // 初始化设备模型 try { + //在这加载隧道 const map = new Map(); map.set("equ_fan", await loadModel("/devicesModel/model2.obj")); @@ -141,8 +153,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 4b65ecc..ec095af 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()); @@ -512,7 +513,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/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) { diff --git a/src/views/tunnel/index.vue b/src/views/tunnel/index.vue index ba4d426..46c466d 100644 --- a/src/views/tunnel/index.vue +++ b/src/views/tunnel/index.vue @@ -1,8 +1,8 @@