Skip to main content

工具组

介绍

如在 Tools 部分讨论的那样,要使用工具,您应该首先通过 CornerstoneTools3D.addTool() 添加工具,然后通过 Tool Groups 将工具添加并设置为视口的活动工具。

工具组是 Cornerstone 库中的一个新概念。ToolGroup 的目标是定义一种简单的方式,以每个视口/每个工具的方式定义工具行为。此外,通过一个共同的 ToolGroup,视口可以共享相同的配置、模式和工具。

考虑以下视口集以及滚动和平移的预期行为。

对于 ct-axialct-sagittal 视口,我们希望启用鼠标滚轮滚动和鼠标中键拖动平移。然而,对于 pt-coronal 视口,它是一个最大强度投影(MIP)视口,滚动切片没有意义,预期行为是通过鼠标滚轮旋转 MIP 卷,并禁用平移。

重要

视口与工具组之间存在一一对应的关系。换句话说,任何视口不能属于多个工具组。

工具组创建与工具添加

ToolGroupsToolGroupManager 管理。工具组管理器用于创建、搜索和销毁工具组。

目前,工具组是必需的,为了使用工具,您必须创建工具组并将其添加到工具组中。

可以使用 createToolGroup 方法通过 ToolGroupManager 创建工具组。

import { ToolGroupManager } from '@cornerstonejs/tools';  

const toolGroupId = 'ctToolGroup';
const ctToolGroup = ToolGroupManager.createToolGroup(toolGroupId);

// 向工具组添加工具
// 操作工具
ctToolGroup.addTool(PanTool.toolName);
ctToolGroup.addTool(ZoomTool.toolName);
ctToolGroup.addTool(ProbeTool.toolName);

向工具组添加视口

应使用 addViewport 将视口添加到 ToolGroup 中。

// 将工具组应用于视口或所有渲染场景的视口  
ctToolGroup.addViewport(viewportId, renderingEngineId);

为什么需要传递 renderingEngineId

原因是 viewportId 对于每个渲染引擎是唯一的。您可以有多个渲染引擎,其中包含具有相同 viewportId 的不同视口。

激活工具

可以使用 setToolActive 为每个工具组激活工具,并提供相应的鼠标绑定键。

// 为每个工具设置 ToolGroup 的工具模式  
// 可用模式包括:'Active','Passive','Enabled','Disabled'
ctToolGroup.setToolActive(LengthTool.toolName, {
bindings: [{ mouseButton: MouseBindings.Primary }],
});
ctToolGroup.setToolActive(PanTool.toolName, {
bindings: [{ mouseButton: MouseBindings.Auxiliary }],
});
ctToolGroup.setToolActive(ZoomTool.toolName, {
bindings: [{ mouseButton: MouseBindings.Secondary }],
});
ctToolGroup.setToolActive(StackScrollMouseWheelTool.toolName);

其他工具模式也可以通过 setToolEnabledsetToolPassivesetToolDisabled 设置。

工具组管理器

可以通过 ToolGroupManager 使用其他方法来管理工具组。

getToolGroupForViewport

返回给定视口的工具组,详情请阅读 这里

getToolGroup

返回给定 toolGroupId 的工具组

destroyToolGroup

销毁一个工具组