2026-05-20-11-07-27 取消最佳位姿并生成软著材料

This commit is contained in:
2026-05-20 11:20:37 +08:00
parent 25f34d1eef
commit 43af51c24d
6 changed files with 191 additions and 26 deletions

View File

@@ -117,15 +117,6 @@ const defaultModelPose: ModelPoseValue = {
translateZ: 0,
scale: 1,
};
const headCtBestPose: ModelPoseValue = {
rotateX: -180,
rotateY: 0,
rotateZ: 1,
translateX: -0.03,
translateY: -0.155,
translateZ: 0.005,
scale: 1,
};
interface DicomAttributes {
patientName: string;
@@ -236,7 +227,6 @@ function buildModuleStyles(
function defaultModelPoses(): ModelPoseRecord[] {
return [
{ id: 'default', name: '默认', pose: { ...defaultModelPose } },
{ id: 'best', name: '最佳位姿', pose: { ...headCtBestPose } },
{ id: 'top', name: '俯视', pose: { ...defaultModelPose, rotateX: 0, rotateY: 0, rotateZ: 0 } },
{ id: 'side', name: '侧视', pose: { ...defaultModelPose, rotateX: 0, rotateY: 90, rotateZ: 0 } },
];
@@ -281,6 +271,7 @@ function normalizeModelPoses(existing?: Partial<ModelPoseRecord>[]) {
name: `位姿${index + 1}`,
pose: defaultModelPose,
}))
.filter((record) => record.id !== 'best' && record.name !== '最佳位姿')
.filter((record) => record.id)
: [];
const incomingById = new Map(incoming.map((record) => [record.id, record]));

View File

@@ -72,19 +72,9 @@ const defaultModelPose: ModelPose = {
translateZ: 0,
scale: 1,
};
const headCtBestPose: ModelPose = {
rotateX: -180,
rotateY: 0,
rotateZ: 1,
translateX: -0.03,
translateY: -0.155,
translateZ: 0.005,
scale: 1,
};
const defaultSavedPoses: SavedModelPose[] = [
{ id: 'default', name: '默认', pose: defaultModelPose },
{ id: 'best', name: '最佳位姿', pose: headCtBestPose },
{ id: 'top', name: '俯视', pose: { ...defaultModelPose, rotateX: 0, rotateY: 0, rotateZ: 0 } },
{ id: 'side', name: '侧视', pose: { ...defaultModelPose, rotateX: 0, rotateY: 90, rotateZ: 0 } },
];
@@ -2077,18 +2067,15 @@ export default function ReverseWorkspace({ projectId }: { projectId: string }) {
setSliceEnd(maxIndex);
setMappingSlice(maxIndex);
const nextPoses = item.modelPoses?.length ? item.modelPoses : defaultSavedPoses;
const preferredPose = nextPoses.find((pose) => pose.id === 'best')
?? nextPoses.find((pose) => pose.name.includes('最佳'))
?? nextPoses.find((pose) => pose.name === '位姿2')
?? nextPoses[0];
setModelPose(preferredPose?.pose ?? headCtBestPose);
const preferredPose = nextPoses.find((pose) => pose.id === 'default') ?? nextPoses[0];
setModelPose(preferredPose?.pose ?? defaultModelPose);
const nextStyles: Record<string, ModuleStyle> = {};
(item.stlFiles ?? []).forEach((fileName, index) => {
nextStyles[fileName] = makeDefaultModuleStyle(index, item.moduleStyles?.[fileName]);
});
setModuleStyles(nextStyles);
setSavedPoses(nextPoses);
setSelectedPoseId(preferredPose?.id ?? 'best');
setSelectedPoseId(preferredPose?.id ?? 'default');
}).catch(() => {
setProject(null);
setFusionVolume(null);