huangxingxing há 1 ano atrás
pai
commit
bccaf92a20

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
dist/assets/appmian-2336236c.js


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
dist/assets/appmian-47a140d6.css


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
dist/assets/appmian-5e3b7913.css


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
dist/assets/appmian-6861c12a.js


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
dist/assets/index-0f7f9f59.css


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
dist/assets/index-73fb953b.js


Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
dist/assets/index-a88530f7.css


+ 1 - 1
dist/assets/myHome-eb6d996d.js → dist/assets/myHome-e275102e.js

@@ -1 +1 @@
-import{_ as o,o as _,c as s,p as t,a,b as c}from"./index-0e75d8f1.js";const n={},d=e=>(t("data-v-4734c238"),e=e(),a(),e),p=d(()=>c("div",{class:"left_container"},[c("h2",null,"我是跳转的路由")],-1)),r=[p];function l(e,i){return _(),s("div",null,r)}const u=o(n,[["render",l],["__scopeId","data-v-4734c238"]]);export{u as default};
+import{_ as o,o as _,c as s,p as t,a,b as c}from"./index-73fb953b.js";const n={},d=e=>(t("data-v-4734c238"),e=e(),a(),e),p=d(()=>c("div",{class:"left_container"},[c("h2",null,"我是跳转的路由")],-1)),r=[p];function l(e,i){return _(),s("div",null,r)}const u=o(n,[["render",l],["__scopeId","data-v-4734c238"]]);export{u as default};

+ 2 - 2
dist/index.html

@@ -7,8 +7,8 @@
     <!-- <link rel="shortcut icon" type="image/x-icon" href="<%= BASE_URL %>favicon.ico" />    -->
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title></title>
-    <script type="module" crossorigin src="./assets/index-0e75d8f1.js"></script>
-    <link rel="stylesheet" href="./assets/index-0f7f9f59.css">
+    <script type="module" crossorigin src="./assets/index-73fb953b.js"></script>
+    <link rel="stylesheet" href="./assets/index-a88530f7.css">
   </head>
   <body>
     <div id="app"></div>

+ 21 - 0
src/control/fireControl.js

@@ -1,5 +1,6 @@
 //火灾 控制类
 import vtkUnstructuredDataReader from "../reader/UnstructuredDataReader.js";
