bill преди 1 година
родител
ревизия
46a25d8a15
променени са 3 файла, в които са добавени 40 реда и са изтрити 10 реда
  1. 7 3
      src/board/packages/whole-line/style.ts
  2. 25 4
      src/board/shared/adsorb.ts
  3. 8 3
      src/components/query-board/index.vue

+ 7 - 3
src/board/packages/whole-line/style.ts

@@ -5,6 +5,7 @@ import { Group } from "konva/lib/Group";
 import { CustomizeShape } from "../../type";
 import { KonvaEventObject } from "konva/lib/Node";
 import { Color, MathUtils } from "three";
+import { DEV } from "../../env";
 
 export const point = {
   fill: "#ffffff",
@@ -100,9 +101,12 @@ type PolygonShapeProps = {
 };
 
 export const polygonShapeFactory = (props: PolygonShapeProps = {}) => {
-  const color = new Color();
-  color.setHSL(MathUtils.randFloat(0, 1), 1, 0.8);
-  const fill = "#" + color.getHexString();
+  let fill = "rgba(0, 0, 0, 0)";
+  if (DEV) {
+    const color = new Color();
+    color.setHSL(MathUtils.randFloat(0, 1), 1, 0.8);
+    fill = "#" + color.getHexString();
+  }
 
   console.log(fill);
   const group = new Group();

+ 25 - 4
src/board/shared/adsorb.ts

@@ -75,7 +75,7 @@ export const getAdsorbLinePosition = ({
   position,
   refLineName = "adsord-line",
   exclusionIds = [],
-  angle = 3,
+  angle = 2,
   radiusInner = 500,
 }: AdsorbLineProps) => {
   const refLines = tree.stage
@@ -209,15 +209,18 @@ export const getAdsorbSelfLinesPosition = ({
 export type AdsorbProps = Omit<
   AdsorbPointProps & AdsorbLineProps & AdsorbSelfLinesProps,
   "position"
-> & { pixel?: number[]; position?: number[]; radiusInner?: number };
+> & {
+  pixel?: number[];
+  position?: number[];
+  radiusInner?: number;
+  pointsArray?: number[][][];
+};
 
 export const getAdsorbPosition = (props: AdsorbProps) => {
   const position = props.position || props.tree.getRealFromStage(props.pixel);
   let refPosition: number[];
   if ((refPosition = getAdsorbPointPosition({ ...props, position }))) {
     return refPosition;
-  } else if ((refPosition = getAdsorbLinePosition({ ...props, position }))) {
-    return refPosition;
   } else if ((refPosition = getAdsorbCrossPosition({ ...props, position }))) {
     return refPosition;
   } else if (
@@ -225,5 +228,23 @@ export const getAdsorbPosition = (props: AdsorbProps) => {
   ) {
     return refPosition;
   }
+
+  if (props.pointsArray) {
+    for (let i = 0; i < props.pointsArray.length; i++) {
+      if (
+        (refPosition = getAdsorbSelfLinesPosition({
+          ...props,
+          position,
+          points: props.pointsArray[i],
+        }))
+      ) {
+        return refPosition;
+      }
+    }
+  }
+
+  if ((refPosition = getAdsorbLinePosition({ ...props, position }))) {
+    return refPosition;
+  }
   return position;
 };

+ 8 - 3
src/components/query-board/index.vue

@@ -1,9 +1,9 @@
 <template>
   <div>
-    <ElButton :disabled="!board?.history.state.hasUndo" @click="board?.history.undo()">
+    <ElButton :disabled="!board.history.state.hasUndo" @click="board.history.undo()">
       撤销
     </ElButton>
-    <ElButton :disabled="!board?.history.state.hasRedo" @click="board?.history.redo()">
+    <ElButton :disabled="!board.history.state.hasRedo" @click="board.history.redo()">
       重做
     </ElButton>
     <ElButton @click="getData">获取数据</ElButton>
@@ -43,9 +43,14 @@ withDefaults(defineProps<{ width?: number; height?: number; pixelRation?: number
 });
 type Board = ReturnType<typeof createBoard>;
 
-const board = createBoard({ store: storeData });
+const board = createBoard();
 board.bound.autoBound(60);
 
+setTimeout(() => {
+  board.setData(storeData);
+  board.bound.autoBound(60);
+}, 500);
+
 const activeEntity = shallowRef<EditPoi>();
 board.bus.on("activePoi", (entity) => (activeEntity.value = entity));