xushiting 2 лет назад
Родитель
Сommit
a416aaf2dd

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
server/test/a0k4xu045_202305311600080410/attach/sceneStore


+ 3 - 4
src/graphic/Controls/MovePoint.js

@@ -53,18 +53,17 @@ export default class MovePoint {
       listenLayer.modifyPoint &&
       listenLayer.modifyPoint.linkedPointId
     ) {
+      let point = dataService.getPoint(pointId);
       let linkedPoint = dataService.getPoint(
         listenLayer.modifyPoint.linkedPointId
       );
       const category = linkedPoint.getCategory();
       if (
-        category != VectorCategory.Point.FixPoint &&
-        category != VectorCategory.Point.BasePoint &&
-        category != VectorCategory.Point.TestBasePoint
+        point.getCategory() == VectorCategory.Point.NormalPoint &&
+        category == VectorCategory.Point.NormalPoint
       ) {
         pointService.mergePoint(pointId, listenLayer.modifyPoint.linkedPointId);
       } else {
-        let point = dataService.getPoint(pointId);
         const parent = point.getParent();
         for (let key in parent) {
           let line = dataService.getLine(key);

+ 52 - 13
src/graphic/Controls/MoveRoad.js

@@ -152,31 +152,35 @@ export default class MoveRoad {
       listenLayer.modifyPoint &&
       listenLayer.modifyPoint.hasOwnProperty("linkedRoadId")
     ) {
-      // let splitRoadPoint = roadPointService.create({
-      //   x: listenLayer.modifyPoint.x,
-      //   y: listenLayer.modifyPoint.y,
-      // });
-      // roadService.splitRoad(
-      //   listenLayer.modifyPoint.linkedRoadId,
-      //   splitRoadPoint.vectorId,
-      //   "start"
-      // );
       roadService.splitRoad(
         listenLayer.modifyPoint.linkedRoadId,
         point.vectorId,
         "start"
       );
-      //this.moveTo(point.vectorId, point.vectorId);
       edgeService.updateEdgeForMovePoint(point.vectorId);
-    } else if (this.splitRoadId != null) {
-      roadService.splitRoad(this.splitRoadId, point.vectorId, "start");
     }
+    // else if (this.splitRoadId != null) {
+    //   roadService.splitRoad(this.splitRoadId, point.vectorId, "start");
+    // }
     //draggingItem.vectorId所在的墙面与其他墙角相交
-    this.updateForAbsorbRoadPoints();
+    //this.updateForAbsorbRoadPoints();
+    // if (
+    //   this.adsorbPointRoads != null &&
+    //   Object.keys(this.adsorbPointRoads).length > 0
+    // ) {
+    //   debugger;
+    // }
+
     let parent = point.getParent();
     for (let key in parent) {
       roadService.setLanes(key);
     }
+
+    //draggingItem.vectorId所在的墙面与其他墙角相交
+    let splitPointId = this.updateForSplitRoad(point);
+    if (splitPointId) {
+      edgeService.updateEdgeForMovePoint(splitPointId);
+    }
   }
 
   //拖拽墙角/墙面,被其他墙角吸附
@@ -218,6 +222,41 @@ export default class MoveRoad {
     }
   }
 
+  updateForSplitRoad(point) {
+    if (this.splitRoadId) {
+      let splitRoad = dataService.getRoad(this.splitRoadId);
+      let splitRoadStartPoint = dataService.getRoadPoint(splitRoad.startId);
+      let splitRoadEndPoint = dataService.getRoadPoint(splitRoad.endId);
+      let splitLine = mathUtil.createLine1(
+        splitRoadStartPoint,
+        splitRoadEndPoint
+      );
+      let parent = point.getParent();
+      for (let key in parent) {
+        let road = dataService.getRoad(key);
+        let startPoint = dataService.getRoadPoint(road.startId);
+        let endPoint = dataService.getRoadPoint(road.endId);
+        let line = mathUtil.createLine1(startPoint, endPoint);
+        let join = mathUtil.getIntersectionPoint(splitLine, line);
+        if (
+          mathUtil.isContainForSegment(join, startPoint, endPoint) &&
+          mathUtil.getDistance(join, splitRoadStartPoint) <
+            Constant.minAdsorbPix
+        ) {
+          roadService.splitRoad(key, splitRoadStartPoint.vectorId, "start");
+          return splitRoadStartPoint.vectorId;
+        } else if (
+          mathUtil.isContainForSegment(join, startPoint, endPoint) &&
+          mathUtil.getDistance(join, splitRoadEndPoint) < Constant.minAdsorbPix
+        ) {
+          roadService.splitRoad(key, splitRoadEndPoint.vectorId, "end");
+          return splitRoadEndPoint.vectorId;
+        }
+      }
+    }
+    return null;
+  }
+
   getNewPointsForMoveRoad(roadId, dx, dy) {
     dx = dx;
     dy = -dy;

+ 3 - 1
src/graphic/Controls/UIControl.js

@@ -100,7 +100,9 @@ export default class UIControl {
           //先取消当前事件和进程
           this.layer.exit();
         }
-
+        //恢复默认
+        uiService.setSelectPointCategory(VectorCategory.Point.NormalPoint);
+        uiService.setSelectLineCategory(VectorCategory.Line.NormalLine);
         //执行新的事件
         if (uiService.isBelongRoad(selectUI) || selectUI == "road") {
           stateService.setEventName(LayerEvents.AddRoad);

+ 1 - 0
src/graphic/History/History.js

@@ -135,6 +135,7 @@ export default class History {
         point.setCategory(item.point.category);
         point.setLinkedBasePointId(item.point.linkedBasePointId);
         point.setLocationMode(item.point.locationMode);
+        point.linkedTextId = item.point.linkedTextId;
         point.parent = JSON.parse(JSON.stringify(item.point.parent));
       } else if (item.handle == HistoryEvents.ModifyPoint) {
         const prePoint = item.prePoint;

+ 3 - 0
src/graphic/Load.js

@@ -35,6 +35,9 @@ export default class Load {
   async load(dataLocal, data3d) {
     this.layer.initLocation();
     coordinate.init(this.layer.canvas);
+    //恢复默认
+    uiService.setSelectPointCategory(VectorCategory.Point.NormalPoint);
+    uiService.setSelectLineCategory(VectorCategory.Line.NormalLine);
     if (dataLocal) {
       if (dataLocal.Settings) {
         for (let key in dataLocal.Settings) {