|
@@ -27,7 +27,8 @@ import {
|
|
MeasureType,
|
|
MeasureType,
|
|
measures,
|
|
measures,
|
|
fuseModelsLoaded,
|
|
fuseModelsLoaded,
|
|
- getMeasureIsShow
|
|
|
|
|
|
+ getMeasureIsShow,
|
|
|
|
+ unSetModelUpdate
|
|
} from '@/store'
|
|
} from '@/store'
|
|
|
|
|
|
import TaggingComponent from '@/components/tagging/list.vue'
|
|
import TaggingComponent from '@/components/tagging/list.vue'
|
|
@@ -203,19 +204,26 @@ const associationTaggings = (el: HTMLDivElement) => {
|
|
const sceneMeasureMap = new WeakMap<Measure , SceneMeasure>()
|
|
const sceneMeasureMap = new WeakMap<Measure , SceneMeasure>()
|
|
export const getSceneMeasure = (measure?: Measure | null) => measure && sceneMeasureMap.get(toRaw(measure))
|
|
export const getSceneMeasure = (measure?: Measure | null) => measure && sceneMeasureMap.get(toRaw(measure))
|
|
|
|
|
|
|
|
+
|
|
export const associationMessaure = <T extends MeasureType>(smMeasure: SceneMeasure<T>, measure: Measure<T>) => {
|
|
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] }))
|
|
|
|
- const length = measure.type === MeasureType.area
|
|
|
|
|
|
+ const getMessaureDesc = () => {
|
|
|
|
+ const length = measure.type === MeasureType.area
|
|
? (smMeasure as unknown as SceneMeasure<MeasureType.area>).getArea()
|
|
? (smMeasure as unknown as SceneMeasure<MeasureType.area>).getArea()
|
|
: (smMeasure as unknown as SceneMeasure<MeasureType.free>).getDistance()
|
|
: (smMeasure as unknown as SceneMeasure<MeasureType.free>).getDistance()
|
|
|
|
|
|
- measure.desc = round(length.value, 2).toString()
|
|
|
|
- })
|
|
|
|
|
|
+ return round(length.value, 2).toString()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ smMeasure.bus.on('update', ([points, modelIds]) => {
|
|
|
|
+ measure.positions = points.map((point, i) => ({ point, modelId: modelIds[i] }))
|
|
|
|
+ measure.desc = getMessaureDesc()!
|
|
})
|
|
})
|
|
|
|
|
|
- smMeasure.bus.on('highlight', selected => unSet(() => measure.selected = selected))
|
|
|
|
|
|
+ smMeasure.bus.on('highlight', selected => unSetModelUpdate(() => measure.selected = selected))
|
|
|
|
+
|
|
|
|
+ unSetModelUpdate(() => {
|
|
|
|
+ measure.desc = getMessaureDesc()!
|
|
|
|
+ })
|
|
}
|
|
}
|
|
|
|
|
|
const associationMessaures = (sdk: SDK) => {
|
|
const associationMessaures = (sdk: SDK) => {
|
|
@@ -230,8 +238,8 @@ const associationMessaures = (sdk: SDK) => {
|
|
item.positions.map(position => position.modelId),
|
|
item.positions.map(position => position.modelId),
|
|
)
|
|
)
|
|
if (sceneMeasure.destroy) {
|
|
if (sceneMeasure.destroy) {
|
|
- associationMessaure(sceneMeasure, item)
|
|
|
|
sceneMeasureMap.set(toRaw(item), sceneMeasure)
|
|
sceneMeasureMap.set(toRaw(item), sceneMeasure)
|
|
|
|
+ associationMessaure(sceneMeasure, item)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (const item of deleted) {
|
|
for (const item of deleted) {
|