fix: Segmentation not displayed and unable to draw segments in volume viewport after converting Labelmap to Surface (#5488)

* fix: unable to draw segment after 3d layout

* comment update

---------
This commit is contained in:
Devu-trenser 2025-10-15 19:05:26 +05:30 committed by GitHub
parent 05ecdfe512
commit faea09e7ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 17 deletions

View File

@ -65,13 +65,11 @@ const segmentationRepresentationModifiedCallback = async (
return;
}
// whatever type the source viewport has, we need to add that to the target viewport
const sourceViewportRepresentation = segmentationService.getSegmentationRepresentations(
sourceViewport.viewportId,
{ segmentationId }
);
const type = sourceViewportRepresentation[0].type;
// Ensure the segmentation representation aligns with the target viewport type.
const type: Enums.SegmentationRepresentations =
viewport.type === CoreEnums.ViewportType.VOLUME_3D
? Enums.SegmentationRepresentations.Surface
: Enums.SegmentationRepresentations.Labelmap;
await segmentationService.addSegmentationRepresentation(targetViewportId, {
segmentationId,

View File

@ -1336,17 +1336,12 @@ class CornerstoneViewportService extends PubSubService implements IViewportServi
const { segmentationId, type, hydrated } = presentationItem;
const { Labelmap, Surface } = csToolsEnums.SegmentationRepresentations;
const representationType = (() => {
if (type === Surface) {
if (viewport.type === csEnums.ViewportType.VOLUME_3D) {
return Surface;
} else {
return Labelmap;
}
}
const isVolume3D = viewport.type === csEnums.ViewportType.VOLUME_3D;
return type;
})();
// Determine the appropriate segmentation representation for the viewport.
// If the current type is Surface but the viewport is not 3D, fallback to Labelmap.
// Otherwise, use the existing type.
const representationType = type === Surface && !isVolume3D ? Labelmap : type;
if (hydrated) {
segmentationService.addSegmentationRepresentation(viewport.id, {