refactor: sync managers and section box actions
Wire section box scale/reverse/reset to clipping APIs and sync demo artifacts.
This commit is contained in:
@@ -1,14 +1,15 @@
|
||||
import { BaseDialogManager } from '../core/base-dialog-manager';
|
||||
import { MeasurePanel } from '../components/measure-panel';
|
||||
import type { MeasureConfig, MeasureResult } from '../components/measure-panel/types';
|
||||
import { ENGINE_TYPE_TO_MODE, MEASURE_TYPES, type MeasureMode } from '../types/measure';
|
||||
import { MEASURE_TYPES, getModeBycallBackType, getValueType, type MeasureMode, type CallBackType } from '../types/measure';
|
||||
|
||||
interface EngineMeasureData {
|
||||
id: string;
|
||||
point1?: { x: number; y: number; z: number };
|
||||
point2?: { x: number; y: number; z: number };
|
||||
text: number;
|
||||
type: string;
|
||||
textX?: number;
|
||||
textY?: number;
|
||||
textZ?: number;
|
||||
type: CallBackType;
|
||||
isSelect: boolean;
|
||||
container: any;
|
||||
}
|
||||
@@ -80,20 +81,24 @@ export class MeasureDialogManager extends BaseDialogManager {
|
||||
const engine = this.registry.engine3d?.getEngine();
|
||||
if (engine?.events) {
|
||||
const handler = (data: EngineMeasureData) => {
|
||||
console.log('[MeasureDialogManager] 测量值变化:', data);
|
||||
console.log('[MeasureDialogManager] 测量值回调:', data);
|
||||
if (data && this.panel) {
|
||||
this.handleMeasureChanged(data);
|
||||
}
|
||||
};
|
||||
engine.events.on('measure-changed', handler);
|
||||
this.unsubscribeMeasureChanged = () => engine.events.off('measure-changed', handler);
|
||||
engine.events.on('measure-click', handler);
|
||||
this.unsubscribeMeasureChanged = () => {
|
||||
engine.events.off('measure-changed', handler);
|
||||
engine.events.on('measure-click', handler);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private handleMeasureChanged(data: EngineMeasureData): void {
|
||||
if (!this.panel) return;
|
||||
|
||||
const targetMode = ENGINE_TYPE_TO_MODE[data.type];
|
||||
const targetMode = getModeBycallBackType(data.type);
|
||||
if (!targetMode) {
|
||||
console.warn('[MeasureDialogManager] 未知测量类型:', data.type);
|
||||
return;
|
||||
@@ -112,10 +117,12 @@ export class MeasureDialogManager extends BaseDialogManager {
|
||||
const config = MEASURE_TYPES[mode];
|
||||
const result: MeasureResult = {};
|
||||
|
||||
if (config.valueType === 'point' && data.point1) {
|
||||
result.xyz = { x: data.point1.x, y: data.point1.y, z: data.point1.z };
|
||||
if (getValueType(mode) === 'point') {
|
||||
if (data.textX !== undefined && data.textY !== undefined && data.textZ !== undefined) {
|
||||
result.xyz = { x: data.textX, y: data.textY, z: data.textZ };
|
||||
}
|
||||
} else {
|
||||
(result as any)[config.resultField] = data.text;
|
||||
(result as any)[config.callBackType] = data.text;
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user