|
@@ -200,14 +200,13 @@ const associationTaggings = (el: HTMLDivElement) => {
|
|
|
|
|
|
// -----------------测量关联--------------------
|
|
// -----------------测量关联--------------------
|
|
|
|
|
|
-const sceneMeasureMap = new Map<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]) => {
|
|
smMeasure.bus.on('update', ([points, modelIds]) => {
|
|
unSet(() => {
|
|
unSet(() => {
|
|
measure.positions = points.map((point, i) => ({ point, modelId: modelIds[i] }))
|
|
measure.positions = points.map((point, i) => ({ point, modelId: modelIds[i] }))
|
|
- console.log('update messaure', measure.positions)
|
|
|
|
const length = measure.type === MeasureType.area
|
|
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()
|
|
@@ -230,12 +229,14 @@ const associationMessaures = (sdk: SDK) => {
|
|
item.positions.map(position => ({...position.point})),
|
|
item.positions.map(position => ({...position.point})),
|
|
item.positions.map(position => position.modelId),
|
|
item.positions.map(position => position.modelId),
|
|
)
|
|
)
|
|
- associationMessaure(sceneMeasure, item)
|
|
|
|
- sceneMeasureMap.set(toRaw(item), sceneMeasure)
|
|
|
|
|
|
+ if (sceneMeasure.destroy) {
|
|
|
|
+ associationMessaure(sceneMeasure, item)
|
|
|
|
+ sceneMeasureMap.set(toRaw(item), sceneMeasure)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
for (const item of deleted) {
|
|
for (const item of deleted) {
|
|
const sceneMeasure = getSceneMeasure(item)
|
|
const sceneMeasure = getSceneMeasure(item)
|
|
- sceneMeasure && sceneMeasure.destroy()
|
|
|
|
|
|
+ sceneMeasure && sceneMeasure.destroy!()
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
|
|
@@ -339,7 +340,7 @@ export const setupAssociation = (mountEl: HTMLDivElement) => {
|
|
if (fuseModelsLoaded.value) {
|
|
if (fuseModelsLoaded.value) {
|
|
associationTaggings(mountEl)
|
|
associationTaggings(mountEl)
|
|
associationMessaures(sdk)
|
|
associationMessaures(sdk)
|
|
- stopWatch()
|
|
|
|
|
|
+ nextTick(() => stopWatch())
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|