|
@@ -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,
|