From 87e8ccb47530bd85f2432630376624cb6ea3355b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E7=AC=99=E6=AD=8C?= <2277317060@qq.com> Date: Thu, 19 Sep 2024 13:22:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0agv=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw-ui/src/assets/board/info.png | Bin 0 -> 4390 bytes hw-ui/src/assets/board/info2.png | Bin 0 -> 3511 bytes hw-ui/src/components/model/demo.vue | 95 +++++++++++++------- hw-ui/src/views/board/model/agv.js | 68 +++++++++++++-- hw-ui/src/views/board/model/index.vue | 121 +++++++++++++++++--------- 5 files changed, 206 insertions(+), 78 deletions(-) create mode 100644 hw-ui/src/assets/board/info.png create mode 100644 hw-ui/src/assets/board/info2.png diff --git a/hw-ui/src/assets/board/info.png b/hw-ui/src/assets/board/info.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd2279bb1cddd53a883c41c93aa15595d460b58 GIT binary patch literal 4390 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 literal 0 HcmV?d00001 diff --git a/hw-ui/src/assets/board/info2.png b/hw-ui/src/assets/board/info2.png new file mode 100644 index 0000000000000000000000000000000000000000..8f1bd4cb32d9632bf0f56ef69eef4fc7b5a9e452 GIT binary patch literal 3511 zcmd54){ooM_8i*VLDMQ#El~|sO*JUeT;i8fXyhb3ht zK_Jj!z|_bV1d@P>=Y_u?5cj9j3zx*hA3>(h!61;7^naQJsGv|r?Cb*=8Q4b@a#@d) z&&+!C@~4&tDXhs?yhoIJS`UwjuRKg8p8w6_=003G_~^ItTh+FIW>;NYkV|!GTyJ+6 zVL!+v7!v2*KblrgGU`_rUFp#^Q|H+|-8uZEYa^cGOl+b_}I6x~CMSLvqc{t8* zFB^<&QuL5e$;PUcd#2pN(S=Wp)^QO_N(kJE<&CY8D$D8R@ z^!ONhsh$t2hP->@s>bvzsQClHj-sFxdV^O$( zuHFxG^c6=WS_de^VryDy!vahTx{qZ3n8xhKl#iyTXwK=YWp$gcXmwZPXN8M;fllfL(w8cD= z)Qewi%``d`I<2C~sH{!X8sv?+`*ILEY%?{D&p0c0O$j~U9)*23(hMd&B{g@@ zK6TT~V1TnP0AeQjT%WjNT;V2PURTkx78o_+A&DYkxZ2G7D!0H_?;bYv{+Z|W$ohQi zq*4zDve0$eYJbwEevyLP9^bQe(He|4-}*avZ*6~TR`nr3zwBwsrb>I&NDBAlv((bo zmsUhfn}W5o;Uek6PjMn-U77j?2nr;(2Mw%((+Nvqr>Zs#1O(1>bd z(ocMfnSVMjHLry%#Ay8W`&yz(%pCoG7ET7O0IcgWd>%i_K4f+oB?L(CYjx5 z-n{_ID$qrpVoYV$q#C18ZzlwEYGn(c6R*CZKlm-1+8;E;{;*S;W!Mo~Rh`bVy-E!d(~8a23u{w!k`K` zW7>}6hA`sW$EM2#!{?PydEl0q^;#5EQ$wq5t~Aj+#a~8$mL^twRSaT^LOtu!1V7#t zBB(*~gp*i@F`3!<(D5+`S6|9q--eC}di0RP2&_BDD*7R(Ct^cLrP`4BZfO-&s$g;4 z(n$a!C@w#ldc)`tC^J-%M!|U+lte{1&xo%&sfAA{X0E4=M2_Lb9 zyLQi|Uf+tG6CChLiHOm^-LSbBM^R71N!yi@XPBMIX=4q=lROe5;x`}NPu^(}!-!|s zio_QKT*08g>Vpjd$x<>M22upMe*ZC0J#$RbC+}P3$kjWE%Lz~CXZw#a@oq|ThEHV^ zWW0*RxfL)>K1&E(``|-5`rTHih+5O|eP#2dci>LkdS}m$tvdnf)VzKyub&u=RPi<; zO%6As+PMC_N0!tpdi$TAT#hauYTft}U;N^1VAW=bh1aPIQdr6b4hU{)CFu>W^l)XCLr0~%?6G}8w;bsT(B!caGuiC* zzkpUq`$f)jl;y(eM<4bciSHD9pPR4ig9N;P7fj?;1o<-I%4dUP@u`yKjK`k=BQ1) zfnDT;0W|X{2fFnr+Sce$=WKy}vvU|3r(xQ1&L;`yt<23{e}eN9w0=*Jd9vweM*n9V zEZSmPT0$Xb-4Y-`A2o2QdXp0*gnwhOl($#BI@CFBT`vYYUaxqpy$AuLjj13vXe3~5 z<^tttLpFexKk1{&+}w4jd)(Yn7|6-x4t+|@)x2_1c7p+ZSQ0H*Yk9^!j{@Oy-r!TIshy}L@#hk*cgC*e=kx^%!!K{u2NCcir}C{Z20TbjE3s7;(sm&7Md z0oz|kqgEa1q!1b%x0KgV-Sl=(AKR+41SlT3=eSC0YF`o~d41;JfhD?G^~Jhb)n`{n zCk3Rv>5$`{HM9PK(Kn~3x+W@D!gsBKD1dG#woPSDPO5}0pi63pPe|PJ60h(~w?BtW zg^QnW@^>0|`F`3;pwX{n%Oi|vNhfecCMa2~1(}oti7R5Y-@B%Gp!0#zp(kGwWI&~2 zOvYka{`Wc*@|Cq&T9la!0R7wEZj#fYz5=NEQq8Y;tk&`k375ZZTC~qgfOt}BzrxZJ zNXVpQ{|Z=s2bA1n_6rp~sgFU%Xyso>LigSPl@gEtLLU*W@Z`(w#9xSI5|4B~_&*^o zF%RCmCRX78<~nR?-xb;aPq^2yApyhBLyHf9+K_ukLYYA=n_aIJ#Xm6+@TZj#{^q@B F{{sfY*dhP` literal 0 HcmV?d00001 diff --git a/hw-ui/src/components/model/demo.vue b/hw-ui/src/components/model/demo.vue index 61610f21..8d75a9a4 100644 --- a/hw-ui/src/components/model/demo.vue +++ b/hw-ui/src/components/model/demo.vue @@ -1,9 +1,16 @@ @@ -11,41 +18,69 @@ import Chart from '@/components/board/Chart' export default { - name: "Demo", - components: {Chart}, - mounted() { - this.$refs.chart.setData({ - xAxis: { - type: 'category', - data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] - }, - yAxis: { - type: 'value' - }, - series: [ - { - data: [150, 230, 224, 218, 135, 147, 260], - type: 'line' - } - ] - }) + name: 'Demo', + components: { Chart }, + data() { + return { + data: {}, + online: false + } }, - metaInfo() { + mounted() { + }, + methods: { + setData(e) { + this.data = e + }, + changeOnline() { + this.online = true + setTimeout(() => { + this.online = false + }, 5000) + } } -}; +} diff --git a/hw-ui/src/views/board/model/agv.js b/hw-ui/src/views/board/model/agv.js index 758efe6f..7b38aba3 100644 --- a/hw-ui/src/views/board/model/agv.js +++ b/hw-ui/src/views/board/model/agv.js @@ -156,6 +156,20 @@ let agvData = { } } +let agvLabel = { + '2AGV': null, + '2AGVData': null, + '3AGV': null, + '3AGVData': null, + '5CCAGV': null, + '5CCAGVData': null, + '5BFAGV': null, + '5BFAGVData': null, + '5CTU': null, + '5CTUData': null + +} + let loadAGVEnum = { 'beifushiAGV005': 'floor5BFAGV', 'chacheshiAGV005': 'floor5CCAGV', @@ -184,6 +198,13 @@ let LoadAGVLocationEnum = { 'chacheshiAGV002': 'floor2AGVGroupLocation', 'chacheshiAGV003': 'floor3AGVGroupLocation' } +let AGVLabelEnum = { + 'beifushiAGV005': '5BFAGV', + 'chacheshiAGV005': '5CCAGV', + 'CTU005': '5CTU', + 'chacheshiAGV002': '2AGV', + 'chacheshiAGV003': '3AGV' +} let axisEnum = { 'chacheshiAGV002': { x: 9, @@ -210,16 +231,19 @@ const loadingManager = new THREE.LoadingManager() loadingManager.onLoad = function() { isAGVLoading = true agvData.floor5CTUGroup.position.z = -205 - AGVAnimation('5CTU', '5CTU', 'x', 7) + agvLabel['5CTU'].position.z = -205 agvData.floor5CTUGroup.position.x = 100 + agvLabel['5CTU'].position.x = -205 + AGVAnimation('5CTU', '5CTU', 'x', 7) agvData.floor5CTUGroup.rotation.y = 90 * (Math.PI / 180) } -const loadAGV = (r) => { + const loadAGV = (r) => { r.forEach(e => { let agvName = loadAGVEnum[e] let agvGroupName = loadAGVGroupEnum[e] let agvDataName = LoadAGVDataEnum[e] let agvLocationName = LoadAGVLocationEnum[e] + let agvLabelData = AGVLabelEnum[e] let mtlLoader = new MTLLoader() mtlLoader.load(`/model/${e}/${e}.mtl`, materials => { @@ -242,11 +266,13 @@ const loadAGV = (r) => { axis[v] += axisDis[v] }) agvData[agvGroupName].position.set(axis.x, axis.y, axis.z) + agvLabel[agvLabelData].position.set(axis.x, axis.y, axis.z) agvData[agvLocationName] = axis object.position.set(-axis.x, -axis.y, -axis.z) agvData[agvDataName].x = axis.x agvData[agvDataName].z = axis.z scene.add(agvData[agvGroupName]) + scene.add(agvLabel[agvLabelData]) object.name = 'tishengji_tuopan' // scene.add(object) @@ -264,7 +290,7 @@ const loadAGV = (r) => { }) }) } -loadAGV(['chacheshiAGV002', 'chacheshiAGV003', 'chacheshiAGV005', 'beifushiAGV005', 'CTU005']) + // loadAGV(['chacheshiAGV003']) let AGVGroupEnum = { @@ -331,6 +357,7 @@ const AGVAnimationF = (item, type, newLocation = {}, time = 2000) => { let AGVLocationData = AGVDataEnum[item] let group = groupEnum[item] let floor = floorEnum[item] + let agvLabelData = agvLabel?.[item] switch (type) { case 'xz': { return new Promise(async(resolve, reject) => { @@ -350,10 +377,12 @@ const AGVAnimationF = (item, type, newLocation = {}, time = 2000) => { rotate = 360 - rotate } - await AGVAnimationF(item, 'rotate', { rotate: rotate }) + if (xlength === 0 && zlength === 0) { + + } else { + await AGVAnimationF(item, 'rotate', { rotate: rotate }) + } - // let distancex = locationx - agvData[AGVLocationData].x - // let distancez = locationz - agvData[AGVLocationData].z let tween = new TWEEN.Tween(agvData[group].position) .to({ x: locationx, z: locationz }, time) .onComplete(() => { @@ -366,6 +395,18 @@ const AGVAnimationF = (item, type, newLocation = {}, time = 2000) => { tween = null }) .start() + + if(agvLabelData){ + let tween1 = new TWEEN.Tween(agvLabelData.position) + .to({ x: locationx, z: locationz }, time) + .onComplete(() => { + tween1.stop() + tween1 = null + }) + .start() + } + + }) } case 'x': { @@ -390,6 +431,16 @@ const AGVAnimationF = (item, type, newLocation = {}, time = 2000) => { tween = null }) .start() + + if(agvLabelData){ + let tween1 = new TWEEN.Tween(agvLabelData.position) + .to({ x: location }, time) + .onComplete(() => { + tween1.stop() + tween1 = null + }) + .start() + } }) } case 'z': { @@ -454,11 +505,12 @@ const AGVAnimation = (e, item, type, newLocation = {}, time = 2000) => { } } - export { agvData, AGVAnimation, floorOrigin, floorData1, - isAGVLoading + isAGVLoading, + agvLabel, + loadAGV } diff --git a/hw-ui/src/views/board/model/index.vue b/hw-ui/src/views/board/model/index.vue index 19e5095d..10b51bd5 100644 --- a/hw-ui/src/views/board/model/index.vue +++ b/hw-ui/src/views/board/model/index.vue @@ -3,7 +3,19 @@
- + +
+
+ +
+
+ +
+
+ +
+
+
@@ -92,7 +104,7 @@ import { MTLLoader } from 'three/examples/jsm/loaders/MTLLoader.js' import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js' import { CSS2DObject, CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer' import Demo from '@/components/model/demo.vue' -import {getAgvDeviceStatus} from '@/api/board/model' +import { getAgvDeviceStatus } from '@/api/board/model' import { tuopanInishengji, @@ -116,7 +128,7 @@ import { } from './setThree' import { - AGVAnimation, agvData,floorOrigin,floorData1,isAGVLoading + AGVAnimation, agvData, floorOrigin, floorData1, isAGVLoading, agvLabel, loadAGV } from './agv' const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100 @@ -129,72 +141,101 @@ export default { num1: 90, floor: 1, tuopanFloor: 1, - fx:'', - rotate:0 + fx: '', + rotate: 0 } }, mounted() { - setInterval(()=>{ - if(isLoading && isAGVLoading){ - getAgvDeviceStatus().then(e=>{ - console.log(e) - e.data.agvStatusList.forEach(v=>{ - if(v.agvName === "2楼叉车"){ - let x = (v.posX - floorOrigin.floor2Data.x) / floorData1.floor2Data.x - let z = (v.posY - floorOrigin.floor2Data.y) / floorData1.floor2Data.z - console.log({x,z}) + setInterval(() => { + if (isLoading && isAGVLoading) { + getAgvDeviceStatus().then(e => { + this.modelData = e.data + e.data.agvStatusList.forEach(v => { + if (v.agvName === '2楼叉车') { + this.$refs.demoData.setData(v) + let x = (v.posX - floorOrigin.floor2Data.x) / floorData1.floor2Data.x + let z = (v.posY - floorOrigin.floor2Data.y) / floorData1.floor2Data.z AGVAnimation('2AGV', '2AGV', 'xz', { x: x * 100, z: z * 100 }) } - if(v.agvName === "3楼叉车"){ - let x = (v.posX - floorOrigin.floor3Data.x) / floorData1.floor3Data.x - let z = (v.posY - floorOrigin.floor3Data.y) / floorData1.floor3Data.z + if (v.agvName === '3楼叉车') { + this.$refs.demo1Data.setData(v) + let x = (v.posX - floorOrigin.floor3Data.x) / floorData1.floor3Data.x + let z = (v.posY - floorOrigin.floor3Data.y) / floorData1.floor3Data.z AGVAnimation('3AGV', '3AGV', 'xz', { x: x * 100, z: z * 100 }) } - if(v.agvName === "5楼叉车"){ - let x = (v.posX - floorOrigin.floor5Data.x) / floorData1.floor5Data.x - let z = (v.posY - floorOrigin.floor5Data.y) / floorData1.floor5Data.z + if (v.agvName === '5楼叉车') { + this.$refs.demo2Data.setData(v) + let x = (v.posX - floorOrigin.floor5Data.x) / floorData1.floor5Data.x + let z = (v.posY - floorOrigin.floor5Data.y) / floorData1.floor5Data.z AGVAnimation('5CCAGV', '5CCAGV', 'xz', { x: x * 100, z: z * 100 }) } - if(v.agvName === "5楼背负式"){ - let x = (v.posX - floorOrigin.floor5Data.x) / floorData1.floor5Data.x - let z = (v.posY - floorOrigin.floor5Data.y) / floorData1.floor5Data.z + if (v.agvName === '5楼背负式') { + this.$refs.demo3Data.setData(v) + let x = (v.posX - floorOrigin.floor5Data.x) / floorData1.floor5Data.x + let z = (v.posY - floorOrigin.floor5Data.y) / floorData1.floor5Data.z AGVAnimation('5BFAGV', '5BFAGV', 'xz', { x: x * 100, z: z * 100 }) } - if(v.agvName === "5楼CTU"){ - let x = (v.posX - floorOrigin.floor5Data.x) / floorData1.floor5Data.x - let z = (v.posY - floorOrigin.floor5Data.y) / floorData1.floor5Data.z + if (v.agvName === '5楼CTU') { + this.$refs.demo4Data.setData(v) + let x = (v.posX - floorOrigin.floor5Data.x) / floorData1.floor5Data.x + let z = (v.posY - floorOrigin.floor5Data.y) / floorData1.floor5Data.z AGVAnimation('5CTU', '5CTU', 'x', { x: x * 100, z: z * 100 }) } }) - + let deviseInfo = [] + e.data.realtimeStatusList.forEach(v => { + if (deviseInfo.map(vv => vv.deviceId).includes(v.deviceId)) { + deviseInfo[deviseInfo.indexOf(deviseInfo.find(vv => vv.deviceId === v.deviceId))].info.push({ + name: v.statusName, + value: v.statusValue, + id: v.statusId, + code: v.statusCode + }) + } else { + deviseInfo.push({ + deviceId: v.deviceId, + deviceName: v.deviceName, + info: [ + { + name: v.statusName, + value: v.statusValue, + id: v.statusId, + code: v.statusCode + } + ] + }) + } + }) + console.log(deviseInfo) }) } - },2500) + }, 2500) this.$refs.threeJs.appendChild(renderer.domElement) // controls.rotateSpeed = -controls.rotateSpeed; // controls.enableZoom = false // loadF([ 'tishengji_tuopan']) - loadF(['2-1AGVchongdianzhuang005', '2-2AGVchongdianzhuang005', 'AGVchongdianzhuang002', 'AGVchongdianzhuang003', 'AGVchongdianzhuang005', 'changfang002', 'changfang003', 'changfang005', 'liku005', 'quanzidongchaibaojizhaungpeixian003', 'tishengji','tishengji_keyidongbufen','tishengji_tuopan','Uxingxian']) + loadF(['2-1AGVchongdianzhuang005', '2-2AGVchongdianzhuang005', 'AGVchongdianzhuang002', 'AGVchongdianzhuang003', 'AGVchongdianzhuang005', 'changfang002', 'changfang003', 'changfang005', 'liku005', 'quanzidongchaibaojizhaungpeixian003', 'tishengji', 'tishengji_keyidongbufen', 'tishengji_tuopan', 'Uxingxian']) // loadF(['changfang002', 'changfang003', 'changfang005']) - // 创建CSS2DObject -// const label = this.$refs.demo -// const labelObject = new CSS2DObject(label) -// labelObject.position.set(-1000, 333, 130) // 根据需要调整位置 -// scene.add(labelObject) + agvLabel['2AGV'] = new CSS2DObject(this.$refs.demo) + agvLabel['3AGV'] = new CSS2DObject(this.$refs.demo1) + agvLabel['5CCAGV'] = new CSS2DObject(this.$refs.demo2) + agvLabel['5BFAGV'] = new CSS2DObject(this.$refs.demo3) + agvLabel['5CTU'] = new CSS2DObject(this.$refs.demo4) + + loadAGV(['chacheshiAGV002', 'chacheshiAGV003', 'chacheshiAGV005', 'beifushiAGV005', 'CTU005']) // setInterval(()=>{ - // labelObject.position.x +=0.1 - // labelObject.position.y +=0.1 - // labelObject.position.z +=0.1 + // labelObject2AGV.position.x +=0.1 + // labelObject2AGV.position.y +=0.1 + // labelObject2AGV.position.z +=0.1 // },40) // 渲染循环 - }, methods: { handleChange() { @@ -232,8 +273,8 @@ export default { tuopanLocation.x = storeyWidth[this.tuopanFloor] }, agvAn() { - this.rotate -=this.num1 - AGVAnimation('3AGV','rotate',this.rotate,) + this.rotate -= this.num1 + AGVAnimation('3AGV', 'rotate', this.rotate) } } }