Changes
This commit is contained in:
@@ -17,6 +17,19 @@ type AnchorMode = 'tracking' | 'manual' | 'fine-tuning';
|
||||
type InspectionResult = 'pending' | 'approved' | 'rejected';
|
||||
type RenderMode = 'solid' | 'wireframe';
|
||||
|
||||
export interface MeasurePoint {
|
||||
x: number;
|
||||
y: number;
|
||||
z: number;
|
||||
}
|
||||
|
||||
export interface Measurement {
|
||||
id: string;
|
||||
pointA: MeasurePoint;
|
||||
pointB: MeasurePoint;
|
||||
distanceMM: number;
|
||||
}
|
||||
|
||||
export interface ChecklistItem {
|
||||
id: string;
|
||||
label: string;
|
||||
@@ -60,6 +73,14 @@ interface ModelStore {
|
||||
setChecklistItemNote: (id: string, note: string) => void;
|
||||
setChecklistItemAudio: (id: string, audioUrl: string | null) => void;
|
||||
resetChecklist: () => void;
|
||||
|
||||
measureMode: boolean;
|
||||
setMeasureMode: (on: boolean) => void;
|
||||
measurePoints: MeasurePoint[];
|
||||
addMeasurePoint: (p: MeasurePoint) => void;
|
||||
measurements: Measurement[];
|
||||
clearMeasurements: () => void;
|
||||
removeMeasurement: (id: string) => void;
|
||||
}
|
||||
|
||||
const defaultFineTuning: FineTuning = { posX: 0, posY: 0, posZ: 0, rotY: 0 };
|
||||
@@ -104,4 +125,31 @@ export const useModelStore = create<ModelStore>((set) => ({
|
||||
),
|
||||
})),
|
||||
resetChecklist: () => set({ checklist: defaultChecklist.map(i => ({ ...i })) }),
|
||||
|
||||
measureMode: false,
|
||||
setMeasureMode: (measureMode) => set({ measureMode, measurePoints: [] }),
|
||||
measurePoints: [],
|
||||
addMeasurePoint: (p) => set((state) => {
|
||||
const points = [...state.measurePoints, p];
|
||||
if (points.length === 2) {
|
||||
const [a, b] = points;
|
||||
const dx = (a.x - b.x) * 1000;
|
||||
const dy = (a.y - b.y) * 1000;
|
||||
const dz = (a.z - b.z) * 1000;
|
||||
const distanceMM = Math.sqrt(dx * dx + dy * dy + dz * dz);
|
||||
const measurement: Measurement = {
|
||||
id: `m_${Date.now()}`,
|
||||
pointA: a,
|
||||
pointB: b,
|
||||
distanceMM,
|
||||
};
|
||||
return { measurePoints: [], measurements: [...state.measurements, measurement] };
|
||||
}
|
||||
return { measurePoints: points };
|
||||
}),
|
||||
measurements: [],
|
||||
clearMeasurements: () => set({ measurements: [], measurePoints: [] }),
|
||||
removeMeasurement: (id) => set((state) => ({
|
||||
measurements: state.measurements.filter(m => m.id !== id),
|
||||
})),
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user