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