- Dot inside, switch to "Mark Outside", dot what to exclude, then Fill.
- {smartFillScope === "slice"
- ? " Restricted to the slice your scribbles are on."
- : " Grows through the whole volume."}
-
- Draw the segment fully on the "first" slice number of the chosen pane, then run.
-
-
-
- {/* ---- 7. Export ---- */}
-
- {serverCaseId && (
- // Server save is temporarily disabled while the endpoint is
- // reworked. Left wired up (minus the network call) so
- // re-enabling later is a one-line flip, not a rebuild.
-
- )}
-
- {mode
- ? `${
- mode === "brush"
- ? "Painting"
- : mode === "eraser"
- ? "Erasing"
- : mode === "smartfill"
- ? "Smart-filling"
- : "Lassoing"
- } on the 2D panes.`
- : "Pick a mode above, then work on any 2D pane."}
- {" "}Edits stay in your browser until downloaded.
-
-
-
- );
-}
-
-export default MaskEditPanel;
\ No newline at end of file
diff --git a/PanTS-Demo/src/components/MeshViewer.tsx b/PanTS-Demo/src/components/MeshViewer.tsx
index dcdfb07..21a72c6 100644
--- a/PanTS-Demo/src/components/MeshViewer.tsx
+++ b/PanTS-Demo/src/components/MeshViewer.tsx
@@ -4,10 +4,10 @@ import { Suspense, useEffect, useMemo, useState } from "react";
import { APP_CONSTANTS } from "../helpers/constants";
import { cornerstoneLpsMmToThree, type Vec3 } from "../helpers/utils";
import type { MeshManifest } from "../types";
-import { OrganMesh } from "./OrganMesh";
+import { OrganMesh } from "./viewer/OrganMesh";
import { SceneCrosshair3D } from "./SceneCrosshair3D";
import type { Color } from "@cornerstonejs/core/types";
-import { LiveSegmentMesh } from "./LiveSegmentMesh";
+import { LiveSegmentMesh } from "./viewer/LiveSegmentMesh";
import type { CheckBoxData } from "../types";
import { getEditedSegments, subscribeToSegmentationEdits } from "../helpers/CornerstoneNifti2";
@@ -70,7 +70,7 @@ export function SegmentationMeshViewer({ caseId, checkState, loading, opacity, c
return (