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:
yuding
2026-02-04 18:20:30 +08:00
parent b12940f49c
commit 191c571f40
64 changed files with 10569 additions and 7065 deletions

View File

@@ -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;