Skip to main content

工具集

介绍

正如在 Tools 部分中讨论的,为了使用一个工具,你应该通过 CornerstoneTools3D.addTool() 先添加此工具,然后通过 Tool Groups 在视口上添加并激活它们。

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

考虑以下一组视口,以及为滚动和平移需要实现的行为。

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

重要

视口和工具组之间是一对一的关系。换句话说,没有视口可以成为多个工具组的一部分。

ToolGroup 创建和工具添加

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

目前,ToolGroups 不是可选的,为了使用工具,你应该创建一个 toolGroup 并将其添加到 toolGroup。

可以利用 ToolGroupManager 使用 createToolGroup 来创建一个工具组。

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

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

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

向 ToolGroups 添加视口

视口应使用 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 设置。

ToolGroup 管理器

其他用于管理 ToolGroups 的方法可以通过 ToolGroupManager 获得。

getToolGroupForViewport

返回给定视口的 ToolGroup,更多阅读 这里

getToolGroup

根据给定的 toolGroupId 返回 ToolGroup

destroyToolGroup

销毁 ToolGroup