+import velocityDataReader from "../reader/VelocityDataReader.js";
 
 export class fireControl {
     constructor() {
@@ -17,11 +18,16 @@ export class fireControl {
         this.scalars = new Map();
         this.scalar = new Map();
         this.reader = vtkUnstructuredDataReader.newInstance();
+        this.velocityreader = velocityDataReader.newInstance();
+        this.velocityMap = new Map();
+        this.velocitys = [];
     }
     //几何数据初始化
     async initGemetry() {
         this.scalars = new Map();
         this.scalar = new Map();
+        this.velocityMap = new Map();
+        this.velocitys = [];
         const url = this._url + this.aid + "&transCode=D000014";
         await this.reader.setUrl(url).then(() => {
             this.polydata = this.reader.getOutputData(0);
@@ -50,7 +56,22 @@ export class fireControl {
                 this.scalars.set(step, scalarMap);
             });
         }
+    }
 
+    //获取第几步标量数据
+    async getVelocityByStep(step) {
+        console.log("getVelocityByStep");
+        this.step = step;
+        if (this.velocityMap.get(step)) {
+            this.velocitys = this.velocityMap.get(step);
+        } else {
+            // const url = this._url + this.aid + "&transCode=D000017&step=" + this.step;
+            const url = this._url + 7 + "&transCode=D000017&step=" + 27;
+            await this.velocityreader.setUrl(url).then(() => {
+                const velocitys = this.velocityreader.getOutputData(1);
+                this.velocitys = velocitys;
+            });
+        }
 
     }
 }

+ 143 - 79
src/control/vtkModel.js

@@ -20,6 +20,11 @@ import vtkSphereSource from '@kitware/vtk.js/Filters/Sources/SphereSource';
 import vtkLineSource from '@kitware/vtk.js/Filters/Sources/LineSource';
 import vtkSphereMapper from '@kitware/vtk.js/Rendering/Core/SphereMapper';
 
+import vtk2DShape from '@kitware/vtk.js/Filters/Sources/Arrow2DSource';
+import vtkArrowSource from '@kitware/vtk.js/Filters/Sources/ArrowSource';
+import vtkArrow2DSource from '@kitware/vtk.js/Filters/Sources/Arrow2DSource';
+import vtkConeSource from '@kitware/vtk.js/Filters/Sources/ConeSource';
+
 
 import vtkCamera from '@kitware/vtk.js/Rendering/Core/Camera';
 
@@ -41,7 +46,7 @@ export class VtkModel {
     this.selectObj = null;
 
     //结果选择的点数据
-    this.selectJgPointId=0;
+    this.selectJgPointId = 0;
     this.validNodes = [];//节点数据
     this.pipes = [];//管道数据
 
@@ -103,7 +108,9 @@ export class VtkModel {
     this.scalarBarActor.setScalarsToColors(lut);
     this.jgActor.setMapper(this.jgMapper);
 
-
+    
+    //箭头
+    this.arrowActors = []; 
   }
   generateTicks(numberOfTicks) {
     return (helper) => {
@@ -126,6 +133,54 @@ export class VtkModel {
     };
   }
 
+
+  //添加箭头
+  addArrow(velocitys) {
+    this.clearArrow();
+    this.arrowActors=[];
+    velocitys.forEach(velocity => {
+      velocity.points.forEach(point => {
+        // const initialValues = { 
+        //   base:0,
+        //   shape: 'arrow4points',
+        //   center: [point.x,point.y,point.z],
+        //   width: 3,height:10,direction:[
+        //     velocity.vector[2],
+        //     velocity.vector[0],
+        //     velocity.vector[1]
+        //   ] };
+        // const vtk2d = vtk2DShape.newInstance(initialValues);
+
+        const initialValues = { 
+          base:0,
+          center: [point.x,point.y,point.z],
+          height:7,
+          radius:2,
+          resolution:3,
+          direction:[
+            velocity.vector[0],
+            velocity.vector[1],
+            velocity.vector[2]
+          ] };
+        const vtk2d = vtkConeSource.newInstance(initialValues);
+        const mapper = vtkMapper.newInstance();
+        mapper.setInputConnection(vtk2d.getOutputPort());
+        const actor = vtkActor.newInstance();
+        actor.setMapper(mapper);
+        this.arrowActors.push(actor);
+        // this.renderer.addActor(actor);
+      })
+    });
+    // this.renderWindow.render();
+  }
+  clearArrow(){
+    if(this.arrowActors){
+      this.arrowActors.forEach(actor =>{
+        this.renderer.removeActor(actor);
+      });
+    }
+  }
+
   modelInit(validNodes, pipes) {
     this.validNodes = validNodes;
     this.pipes = pipes;
@@ -187,7 +242,7 @@ export class VtkModel {
 
     this.modelShow();
     this.renderer.resetCamera();
-    const cam =this.renderer.getActiveCamera();
+    const cam = this.renderer.getActiveCamera();
 
     // const cam = vtkCamera.newInstance();
     // const cam =this.renderer.getActiveCamera();
@@ -204,41 +259,41 @@ export class VtkModel {
     // );
 
 
-  //   position?: number[]; //摄像头位置
-	// focalPoint?: number[]; //相机焦点
-	// viewUp?: number[];//相机方向
-	// directionOfProjection?: number[]; //相机到焦点的方向
-	// parallelProjection?: boolean;//透视 平行
-	// useHorizontalViewAngle?: boolean;//水平视角使用
-	// viewAngle?: number;//相机视角
-	// parallelScale?: number;//平行位置投影比例
-	// clippingRange?: number[];//近远平面
-	// windowCenter?: number[];//窗口中心位置 范围 ([-1,+1],[-1,+1])
-	// viewPlaneNormal?: number[];//投影平面法线 (投影反方向)
-	// useOffAxisProjection?: boolean;//离轴投影
-	// screenBottomLeft?: number[];//左上角的点
-	// screenBottomRight?: number[];//右上角的点
-	// screenTopRight?: number[];//右上角的点 用于离轴投影
-	// freezeFocalPoint?: boolean;
-	// physicalTranslation?: number[];//物理翻译
-	// physicalScale?: number;//物理尺度
-	// physicalViewUp?: number[];//物理方向
-	// physicalViewNorth?: number[];//物理北
-    console.log("摄像头位置",cam.getPosition());
-    console.log("透视或平行相机",cam.getParallelProjection());
+    //   position?: number[]; //摄像头位置
+    // focalPoint?: number[]; //相机焦点
+    // viewUp?: number[];//相机方向
+    // directionOfProjection?: number[]; //相机到焦点的方向
+    // parallelProjection?: boolean;//透视 平行
+    // useHorizontalViewAngle?: boolean;//水平视角使用
+    // viewAngle?: number;//相机视角
+    // parallelScale?: number;//平行位置投影比例
+    // clippingRange?: number[];//近远平面
+    // windowCenter?: number[];//窗口中心位置 范围 ([-1,+1],[-1,+1])
+    // viewPlaneNormal?: number[];//投影平面法线 (投影反方向)
+    // useOffAxisProjection?: boolean;//离轴投影
+    // screenBottomLeft?: number[];//左上角的点
+    // screenBottomRight?: number[];//右上角的点
+    // screenTopRight?: number[];//右上角的点 用于离轴投影
+    // freezeFocalPoint?: boolean;
+    // physicalTranslation?: number[];//物理翻译
+    // physicalScale?: number;//物理尺度
+    // physicalViewUp?: number[];//物理方向
+    // physicalViewNorth?: number[];//物理北
+    console.log("摄像头位置", cam.getPosition());
+    console.log("透视或平行相机", cam.getParallelProjection());
     // cam.setParallelProjection(true);
     //  console.log("透视或平行相机",cam.getParallelProjection());
-     console.log("水平视角使用",cam.getUseHorizontalViewAngle());
-     cam.setUseHorizontalViewAngle(true);
-     console.log("平行位置投影比例",cam.getParallelScale());
-     cam.setParallelScale(600);
-     console.log("窗口中心位置",cam.getWindowCenter());
+    console.log("水平视角使用", cam.getUseHorizontalViewAngle());
+    cam.setUseHorizontalViewAngle(true);
+    console.log("平行位置投影比例", cam.getParallelScale());
+    cam.setParallelScale(600);
+    console.log("窗口中心位置", cam.getWindowCenter());
     //  cam.setWindowCenter([1,-1]);
     // cam.setViewAngle(15);
-    console.log("相机视角",cam.getViewAngle());
-    console.log("相机焦点",cam.getFocalPoint());
+    console.log("相机视角", cam.getViewAngle());
+    console.log("相机焦点", cam.getFocalPoint());
     // cam.setViewUp([-1,0,0]);
-    console.log("相机方向",cam.getViewUp());
+    console.log("相机方向", cam.getViewUp());
     // cam.setClippingRange(9241.491986233214,9300.53967078369);
     // console.log("近远平面",cam.getClippingRange());
     this.renderWindow.render();
@@ -274,6 +329,8 @@ export class VtkModel {
       });
     }
   }
+
+
   selectNodes() {
     this.isSelectNode = true;
     this.isSelectPipe = false;
@@ -286,7 +343,7 @@ export class VtkModel {
     this.modelShow();
     this.renderWindow.render();
   }
-  selectNoting(){
+  selectNoting() {
     this.isSelectNode = false;
     this.isSelectPipe = false;
     this.modelShow();
@@ -313,6 +370,9 @@ export class VtkModel {
     }
     return 0;
   }
+
+
+
   clearModeAddJg() {
     this.renderer.addActor(this.jgActor);
     this.renderer.addActor(this.scalarBarActor);
@@ -322,47 +382,51 @@ export class VtkModel {
   clearJgAddMode() {
     this.renderer.removeActor(this.scalarBarActor);
     this.renderer.removeActor(this.jgActor);
+    this.clearArrow();
     this.modelShow();
     this.isJg = false; //不显示结果
   }
-  clearAll(){
+  clearAll() {
     this.renderer.removeActor(this.jgActor);
     this.renderer.removeActor(this.scalarBarActor);
+    this.clearArrow();
     this.modelClearShow();
     this.renderWindow.render();
   }
+
+
   //选中指定点
-  selectByNodeId(nid){
-    console.log("selectByNodeId",nid);
-    if(this.isSelectNode){
+  selectByNodeId(nid) {
+    console.log("selectByNodeId", nid);
+    if (this.isSelectNode) {
       if (this.lastActor != null) {
         this.lastActor.getProperty().setColor(WHITE);
       }
-      this.nodeActors.forEach(nodeActor=>{
-        if(nid==nodeActor.node.id){
+      this.nodeActors.forEach(nodeActor => {
+        if (nid == nodeActor.node.id) {
           nodeActor.actor.getProperty().setColor(GREEN);
-         
+
           this.renderWindow.render();
-          this.lastActor=nodeActor.actor;
-          this.selectObj=nodeActor.node;
+          this.lastActor = nodeActor.actor;
+          this.selectObj = nodeActor.node;
           return;
         }
       });
     }
   }
   //选中指定管道
-  selectByPipeId(pid){
-    console.log("selectByPipeId",pid);
-    if(this.isSelectPipe){
+  selectByPipeId(pid) {
+    console.log("selectByPipeId", pid);
+    if (this.isSelectPipe) {
       if (this.lastActor != null) {
         this.lastActor.getProperty().setColor(WHITE);
       }
-      this.pipeActors.forEach(pipeActor=>{
-        if(pid==pipeActor.pipe.id){
+      this.pipeActors.forEach(pipeActor => {
+        if (pid == pipeActor.pipe.id) {
           pipeActor.actor.getProperty().setColor(GREEN);
           this.renderWindow.render();
-          this.lastActor=pipeActor.actor;
-          this.selectObj=pipeActor.node;
+          this.lastActor = pipeActor.actor;
+          this.selectObj = pipeActor.node;
           return;
         }
       });
@@ -445,39 +509,39 @@ function processSelections(selections) {
   });
 
   if (vtkmodel.isJg) {//结果数据选择cell
-    if( vtkmodel.hardwareSelector.getFieldAssociation() ===
-       FieldAssociations.FIELD_ASSOCIATION_POINTS){//选择点
-
-    }else{
-       //选择Cell
-    const input = prop.getMapper().getInputData();
-    if (!input.getCells()) {
-      input.buildCells();
-      // return;
-    }
-    const cellPoints = input.getCellPoints(attributeID);
-    if (cellPoints) {
-      const pointIds = cellPoints.cellPointIds;
-      // Find the closest cell point, and use that as cursor position
-      const points = Array.from(pointIds).map((pointId) =>
-        input.getPoints().getPoint(pointId)
-      );
-      const scalarDataArray=input.getPointData().getScalars().getData();
-      console.log(scalarDataArray[pointIds[0]]);//节点标量数据
-      // pointIds.forEach(pointId=>{
-      //   console.log(input.getPointData().getScalars().getName());
-      //   console.log(scalarDataArray[pointId]);//节点标量数据
-      // });
-      vtkmodel.selectJgPointId =pointIds[0];
-    }
+    if (vtkmodel.hardwareSelector.getFieldAssociation() ===
+      FieldAssociations.FIELD_ASSOCIATION_POINTS) {//选择点
+
+    } else {
+      //选择Cell
+      const input = prop.getMapper().getInputData();
+      if (!input.getCells()) {
+        input.buildCells();
+        // return;
+      }
+      const cellPoints = input.getCellPoints(attributeID);
+      if (cellPoints) {
+        const pointIds = cellPoints.cellPointIds;
+        // Find the closest cell point, and use that as cursor position
+        const points = Array.from(pointIds).map((pointId) =>
+          input.getPoints().getPoint(pointId)
+        );
+        const scalarDataArray = input.getPointData().getScalars().getData();
+        console.log(scalarDataArray[pointIds[0]]);//节点标量数据
+        // pointIds.forEach(pointId=>{
+        //   console.log(input.getPointData().getScalars().getName());
+        //   console.log(scalarDataArray[pointId]);//节点标量数据
+        // });
+        vtkmodel.selectJgPointId = pointIds[0];
+      }
     }
-   
-  }else{
+
+  } else {
     vtkmodel.renderWindow.render();
   }
- 
 
- 
+
+
 }
 const throttleMouseHandler = throttle(pickOnMouseEvent, 20);
 const WHITE = [0, 0, 1];

+ 51 - 0
src/reader/VelocityAsciiParser.js

@@ -0,0 +1,51 @@
+import vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray.js';
+import vtkPolyData from '@kitware/vtk.js/Common/DataModel/PolyData.js';
+import vtkPoints from '@kitware/vtk.js/Common/Core/Points.js';
+import vtkPointSet from '@kitware/vtk.js/Common/DataModel/PointSet.js';
+import vtkCellArray from '@kitware/vtk.js/Common/Core/CellArray.js';
+import { number } from 'echarts';
+
+function parseLegacyASCII(content) {
+  let dataModel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  let parser = null;
+  let velindex = 0;
+  const separatorRegExp = /\r?\n/;
+  const separatorRes = separatorRegExp.exec(content);
+  const separator = separatorRes !== null ? separatorRes[0] : null;
+  dataModel.dataset=vtkPolyData.newInstance();
+  dataModel.velocitys = [];
+  content.split(separator).forEach((line, index) => {
+    if (!parser) {
+      let velocity = {};
+      dataModel.velocitys.push(velocity);
+      let tem = line.split(',');
+      velocity.name = tem[0];
+      velocity.num = Number(tem[1]);
+      velocity.speed = Number(tem[2]);
+      velocity.vector = [Number(tem[3]), Number(tem[4]), Number(tem[5])];
+      velindex = Number(tem[1]);
+      velocity.points=[];
+      parser = true;
+    } else {
+      let velocity = dataModel.velocitys[dataModel.velocitys.length - 1];
+      let tem = line.split(',');
+      velocity.points.push({
+        x: Number(tem[0]),
+        y: Number(tem[1]),
+        z: Number(tem[2])
+      });
+      velindex--;
+      if (velindex == 0) {
+        parser = null;
+      }
+    }
+
+  });
+  console.log(dataModel);
+  return dataModel;
+}
+var velocityAsciiParser = {
+  parseLegacyASCII
+};
+
+export { velocityAsciiParser as default };

+ 118 - 0
src/reader/VelocityDataReader.js

@@ -0,0 +1,118 @@
+import { m as macro } from '@kitware/vtk.js/macros2.js';
+import DataAccessHelper from '@kitware/vtk.js/IO/Core/DataAccessHelper.js';
+import velocityAsciiParser from './VelocityAsciiParser.js';
+import '@kitware/vtk.js/IO/Core/DataAccessHelper/LiteHttpDataAccessHelper.js';
+
+// ----------------------------------------------------------------------------
+// VelocityDataReader methods
+// ----------------------------------------------------------------------------
+
+function VelocityDataReader(publicAPI, model) {
+  // Set our className
+  model.classHierarchy.push('velocityDataReader');
+
+  // Create default dataAccessHelper if not available
+  if (!model.dataAccessHelper) {
+    model.dataAccessHelper = DataAccessHelper.get('http');
+  }
+
+  // Internal method to fetch Array
+  function fetchData(url) {
+    const {
+      compression,
+      progressCallback
+    } = model;
+    return model.dataAccessHelper.fetchText(publicAPI, url, {
+      compression,
+      progressCallback
+    });
+  }
+
+  // Set DataSet url
+  publicAPI.setUrl = function (url) {
+    let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+    model.url = url;
+
+    // Remove the file in the URL
+    const path = url.split('/');
+    path.pop();
+    model.baseURL = path.join('/');
+    model.compression = option.compression;
+
+    // Fetch metadata
+    return publicAPI.loadData({
+      progressCallback: option.progressCallback
+    });
+  };
+
+  // Fetch the actual data arrays
+  publicAPI.loadData = function () {
+    const promise = fetchData(model.url);
+    promise.then(publicAPI.parseAsText);
+    return promise;
+  };
+  publicAPI.parseAsText = content => {
+    if (!content) {
+      return;
+    }
+    if (content !== model.parseData) {
+      publicAPI.modified();
+    } else {
+      return;
+    }
+    model.parseData = content;
+    model.dataModel= velocityAsciiParser.parseLegacyASCII(model.parseData);
+    model.output[0] = model.dataModel.dataset;
+    model.output[1] = model.dataModel.velocitys;
+  };
+  publicAPI.requestData = (inData, outData) => {
+    publicAPI.parseAsText(model.parseData);
+  };
+}
+
+// ----------------------------------------------------------------------------
+// Object factory
+// ----------------------------------------------------------------------------
+
+const DEFAULT_VALUES = {
+  // baseURL: null,
+  // dataAccessHelper: null,
+  // url: null,
+};
+
+// ----------------------------------------------------------------------------
+
+function extend(publicAPI, model) {
+  let initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+  Object.assign(model, DEFAULT_VALUES, initialValues);
+
+  // Build VTK API
+  macro.obj(publicAPI, model);
+  macro.get(publicAPI, model, ['url', 'baseURL']);
+  macro.setGet(publicAPI, model, ['dataAccessHelper']);
+  macro.algo(publicAPI, model, 0, 1);
+
+  // vtkPolyDataReader methods
+  VelocityDataReader(publicAPI, model);
+
+  // To support destructuring
+  if (!model.compression) {
+    model.compression = null;
+  }
+  if (!model.progressCallback) {
+    model.progressCallback = null;
+  }
+}
+
+// ----------------------------------------------------------------------------
+
+const newInstance = macro.newInstance(extend, 'VelocityDataReader');
+
+// ----------------------------------------------------------------------------
+
+var VelocityDataReader$1 = {
+  newInstance,
+  extend
+};
+
+export { VelocityDataReader$1 as default, extend, newInstance };

+ 52 - 2
src/view/components/InfoAnimation.vue

@@ -179,6 +179,11 @@ let aid = ref();
 let timing = ref(null);
 let timing3 = ref(null);
 let timing2 = ref(null);
+
+let arrowtime = ref(null);
+let arrowTmp=1;
+
+
 let jgSelectPointId = ref(0);
 const percentage = ref(20);
 const customColor = ref("#409eff");
@@ -477,6 +482,32 @@ function jgSelect() {
     }
   }, 1000);
 }
+function arrowtimeStart(){
+  arrowtime.value=setInterval(() => {
+    if(!vtkmodel||!vtkmodel.isJg){
+      return;
+    }
+    console.log("arrowtimeStart");
+    vtkmodel.clearArrow();
+    if(arrowTmp==1){
+      for (let index = 0; index < vtkmodel.arrowActors.length; index=index+7) {
+       let actor =vtkmodel.arrowActors[index];
+        vtkmodel.renderer.addActor(actor);
+      };
+      vtkmodel.renderWindow.render();
+      arrowTmp=2;
+    }else{
+       for (let index = 3; index < vtkmodel.arrowActors.length; index=index+7) {
+        let actor =vtkmodel.arrowActors[index];
+        vtkmodel.renderer.addActor(actor);
+      };
+        vtkmodel.renderWindow.render();
+        arrowTmp=1
+    }
+    
+  },1000);
+}
+
 //获取任务信息
 async function readJob() {
 
@@ -555,14 +586,30 @@ function vtkGridRead() {
     .then((result) => {
       // console.log(fcon.polydata);
       vtkScalarRead();
+   
     })
     .catch((err) => {});
 }
+
+//灾情流速文件获取
+function velocityRead() {
+  // clearInterval(arrowtime.value);
+   fcon
+    .getVelocityByStep(fcon.step)
+    .then((result) => {
+        vtkmodel.addArrow(fcon.velocitys);
+        // arrowtimeStart();
+    })
+    .catch((err) => {
+      console.log(err);
+    });
+}
 function vtkScalarRead() {
   fcon
     .getScalrsByStep(fcon.step)
     .then((result) => {
       // console.log(fcon.scalar);
+      velocityRead() ;
       vtkShow();
     })
     .catch((err) => {
@@ -603,7 +650,7 @@ function vtkShow() {
   scalarBarActor.setAxisLabel(formInline.value.region);
   mapper.clearColorArrays(); //强制重建颜色
   actor.getProperty().setOpacity(count.value); //设置错误的透明度使得页面重新加载  不设置不刷新页面
-
+  actor.getProperty().setOpacity(0.5);
   // vtkmodel.renderer.resetCamera();
   vtkmodel.renderWindow.render();
 }
@@ -647,8 +694,11 @@ const timehandclick = () => {
 };
 onBeforeUnmount(() => {
   clearInterval(timing.value);
+  clearInterval(arrowtime.value);
+});
+onMounted(() => {
+  arrowtimeStart();
 });
-onMounted(() => {});
 
 watch(
   newcount,

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff