bill 3 роки тому
батько
коміт
1fed41d31d
2 змінених файлів з 13 додано та 3 видалено
  1. 12 3
      src/sdk/association.ts
  2. 1 0
      src/sdk/sdk.ts

+ 12 - 3
src/sdk/association.ts

@@ -229,11 +229,13 @@ export const associationMessaure = <T extends MeasureType>(smMeasure: SceneMeasu
   }
 
   smMeasure.bus.on('update', ([points, modelIds]) => {
-    measure.positions = points.map((point, i) => ({ point, modelId: modelIds[i] }))
-    measure.desc = getMessaureDesc()!
+    unSet(() => {
+      measure.positions = points.map((point, i) => ({ point, modelId: modelIds[i] }))
+      measure.desc = getMessaureDesc()!
+    })
   })
 
-  smMeasure.bus.on('highlight', selected => unSet(() =>unSetModelUpdate(() => measure.selected = selected)))
+  smMeasure.bus.on('highlight', selected => unSet(() => unSetModelUpdate(() => measure.selected = selected)))
 
   unSetModelUpdate(() => {
     measure.desc = getMessaureDesc()!
@@ -269,6 +271,13 @@ const associationMessaures = (sdk: SDK) => {
       (selected = false) => isUnSet || getSceneMeasure(measure)?.changeSelect(selected)
     )
     watch(
+      () => measure.positions, 
+      (positions) => isUnSet || getSceneMeasure(measure)?.setPositions(
+        positions.map(position => ({...position.point})),
+        positions.map(position => position.modelId),
+      )
+    )
+    watch(
       () => custom.showMeasures, 
       (show) => {
         if (!isUnSet) {

+ 1 - 0
src/sdk/sdk.ts

@@ -87,6 +87,7 @@ export interface MeasureBase {
   fly: () => void
   bus: Emitter<{ update: [MeasurePosition['point'][], MeasurePosition['modelId'][]]; highlight: boolean }>
   changeSelect: (isHight: boolean) => void
+  setPositions: (points: MeasurePosition['point'][], modelIds: MeasurePosition['modelId'][]) => void
 } 
 
 export type Measure<T extends StoreMeasure['type'] = StoreMeasure['type']> = MeasureBase & (