|
@@ -1,5 +1,5 @@
|
|
|
import { sdk } from './sdk'
|
|
|
-import { toRaw, ref, watch, nextTick, watchEffect } from 'vue'
|
|
|
+import { toRaw, ref, watch, nextTick, watchEffect, reactive } from 'vue'
|
|
|
import {
|
|
|
viewModeStack,
|
|
|
showLeftPanoStack,
|
|
@@ -58,7 +58,7 @@ export const modelRange: ModelAttrRange = {
|
|
|
scaleRange: { min: 0, max: 200, step: 0.1 }
|
|
|
}
|
|
|
|
|
|
-const sceneModelMap = new WeakMap<FuseModel, SceneModel>()
|
|
|
+const sceneModelMap = reactive(new WeakMap<FuseModel, SceneModel>())
|
|
|
export const getSceneModel = (model?: FuseModel | null) => model && sceneModelMap.get(toRaw(model))
|
|
|
|
|
|
const associationModels = (sdk: SDK) => {
|
|
@@ -223,29 +223,22 @@ const associationTaggings = (el: HTMLDivElement) => {
|
|
|
|
|
|
// -----------------测量关联--------------------
|
|
|
|
|
|
-const sceneMeasureMap = new WeakMap<Measure , SceneMeasure>()
|
|
|
+const sceneMeasureMap = reactive(new WeakMap<Measure , SceneMeasure>())
|
|
|
export const getSceneMeasure = (measure?: Measure | null) => measure && sceneMeasureMap.get(toRaw(measure))
|
|
|
+export const getSceneMeasureDesc = (smMeasure: SceneMeasure, measure: Measure) => {
|
|
|
+ const length = measure.type === MeasureType.area
|
|
|
+ ? (smMeasure as unknown as SceneMeasure<MeasureType.area>).getArea()
|
|
|
+ : (smMeasure as unknown as SceneMeasure<MeasureType.free>).getDistance()
|
|
|
|
|
|
+ return round(length.value, 2).toString()
|
|
|
+}
|
|
|
|
|
|
-export const associationMessaure = <T extends MeasureType>(smMeasure: SceneMeasure<T>, measure: Measure<T>) => {
|
|
|
- const getMessaureDesc = () => {
|
|
|
- const length = measure.type === MeasureType.area
|
|
|
- ? (smMeasure as unknown as SceneMeasure<MeasureType.area>).getArea()
|
|
|
- : (smMeasure as unknown as SceneMeasure<MeasureType.free>).getDistance()
|
|
|
-
|
|
|
- return round(length.value, 2).toString()
|
|
|
- }
|
|
|
|
|
|
+export const associationMessaure = <T extends MeasureType>(smMeasure: SceneMeasure<T>, measure: Measure<T>) => {
|
|
|
smMeasure.bus.on('update', ([points, modelIds]) => {
|
|
|
- unSet(() => {
|
|
|
- measure.positions = points.map((point, i) => ({ point, modelId: modelIds[i] }))
|
|
|
- measure.desc = getMessaureDesc()!
|
|
|
- })
|
|
|
+ unSet(() => measure.positions = points.map((point, i) => ({ point, modelId: modelIds[i] })))
|
|
|
})
|
|
|
-
|
|
|
smMeasure.bus.on('highlight', selected => unSet(() => measure.selected = selected))
|
|
|
- measure.desc = getMessaureDesc()
|
|
|
- // unSetModelUpdate(() => measure.desc = getMessaureDesc()!)
|
|
|
}
|
|
|
|
|
|
const associationMessaures = (sdk: SDK) => {
|