xzw 1 rok temu
rodzic
commit
346e0c903e
1 zmienionych plików z 25 dodań i 27 usunięć
  1. 25 27
      src/sdk/laser/core/enter.js

+ 25 - 27
src/sdk/laser/core/enter.js

@@ -524,23 +524,20 @@ var enter = ({
         let disMeasure2 = viewer.measuringTool.createMeasureFromData(info2);
         
         //因多个measure在同一直线上,会重叠,所以使可拖拽
-        let mouseover = (e) => { 
-            //this.setMarkerSelected(e.object, 'hover', 'single'); 
+        let mouseover = (e) => {  
             viewer.dispatchEvent({
                 type : "CursorChange", action : "add",  name:"markerMove"
             }) 
-        };
-        
-        let mouseleave = (e) => { 
-            //this.setMarkerSelected(e.object, 'unhover', 'single'); 
+        }; 
+        let mouseleave = (e) => {   
             viewer.dispatchEvent({
                 type : "CursorChange", action : "remove",  name:"markerMove"
             })
         }  
         disMeasure2.edges[0].addEventListener('mouseover', mouseover);
         disMeasure2.edges[0].addEventListener('mouseleave', mouseleave);
-        let dragInfo = {}
         
+        let dragInfo = {} 
         disMeasure2.edges[0].addEventListener('startDragging',(e)=>{
             dragInfo = {
                 startMeasurePoints : disMeasure2.points.map(e=>e.clone()),
@@ -557,16 +554,13 @@ var enter = ({
             let dragVec = new THREE.Vector3().subVectors(I, dragInfo.dragPoint);
             dragVec.projectOnVector(dragInfo.normal) 
             dragDisMeasure2(fixPoint, dragVec, dragInfo.startMeasurePoints) 
-            
-         
-            
         })
         
         fixPoint.disMeasure1 = disMeasure1;
         fixPoint.disMeasure2 = disMeasure2;
             
         let selected 
-        [disMeasure1,disMeasure2].forEach(measure=>{
+        ;[disMeasure1,disMeasure2].forEach(measure=>{
             measure.addEventListener("selected", (e) => {
                 let newState = disMeasure1.clickSelected || disMeasure2.clickSelected
                 if(selected != newState){
@@ -610,9 +604,7 @@ var enter = ({
         if(!fixPoint.disMeasure1)return
         let ps = fixPoint.disMeasure2.guideLinePoints 
         let dragVec = ps.length == 6 && new THREE.Vector3().subVectors(ps[3],ps[2])
-        
-        
-        
+         
         let info = getMeasurePointsInfo(fixPoint)
         if(!info)return
         if(!onlyBasePoint){
@@ -627,13 +619,11 @@ var enter = ({
         fixPoint.disMeasure2.guideLinePoints = info.disMeasure2.guideLinePoints 
         fixPoint.disMeasure2.updateGuideLines()
         
-        if(dragVec){
-            if(updateBaseLine){//移动基准线的话dragVec也改变方向了 
-                //let dragDir = dragVec.dot(fixPoint.disMeasure1.lineDir)<0 ? 1 : -1 //向外or向内
+        if(dragVec){//基准点的那条垂线如果移动过
+            if(updateBaseLine){//移动基准线的话dragVec也改变方向了  
                 let baseLine = viewer.scene.measurements.find(e=>e.isBaseLine && e.points.length == 2) 
-                let dragDir = dragVec.cross(baseLine.lineDir).z < 0 ? 1 : -1
-        
-                
+                let dragDir = dragVec.cross(baseLine.lineDir).z < 0 ? 1 : -1//相对于基准线向外or向内
+          
                 ps = fixPoint.disMeasure2.guideLinePoints
                 let newVec = new THREE.Vector3().subVectors(ps[ps.length-2],ps[ps.length-1]).normalize()
                 let dis = dragVec.length() * dragDir
@@ -908,15 +898,15 @@ var enter = ({
 
 
 
-            createFixPoint({measure, graph, pos, basePoint, }){//创建固定点或多线段   
+            createFixPoint({measure, graph, pos, basePoint }, lines){//创建固定点或多线段   
                 
-                console.log('createFixPoint',measure, graph, pos, basePoint)
+                console.log('createFixPoint',measure, graph, pos, basePoint, lines)
                 let ifDrawVerMeasure = measure//是否绘制垂线
                 let shape,  measureFun, mainPoint = new THREE.Vector3(), bus = mitt();  
                 basePoint && (mainPoint.basePoint = new THREE.Vector3().copy(basePoint))
                 mainPoint.bus = bus
                 mainPoint.index11 = Math.random()
-                
+                let disMeasure2points = lines && lines[1].points.map(e=>new THREE.Vector3().copy(e)) 
                 
                 const baseLineChanged = ()=>{
                     updateMeasureForPoint(mainPoint,{updateBaseLine:true})
@@ -959,7 +949,7 @@ var enter = ({
                         info.sid = Math.random()//sid;
                         info.bus = bus; 
                         shape = viewer.measuringTool.createMeasureFromData(info);
-                        ifDrawVerMeasure && (createMeasureForPoint(mainPoint) , updateMeasure()) 
+                        ifDrawVerMeasure && (createMeasureForPoint(mainPoint, disMeasure2points) , updateMeasure()) 
                     }
                     ifDrawVerMeasure && bus.on("graphChange",updateMeasure) 
                     
@@ -973,16 +963,24 @@ var enter = ({
                     mainPoint.copy(pos)
                     mainPoint.isFixPoint = true  
                     mainPoint.pos2d = Potree.Utils.getPos2d(mainPoint, viewer.mainViewport, viewer.renderArea )
-                    ifDrawVerMeasure && createMeasureForPoint(mainPoint)
+                    ifDrawVerMeasure && createMeasureForPoint(mainPoint, disMeasure2points) 
                     viewer.fixPoints.push(mainPoint) 
+                    
+                    ifDrawVerMeasure && setTimeout(()=>{
+                        mainPoint.bus.emit('measureChange',[
+                            {line: mainPoint.disMeasure1.points.map(e=>e.clone()), dis: mainPoint.disMeasure1.points[0].distanceTo(mainPoint.disMeasure1.points[1])},
+                            {line: mainPoint.disMeasure2.points.map(e=>e.clone()), dis: mainPoint.disMeasure2.points[0].distanceTo(mainPoint.disMeasure2.points[1])} 
+                        ])
+                    },10)
+                        
                 }
                
                 
                 ifDrawVerMeasure && viewer.addEventListener('baseLineChanged',baseLineChanged)  
                          
                      
-                 
-
+                
+                
                 
                 const ret = {  
                     bus,