|
@@ -1,22 +1,24 @@
|
|
-import {useSDK} from "@/hook";
|
|
|
|
-import {MeasureAtom, MeasureType, TemploraryID, unTemp} from "@/store";
|
|
|
|
-import {Measure, MeasureUnit, StartMeasure} from "@/sdk";
|
|
|
|
-import {Message} from "@/components/base";
|
|
|
|
-
|
|
|
|
|
|
+import { useSDK } from "@/hook";
|
|
|
|
+import { MeasureAtom, MeasureType, TemploraryID, unTemp } from "@/store";
|
|
|
|
+import { Measure, MeasureUnit, StartMeasure } from "@/sdk";
|
|
|
|
+import { Message } from "@/components/base";
|
|
|
|
|
|
type CanvasMeasureAtom = { raw: MeasureAtom; canvas: Measure };
|
|
type CanvasMeasureAtom = { raw: MeasureAtom; canvas: Measure };
|
|
type TempCanvasMeasureAtom = Omit<CanvasMeasureAtom, "canvas"> & {
|
|
type TempCanvasMeasureAtom = Omit<CanvasMeasureAtom, "canvas"> & {
|
|
canvas: StartMeasure;
|
|
canvas: StartMeasure;
|
|
};
|
|
};
|
|
|
|
|
|
-export type SuccessMeasureAtom = MeasureAtom & {length: number}
|
|
|
|
-
|
|
|
|
-let prevMeasure: TempCanvasMeasureAtom
|
|
|
|
|
|
+export type SuccessMeasureAtom = MeasureAtom & { length: number };
|
|
|
|
|
|
|
|
+let prevMeasure: TempCanvasMeasureAtom;
|
|
|
|
|
|
-export const startMeasure = (type: MeasureType, color: string, firstClickMarker?: () => void) => {
|
|
|
|
|
|
+export const startMeasure = (
|
|
|
|
+ type: MeasureType,
|
|
|
|
+ color: string,
|
|
|
|
+ firstClickMarker?: () => void
|
|
|
|
+) => {
|
|
if (prevMeasure) {
|
|
if (prevMeasure) {
|
|
- prevMeasure.canvas.bus.emit("quit")
|
|
|
|
|
|
+ prevMeasure.canvas.bus.emit("quit");
|
|
prevMeasure = null;
|
|
prevMeasure = null;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -39,42 +41,44 @@ export const startMeasure = (type: MeasureType, color: string, firstClickMarker?
|
|
canvas: measure,
|
|
canvas: measure,
|
|
};
|
|
};
|
|
|
|
|
|
- return new Promise<typeof raw>(resolve => {
|
|
|
|
|
|
+ return new Promise<typeof raw>((resolve) => {
|
|
const endHandler = () => {
|
|
const endHandler = () => {
|
|
raw.points = currentMeasure.canvas.getPoints();
|
|
raw.points = currentMeasure.canvas.getPoints();
|
|
- raw.length = currentMeasure.canvas.getDistance().value
|
|
|
|
|
|
+ raw.length = currentMeasure.canvas.getDistance().value;
|
|
raw.dataset_points = currentMeasure.canvas.getDatasetLocations();
|
|
raw.dataset_points = currentMeasure.canvas.getDatasetLocations();
|
|
raw.datasetIds = currentMeasure.canvas.getDatasets();
|
|
raw.datasetIds = currentMeasure.canvas.getDatasets();
|
|
raw.dataSet = unTemp;
|
|
raw.dataSet = unTemp;
|
|
endMeasure();
|
|
endMeasure();
|
|
resolve(raw);
|
|
resolve(raw);
|
|
- }
|
|
|
|
|
|
+ };
|
|
const quitHandler = () => {
|
|
const quitHandler = () => {
|
|
currentMeasure.canvas.quit();
|
|
currentMeasure.canvas.quit();
|
|
- endMeasure()
|
|
|
|
|
|
+ endMeasure();
|
|
resolve(null);
|
|
resolve(null);
|
|
- }
|
|
|
|
- const invalidPointHandler = (msg = '点云为空,无法测量') => {
|
|
|
|
|
|
+ };
|
|
|
|
+ const invalidPointHandler = (msg = "点云为空,换个位置试试") => {
|
|
Message.warning(msg);
|
|
Message.warning(msg);
|
|
- }
|
|
|
|
|
|
+ };
|
|
const endMeasure = () => {
|
|
const endMeasure = () => {
|
|
currentMeasure.canvas.clear();
|
|
currentMeasure.canvas.clear();
|
|
currentMeasure.canvas.bus.off("end", endHandler);
|
|
currentMeasure.canvas.bus.off("end", endHandler);
|
|
currentMeasure.canvas.bus.off("quit", quitHandler);
|
|
currentMeasure.canvas.bus.off("quit", quitHandler);
|
|
currentMeasure.canvas.bus.off("invalidPoint", invalidPointHandler);
|
|
currentMeasure.canvas.bus.off("invalidPoint", invalidPointHandler);
|
|
- firstClickMarker && currentMeasure.canvas.bus.off("firstClickMarker", firstClickMarker)
|
|
|
|
|
|
+ firstClickMarker &&
|
|
|
|
+ currentMeasure.canvas.bus.off("firstClickMarker", firstClickMarker);
|
|
if (prevMeasure === currentMeasure) {
|
|
if (prevMeasure === currentMeasure) {
|
|
prevMeasure = null;
|
|
prevMeasure = null;
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ };
|
|
|
|
|
|
currentMeasure.canvas.bus.on("quit", quitHandler);
|
|
currentMeasure.canvas.bus.on("quit", quitHandler);
|
|
currentMeasure.canvas.bus.on("end", endHandler);
|
|
currentMeasure.canvas.bus.on("end", endHandler);
|
|
currentMeasure.canvas.bus.on("invalidPoint", invalidPointHandler);
|
|
currentMeasure.canvas.bus.on("invalidPoint", invalidPointHandler);
|
|
- firstClickMarker && currentMeasure.canvas.bus.on("firstClickMarker", firstClickMarker)
|
|
|
|
- prevMeasure = currentMeasure
|
|
|
|
- })
|
|
|
|
-}
|
|
|
|
|
|
+ firstClickMarker &&
|
|
|
|
+ currentMeasure.canvas.bus.on("firstClickMarker", firstClickMarker);
|
|
|
|
+ prevMeasure = currentMeasure;
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
|
|
export const continuedMeasure = (
|
|
export const continuedMeasure = (
|
|
type: MeasureType,
|
|
type: MeasureType,
|
|
@@ -82,19 +86,17 @@ export const continuedMeasure = (
|
|
onAddMeasure: (data: MeasureAtom) => void,
|
|
onAddMeasure: (data: MeasureAtom) => void,
|
|
firstClickMarker?: () => void
|
|
firstClickMarker?: () => void
|
|
) => {
|
|
) => {
|
|
-
|
|
|
|
- startMeasure(type, color, firstClickMarker)
|
|
|
|
- .then(data => {
|
|
|
|
- if (data) {
|
|
|
|
- onAddMeasure(data);
|
|
|
|
- continuedMeasure(type, color, onAddMeasure, firstClickMarker)
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
-}
|
|
|
|
|
|
+ startMeasure(type, color, firstClickMarker).then((data) => {
|
|
|
|
+ if (data) {
|
|
|
|
+ onAddMeasure(data);
|
|
|
|
+ continuedMeasure(type, color, onAddMeasure, firstClickMarker);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+};
|
|
|
|
|
|
export const stopMeasure = () => {
|
|
export const stopMeasure = () => {
|
|
if (prevMeasure) {
|
|
if (prevMeasure) {
|
|
- prevMeasure.canvas.bus.emit("quit")
|
|
|
|
|
|
+ prevMeasure.canvas.bus.emit("quit");
|
|
prevMeasure = null;
|
|
prevMeasure = null;
|
|
}
|
|
}
|
|
-}
|
|
|
|
|
|
+};
|