bill 1 year ago
parent
commit
ff1998c4f3

+ 0 - 1
src/components/group-button/index.vue

@@ -65,7 +65,6 @@ const props = withDefaults(
   }>(),
   }>(),
   { dire: "row", size: 64 }
   { dire: "row", size: 64 }
 );
 );
-console.log(props.menus);
 
 
 const disabledMap = computed(() => {
 const disabledMap = computed(() => {
   const map = {};
   const map = {};

+ 1 - 1
src/sdk/types/sdk.ts

@@ -349,7 +349,7 @@ export type FixPoint3D = {
     // 测量线被选中对象,值为是否选中
     // 测量线被选中对象,值为是否选中
     selected: boolean;
     selected: boolean;
     // 形状被选中事件,值为是否选中
     // 形状被选中事件,值为是否选中
-    selectGraph: boolean;
+    selectMeasure: boolean;
     // 这个不用实现
     // 这个不用实现
     graphDrawComplete: boolean;
     graphDrawComplete: boolean;
 
 

+ 79 - 75
src/views/scene/covers/cover.vue

@@ -1,137 +1,141 @@
 <template>
 <template>
   <div
   <div
-      class="cover-layout"
-      @mousedown="downHandler"
-      @touchstart="downHandler"
-      :class="{ move: move }"
-      :style="style"
-      v-show="style"
-      ref="dom"
+    class="cover-layout"
+    @mousedown="downHandler"
+    @touchstart="downHandler"
+    :class="{ move: move }"
+    :style="style"
+    v-show="style"
+    ref="dom"
   >
   >
     <slot />
     <slot />
   </div>
   </div>
 </template>
 </template>
 
 
 <script setup lang="ts">
 <script setup lang="ts">
-import {computed, onMounted, onUnmounted, ref, watch, watchEffect} from 'vue'
-import {Pos, Pos3D} from '@/sdk'
-import {customMap, useSDK} from '@/hook'
-import { getPostionByTarget} from '@/components/base/utils'
+import { computed, onMounted, onUnmounted, ref, watch, watchEffect } from "vue";
+import { Pos, Pos3D } from "@/sdk";
+import { customMap, useSDK } from "@/hook";
+import { getPostionByTarget } from "@/components/base/utils";
 
 
 const props = defineProps<{
 const props = defineProps<{
-  pos: Pos3D,
-  focus: boolean
-}>()
+  pos: Pos3D;
+  focus: boolean;
+}>();
 const emit = defineEmits<{
 const emit = defineEmits<{
-  (m: 'changePos', pos: Pos3D): void
-  (m: 'focus'): void
-  (m: 'blur'): void
-}>()
-const sdk = useSDK()
-const dom = ref<HTMLElement>()
+  (m: "changePos", pos: Pos3D): void;
+  (m: "focus"): void;
+  (m: "blur"): void;
+}>();
+const sdk = useSDK();
+const dom = ref<HTMLElement>();
 
 
-const screen = ref<Pos>(null)
+const screen = ref<Pos>(null);
 const style = computed(
 const style = computed(
   () =>
   () =>
     screen.value && {
     screen.value && {
-      left: screen.value.x + 'px',
-      top: screen.value.y + 'px'
+      left: screen.value.x + "px",
+      top: screen.value.y + "px",
     }
     }
-)
+);
 const updatePos = () => {
 const updatePos = () => {
   if (props.pos) {
   if (props.pos) {
-    const data = sdk.scene.getScreenByPoint(props.pos)
-    screen.value = data.trueSide ? data.pos : null
+    const data = sdk.scene.getScreenByPoint(props.pos);
+    screen.value = data.trueSide ? data.pos : null;
   }
   }
-}
+};
 
 
-sdk.scene.on('posChange', updatePos)
-watch(props, updatePos)
-updatePos()
+sdk.scene.on("posChange", updatePos);
+watch(props, updatePos);
+updatePos();
 
 
-const move = ref(false)
+const move = ref(false);
 const downHandler = (sev: MouseEvent | TouchEvent) => {
 const downHandler = (sev: MouseEvent | TouchEvent) => {
-  const start = new Date().getTime()
-  const el = sev.target as HTMLElement
-  const mountEl = document.documentElement
+  const start = new Date().getTime();
+  const el = sev.target as HTMLElement;
+  const mountEl = document.documentElement;
   const preset = {
   const preset = {
     x: el.offsetWidth / 2,
     x: el.offsetWidth / 2,
-    y: el.offsetHeight
-  }
+    y: el.offsetHeight,
+  };
   if (sev instanceof TouchEvent) {
   if (sev instanceof TouchEvent) {
     const pos = getPostionByTarget(el, document.querySelector("#app") as HTMLElement);
     const pos = getPostionByTarget(el, document.querySelector("#app") as HTMLElement);
-    preset.x = preset.x - (sev.touches[0].pageX  - (pos.x - preset.x))
-    preset.y = preset.y - (sev.touches[0].pageY  - (pos.y - preset.y))
+    preset.x = preset.x - (sev.touches[0].pageX - (pos.x - preset.x));
+    preset.y = preset.y - (sev.touches[0].pageY - (pos.y - preset.y));
   } else {
   } else {
-    preset.x -= sev.offsetX
-    preset.y -= sev.offsetY
+    preset.x -= sev.offsetX;
+    preset.y -= sev.offsetY;
   }
   }
 
 
   const moveHandler = (ev: MouseEvent | TouchEvent) => {
   const moveHandler = (ev: MouseEvent | TouchEvent) => {
     if (!move.value) {
     if (!move.value) {
-      move.value = true
-      customMap.magnifier = true
+      move.value = true;
+      customMap.magnifier = true;
     }
     }
     const pos = sdk.scene.getPointByScreen({
     const pos = sdk.scene.getPointByScreen({
       x: (ev instanceof TouchEvent ? ev.touches[0].pageX : ev.pageX) + preset.x,
       x: (ev instanceof TouchEvent ? ev.touches[0].pageX : ev.pageX) + preset.x,
       y: (ev instanceof TouchEvent ? ev.touches[0].pageY : ev.pageY) + preset.y,
       y: (ev instanceof TouchEvent ? ev.touches[0].pageY : ev.pageY) + preset.y,
-      inDrag: true
-    })
+      inDrag: true,
+    });
     if (pos?.position) {
     if (pos?.position) {
-      emit('changePos', pos.position);
+      emit("changePos", pos.position);
     }
     }
-  }
+  };
   const upHandler = (ev: MouseEvent) => {
   const upHandler = (ev: MouseEvent) => {
-    mountEl.removeEventListener('mousemove', moveHandler)
-    mountEl.removeEventListener('mouseup', upHandler)
-    mountEl.removeEventListener('touchmove', moveHandler)
-    mountEl.removeEventListener('touchend', upHandler)
+    mountEl.removeEventListener("mousemove", moveHandler);
+    mountEl.removeEventListener("mouseup", upHandler);
+    mountEl.removeEventListener("touchmove", moveHandler);
+    mountEl.removeEventListener("touchend", upHandler);
     if (move.value) {
     if (move.value) {
-      move.value = false
-      customMap.magnifier = false
-      console.log("关闭放大镜")
+      move.value = false;
+      customMap.magnifier = false;
+      console.log("关闭放大镜");
     }
     }
     if (new Date().getTime() - start < 300) {
     if (new Date().getTime() - start < 300) {
-      emit("focus")
+      emit("focus");
     }
     }
-  }
-
-  mountEl.addEventListener('mousemove', moveHandler)
-  mountEl.addEventListener('mouseup', upHandler)
-  mountEl.addEventListener('touchmove', moveHandler)
-  mountEl.addEventListener('touchend', upHandler)
-  sev.preventDefault()
-}
-
+  };
 
 
+  mountEl.addEventListener("mousemove", moveHandler);
+  mountEl.addEventListener("mouseup", upHandler);
+  mountEl.addEventListener("touchmove", moveHandler);
+  mountEl.addEventListener("touchend", upHandler);
+  sev.preventDefault();
+};
 
 
 const clickHandler = (ev) => {
 const clickHandler = (ev) => {
-  if (dom.value && !dom.value.contains(ev.target as HTMLElement) && ev.target !== dom.value) {
-    emit("blur")
+  if (
+    dom.value &&
+    !dom.value.contains(ev.target as HTMLElement) &&
+    ev.target !== dom.value
+  ) {
+    emit("blur");
   }
   }
-}
+};
 
 
 watchEffect((onCleanup) => {
 watchEffect((onCleanup) => {
   if (props.focus) {
   if (props.focus) {
-    console.log("载入点击")
-    document.documentElement.addEventListener("touchstart", clickHandler, { passive: true })
+    console.log("载入点击");
+    document.documentElement.addEventListener("touchstart", clickHandler, {
+      passive: true,
+    });
     onCleanup(() => {
     onCleanup(() => {
-      console.log("清除载入点击")
-      document.documentElement.removeEventListener("touchstart", clickHandler)
-    })
+      console.log("清除载入点击");
+      document.documentElement.removeEventListener("touchstart", clickHandler);
+    });
   }
   }
-})
+});
 
 
 onUnmounted(() => {
 onUnmounted(() => {
-  emit("blur")
-})
+  emit("blur");
+});
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
 .cover-layout {
 .cover-layout {
   position: absolute;
   position: absolute;
   z-index: 1;
   z-index: 1;
-  transform: translate(-50%, -50%);
+  transform: translate(-50%, -100%);
   cursor: move;
   cursor: move;
 }
 }
 
 

+ 9 - 5
src/views/scene/covers/fixPoint.vue

@@ -38,11 +38,15 @@ const emit = defineEmits<{
 const isPure = !("type" in props.data) || props.data.type === FixType.POINT;
 const isPure = !("type" in props.data) || props.data.type === FixType.POINT;
 setTimeout(() => {
 setTimeout(() => {
   const fix3d = getFix3d(props.data);
   const fix3d = getFix3d(props.data);
-  if (fix3d) {
-    fix3d.bus.on("selectGraph", (select) => (select ? emit("focus") : emit("blur")));
-    fix3d.bus.on("selected", (select) =>
-      select ? emit("focusMeasure") : emit("blurMeasure")
-    );
+  if (fix3d && (!isPure || props.data.measure)) {
+    fix3d.bus.on("selectMeasure", (select) => {
+      console.log("selectMeasure", select);
+      select ? emit("focusMeasure") : emit("blurMeasure");
+    });
+    fix3d.bus.on("selected", (select) => {
+      console.log("selected", select);
+      select ? emit("focus") : emit("blur");
+    });
   }
   }
 });
 });
 </script>
 </script>

+ 19 - 17
src/views/scene/fixManage.ts

@@ -1,5 +1,5 @@
-import { CustomCom, customMap, useAsyncSDK, useConfirm, useSDK } from "@/hook";
-import { Base, FixPoint3D, FixPoint3DArgs, SDK } from "@/sdk";
+import { customMap, useConfirm, useSDK } from "@/hook";
+import { FixPoint3D, FixPoint3DArgs, SDK } from "@/sdk";
 import { baseLines } from "@/store/baseLine";
 import { baseLines } from "@/store/baseLine";
 import { BasePoint, basePoints } from "@/store/basePoint";
 import { BasePoint, basePoints } from "@/store/basePoint";
 import { FixPoint, FixType, fixPoints } from "@/store/fixPoint";
 import { FixPoint, FixType, fixPoints } from "@/store/fixPoint";
@@ -101,10 +101,8 @@ watchEffect(() => {
 const fixJoinBase = (data: FixPoint, fix3d: FixPoint3D) => {
 const fixJoinBase = (data: FixPoint, fix3d: FixPoint3D) => {
   const stopBaseExixtsWatch = watch(
   const stopBaseExixtsWatch = watch(
     () => ({
     () => ({
-      existsBasePoint: !basePoints.value.some(
-        (base) => base.id === data.baseId
-      ),
-      existsBaseLine: baseLines.value.length === 0,
+      existsBasePoint: basePoints.value.some((base) => base.id === data.baseId),
+      existsBaseLine: baseLines.value.length > 0,
     }),
     }),
     (args) => {
     (args) => {
       if (!args.existsBasePoint || !args.existsBaseLine) {
       if (!args.existsBasePoint || !args.existsBaseLine) {
@@ -122,6 +120,7 @@ const fixJoinBase = (data: FixPoint, fix3d: FixPoint3D) => {
       return basePoint ? { ...basePoint.pos } : null;
       return basePoint ? { ...basePoint.pos } : null;
     },
     },
     (basePos) => {
     (basePos) => {
+      console.error(basePos);
       if (!basePos) {
       if (!basePos) {
         stopBasePosWatch();
         stopBasePosWatch();
       } else {
       } else {
@@ -138,6 +137,7 @@ export const getFix3d = (data: FixPoint) => {
 
 
   let args: FixPoint3DArgs = {
   let args: FixPoint3DArgs = {
     measure: !!data.measure,
     measure: !!data.measure,
+    graph: undefined,
   };
   };
 
 
   if ("type" in data && data.type === FixType.GRAPH) {
   if ("type" in data && data.type === FixType.GRAPH) {
@@ -146,15 +146,13 @@ export const getFix3d = (data: FixPoint) => {
     args.pos = data.pos;
     args.pos = data.pos;
   }
   }
 
 
-  if (!args.measure && !args.graph) {
-    return;
-  }
   if (args.measure) {
   if (args.measure) {
     let basePoint: BasePoint;
     let basePoint: BasePoint;
     let baseId = data.baseId || basePointId;
     let baseId = data.baseId || basePointId;
     if (
     if (
       !baseId ||
       !baseId ||
-      !(basePoint = basePoints.value.find((item) => item.id === baseId))
+      !(basePoint = basePoints.value.find((item) => item.id === baseId)) ||
+      baseLines.value.length === 0
     ) {
     ) {
       return;
       return;
     }
     }
@@ -162,7 +160,6 @@ export const getFix3d = (data: FixPoint) => {
     args.basePoint = basePoint.pos;
     args.basePoint = basePoint.pos;
   }
   }
 
 
-  console.log("create", args);
   let sdk: SDK = useSDK();
   let sdk: SDK = useSDK();
   const fix3d = sdk.scene.createFixPoint(args);
   const fix3d = sdk.scene.createFixPoint(args);
   if (drawstatus.value === DrawStatus.ing) {
   if (drawstatus.value === DrawStatus.ing) {
@@ -171,6 +168,7 @@ export const getFix3d = (data: FixPoint) => {
 
 
   if (data.measure) {
   if (data.measure) {
     fix3d.bus.on("measureChange", (p) => {
     fix3d.bus.on("measureChange", (p) => {
+      console.log(p);
       Object.assign(data, {
       Object.assign(data, {
         lines: p.map((item) => ({ points: item?.line, dis: item?.dis })),
         lines: p.map((item) => ({ points: item?.line, dis: item?.dis })),
       });
       });
@@ -184,16 +182,20 @@ export const getFix3d = (data: FixPoint) => {
     });
     });
   }
   }
   fix3ds[data.id] = fix3d;
   fix3ds[data.id] = fix3d;
-  fixJoinBase(data, fix3d);
+  if (args.basePoint) {
+    fixJoinBase(data, fix3d);
+  }
   return fix3d;
   return fix3d;
 };
 };
 
 
 export const quitMeasure = (data: FixPoint) => {
 export const quitMeasure = (data: FixPoint) => {
-  Object.assign(data, { measure: false, lines: undefined });
-  const fix3d = fix3ds[data.id];
-  if (fix3d) {
-    fix3d.bus.off("measureChange");
-    fix3d.quitMeasure();
+  if (data.measure) {
+    Object.assign(data, { measure: false, lines: undefined });
+    const fix3d = fix3ds[data.id];
+    if (fix3d) {
+      fix3d.bus.off("measureChange");
+      fix3d.quitMeasure();
+    }
   }
   }
 };
 };
 
 

+ 2 - 0
src/views/scene/menus/actions.ts

@@ -159,6 +159,8 @@ const menuActions = {
             hide = null;
             hide = null;
           }
           }
           trackBaseIng.value = false;
           trackBaseIng.value = false;
+
+          getFix3d(fixPoints.value[len - 1]);
         },
         },
         false
         false
       );
       );