|
|
@@ -249,6 +249,65 @@ export class MeasurementToolManager {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取指定 viewport 的所有线段测量结果
|
|
|
+ */
|
|
|
+ // eslint-disable-next-line
|
|
|
+ static getLengthMeasurements(viewportId: string): any[] {
|
|
|
+ try {
|
|
|
+ const viewport =
|
|
|
+ cornerstone.getEnabledElementByViewportId(viewportId)?.viewport;
|
|
|
+ if (!viewport) {
|
|
|
+ console.warn(
|
|
|
+ `[MeasurementToolManager] Viewport not found: ${viewportId}`
|
|
|
+ );
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+
|
|
|
+ const annotations = cornerstoneTools.annotation.state.getAnnotations(
|
|
|
+ LengthTool.toolName,
|
|
|
+ viewport.element
|
|
|
+ );
|
|
|
+
|
|
|
+ return annotations.map((annotation) => ({
|
|
|
+ annotationUID: annotation.annotationUID,
|
|
|
+ length: annotation.data?.cachedStats?.length || 0,
|
|
|
+ unit: annotation.data?.cachedStats?.unit || 'mm',
|
|
|
+ points: annotation.data?.handles?.points || [],
|
|
|
+ }));
|
|
|
+ } catch (error) {
|
|
|
+ console.error(
|
|
|
+ `[MeasurementToolManager] Error getting measurements:`,
|
|
|
+ error
|
|
|
+ );
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 为多个 viewport 批量激活线段测量工具
|
|
|
+ */
|
|
|
+ static activateLengthToolForViewports(viewportIds: string[]): boolean[] {
|
|
|
+ return viewportIds.map((viewportId) => this.activateLengthTool(viewportId));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 为多个 viewport 批量停用线段测量工具
|
|
|
+ */
|
|
|
+ static deactivateLengthToolForViewports(viewportIds: string[]): boolean[] {
|
|
|
+ return viewportIds.map((viewportId) =>
|
|
|
+ this.deactivateLengthTool(viewportId)
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 为多个 viewport 批量清除线段测量
|
|
|
+ */
|
|
|
+ static clearLengthMeasurementsForViewports(viewportIds: string[]): boolean[] {
|
|
|
+ return viewportIds.map((viewportId) =>
|
|
|
+ this.clearLengthMeasurements(viewportId)
|
|
|
+ );
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 检查角度测量工具是否处于激活状态
|