From fb46c859fb0026927c7433f83f10da7ef9ae48ce Mon Sep 17 00:00:00 2001 From: TreeWish <1131093754@qq.com> Date: 星期二, 14 三月 2023 10:59:01 +0800 Subject: [PATCH] Merge branch 'master' of http://103.85.165.99:8989/r/LFWEB_NEW --- src/views/Synthesis/LeftMenu.vue | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 158 insertions(+), 16 deletions(-) diff --git a/src/views/Synthesis/LeftMenu.vue b/src/views/Synthesis/LeftMenu.vue index da21a69..4bb524a 100644 --- a/src/views/Synthesis/LeftMenu.vue +++ b/src/views/Synthesis/LeftMenu.vue @@ -647,7 +647,8 @@ }, activeName: "first", isShowModel: false, - options: [{ + options: [ + { value: '鍊炬枩妯″瀷', label: '鍊炬枩妯″瀷' }, { @@ -665,7 +666,9 @@ }, { value: '鍏朵粬妯″瀷', label: '鍏朵粬妯″瀷' - }] + }], + modelClip:false, + clippingPlanes:null, }; }, methods: { @@ -673,8 +676,8 @@ setChangeTwoMenu(res) { var val = res.id[0]; if (window.model != null) { - window.model.deleteObject(); - window.model = null; + // window.model.deleteObject(); + // window.model = null; } sgworld.Analysis.clearCurtainContrast(); if (this.isMenuFlag == "d") { @@ -1413,15 +1416,17 @@ setAnalsy(res) { //this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.close("queryinfo"); - + this.$bus.$emit("closeMenuPop", res); var that = this; switch (res) { case "d1": //绛夐珮绾垮垎鏋� + this.closePipelinePop(); that.isolineFlag = !that.isolineFlag; elevationTool.tf = that.isolineFlag; elevationTool.render(); break; case "d2": //鍧″害鍒嗘瀽 + this.closePipelinePop(); that.isslopeFlag = !that.isslopeFlag; var val = { name: "Lengend", @@ -1440,6 +1445,7 @@ break; case "d3": //璺緞鍒嗘瀽 + this.closePipelinePop(); this.isRouter = !this.isRouter; let value; if (this.isRouter) { @@ -1458,6 +1464,7 @@ this.$bus.$emit("mapChangeBox", value); break; case "d4": //鍓栭潰鍒嗘瀽 + this.closePipelinePop(); if (window.AnalysisDXPM) { window.AnalysisDXPM.end && window.AnalysisDXPM.end("cancel"); this.clear(res); @@ -1466,6 +1473,7 @@ } break; case "d5": //娲按娣规病鍒嗘瀽 + this.closePipelinePop(); if (window.AnalysisFlood) { this.clear(res); } else { @@ -1473,6 +1481,7 @@ } break; case "d6": //鍦熸柟閲忓垎鏋� + this.closePipelinePop(); if (window.TFvolumetricMeasurementTool) { TFvolumetricMeasurementTool.cleanUp(); if (TFvolumetricMeasurementTool._mouseHandler) { @@ -1505,23 +1514,52 @@ } break; case "d7": //涓夌淮鎴潰鍒嗘瀽 + this.closePipelinePop(); // if(window.MXModel) { // Viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); // window.MXModel=null; // } else { var that = this; - window.model = sgworld.Creator.create3DTilesets( - "", - modelUrl + "/tileset/m/SN/tileset.json", - {}, - {}, - "0", - true, - (data) => { - sgworld.Navigate.flyToObj(data); - that.setclippingModel(); + that.modelClip = !that.modelClip; + if (that.modelClip){ + if (window.model){ + that.modelClipping(); } - ); + else { + var tileset = Viewer.scene.primitives.add( + new Cesium.Cesium3DTileset({ + name: res.cnName, + url: modelUrl+ "/tileset/m/SN/tileset.json", + maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16 + maximumMemoryUsage: 768, // 鏈�澶у唴瀛橈細512 + dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse + skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false + }) + ); + tileset.readyPromise.then((tileset) => { + tileset.id = res.cnName; + tileset.layerId = res.id; + Viewer.flyTo(tileset); + that.modelClipping(); + }); + window.model = tileset + } + } + else { + Viewer.entities.removeAll(); + } + // window.model = sgworld.Creator.create3DTilesets( + // "", + // modelUrl + "/tileset/m/SN/tileset.json", + // {}, + // {}, + // "0", + // true, + // (data) => { + // sgworld.Navigate.flyToObj(data); + // that.setclippingModel(); + // } + // ); break; case "d9": //绠¢亾鍒嗘瀽 @@ -1549,6 +1587,7 @@ break; case "d8": //褰卞儚瀵规瘮 + this.closePipelinePop(); if (this.isContrastFlag == false) { this.isContrastFlag = true; sgworld.Analysis.createCurtainContrast(2, 1); @@ -1558,6 +1597,7 @@ } break; case "d10": //鍦伴潰鏁村钩 + this.closePipelinePop(); var val = { name: "Trrain", id: res, @@ -1595,6 +1635,7 @@ break; case "d11": //鍦板舰寮�鎸� + this.closePipelinePop(); // this.$refs && // this.$refs.terrainDig && // this.$refs.terrainDig.open("绠¢亾绌洪棿鍒嗘瀽", null, { @@ -1619,6 +1660,7 @@ break; case "d12": //閫氳鍒嗘瀽 + this.closePipelinePop(); if (window.TSExcavation != null) { window.TSExcavation._SimpleGraphic.drawHandler && window.TSExcavation._SimpleGraphic.drawHandler.destroy(); @@ -1635,6 +1677,7 @@ } break; case "d13": //瑙嗗煙鍒嗘瀽 + this.closePipelinePop(); if (window.SYExcavatio) { window.SYExcavatio.end && window.SYExcavatio.end(); window.SYExcavatio.close(); @@ -1654,6 +1697,7 @@ } break; case "d14": //鍦嗗舰鏃跺煙鍒嗘瀽 + this.closePipelinePop(); if (window.YXSYExcavation) { window.YXSYExcavation.end && window.YXSYExcavation.end(); window.YXSYExcavation.close(); @@ -1675,6 +1719,104 @@ break; } }, + + //妯″瀷瑁佸垏 + modelClipping() { + const scene = Viewer.scene; + let targetY = 0.0; + let planeEntities = []; + let selectedPlane; + let clippingPlanes = new Cesium.ClippingPlaneCollection({ + planes: [ // ClippingPlane瀵硅薄鏁扮粍闆嗗悎 + new Cesium.ClippingPlane( // 瑁佸垏闈� + new Cesium.Cartesian3(0.0, 0.0, -1.0), // 娉曠嚎鏂瑰悜 + 0// 鍘熺偣鍒板钩闈㈢殑鏈�鐭窛绂伙紝璁剧疆0灏卞ソ + ), + ], + enabled:true, + edgeWidth: 1.0, // 妯″瀷琚鍒囬儴鍒嗙殑鎴潰绾垮 + }); + let boundingSphere = window.model.boundingSphere; + // 鍒涘缓娣诲姞瑁佸壀骞抽潰 + for (let i = 0; i < clippingPlanes.length; ++i) { + const plane = clippingPlanes.get(i); + const planeEntity = Viewer.entities.add({ + position: boundingSphere.center, + plane: { + dimensions: new Cesium.Cartesian2( + boundingSphere.radius * 1.5, + boundingSphere.radius * 1.5 + ), + material: Cesium.Color.WHITE.withAlpha(0.1), + plane: new Cesium.CallbackProperty( + // 娣诲姞缁戝畾浜嬩欢锛屼笉鏂皟鐢� + createPlaneUpdateFunction(plane), + false + ), + outline: true, + outlineColor: Cesium.Color.WHITE, + }, + }); + planeEntities.push(planeEntity); + } + this.clippingPlanes = clippingPlanes; + window.model.clippingPlanes = clippingPlanes; + + // Select plane when mouse down + // 缁戝畾涓婄Щ鍔ㄤ簨浠� + const downHandler = new Cesium.ScreenSpaceEventHandler( + Viewer.scene.canvas + ); + downHandler.setInputAction(function (movement) { + const pickedObject = scene.pick(movement.position); + if ( + Cesium.defined(pickedObject) && + Cesium.defined(pickedObject.id.plane) + ) { + selectedPlane = pickedObject.id.plane; + selectedPlane.material = Cesium.Color.WHITE.withAlpha(0.05); + selectedPlane.outlineColor = Cesium.Color.WHITE; + scene.screenSpaceCameraController.enableInputs = false; + } + }, Cesium.ScreenSpaceEventType.LEFT_DOWN); + + // Release plane on mouse up + // 缁戝畾涓嬬Щ鍔ㄤ簨浠� + const upHandler = new Cesium.ScreenSpaceEventHandler( + Viewer.scene.canvas + ); + upHandler.setInputAction(function () { + if (Cesium.defined(selectedPlane)) { + selectedPlane.material = Cesium.Color.WHITE.withAlpha(0.1); + selectedPlane.outlineColor = Cesium.Color.WHITE; + selectedPlane = undefined; + } + scene.screenSpaceCameraController.enableInputs = true; + }, Cesium.ScreenSpaceEventType.LEFT_UP); + // Update plane on mouse move + const moveHandler = new Cesium.ScreenSpaceEventHandler( + Viewer.scene.canvas + ); + moveHandler.setInputAction(function (movement) { + if (Cesium.defined(selectedPlane)) { + const deltaY = movement.startPosition.y - movement.endPosition.y; + targetY += deltaY; + } + }, Cesium.ScreenSpaceEventType.MOUSE_MOVE); + function createPlaneUpdateFunction(plane) { + return function () { + plane.distance = targetY; + return plane; + }; + } + }, + + //鍏抽棴绠¢亾淇℃伅寮圭獥 + closePipelinePop(){ + this.$refs && + this.$refs.queryinfo && + this.$refs.queryinfo.close("queryinfo"); + }, setclippingModel() { if (window.model) { setTimeout(() => { -- Gitblit v1.9.3