Skip to content

Interface: SelectionManager ​

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:107

选中与悬停状态 manager。

职责域:节点 / 面 / 边三种粒度的选中集维护(apply / clear)、悬停 (setHover)、点击拾取(pick / pickBox)、可拾取粒度过滤 (setPickableMask)与高亮 / 描边样式(setHighlightMode / setStyle)。 状态变化经 selection-changed / hover-changed 事件对外广播。

Remarks ​

经 Viewer 实例上的 viewer.selection 访问,不要直接构造。

Methods ​

apply() ​

apply(items, mode): void

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:177

程序化修改选中集:Set 替换、Add 追加、Toggle 反选。

实际选中集发生变化时触发 selection-changed(含 added / removed / current); 无净变化不触发。item 非法(nodeId 不存在 / Face 缺 faceGroupId 等)抛 ViewerError。

Parameters ​

items ​

SelectionItem | readonly SelectionItem[]

mode ​

SelectionMode

Returns ​

void


clear() ​

clear(): void

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:205

清空选中集并触发 selection-changed;本就为空时静默返回。

Returns ​

void


dispose() ​

dispose(): void

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:159

释放内部事件订阅;由 Viewer.dispose 统一调用。

Returns ​

void


getAutoSelectOnClick() ​

getAutoSelectOnClick(): boolean

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:344

取「点击画布自动选中」开关状态。

Returns ​

boolean


getHighlightMode() ​

getHighlightMode(): SelectionHighlightMode

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:315

取当前选中视觉呈现模式。

Returns ​

SelectionHighlightMode


getHover() ​

getHover(): SelectionItem | null

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:278

取当前悬停项;无悬停返回 null。

Returns ​

SelectionItem | null


getPickableMask() ​

getPickableMask(): number

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:301

取当前可拾取粒度位掩码。

Returns ​

number


getSelection() ​

getSelection(): readonly SelectionItem[]

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:216

取当前选中集快照(返回副本,可安全持有)。

Returns ​

readonly SelectionItem[]


getSelectionBounds() ​

getSelectionBounds(): Box3 | null

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:227

当前选中节点(去重)的世界包围盒并集;无选中或无可用盒时返回 null。 供变换 gizmo 定位与多选 pivot 使用。用每个叶子的 LIVE 世界盒(leafWorldBox, 已含编辑增量 D + explode 偏移),故 move/explode 后跟随零件实时位置——不再读 install 时的陈旧 worldBoundingBox 快照。非叶子/隐藏(zero-scale)节点贡献 null 跳过 (与旧行为一致:装配节点本就无自身盒)。

Returns ​

Box3 | null


getStyle() ​

getStyle(): Readonly<SelectionStyle>

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:330

取当前完整选中 / 悬停样式。

Returns ​

Readonly<SelectionStyle>


has() ​

has(item): boolean

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:246

判断某个 item(同类型 + 同 id)当前是否在选中集中。

Parameters ​

item ​

SelectionItem

Returns ​

boolean


pick() ​

pick(x, y, mask?): SelectionItem | null

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:359

在画布坐标 (x, y) 处做一次拾取,返回命中的 item;未命中返回 null。 只拾取、不改选中集;mask 缺省时用当前 pickableMask。

Parameters ​

x ​

number

y ​

number

mask? ​

number

Returns ​

SelectionItem | null


pickBox() ​

pickBox(x1, y1, x2, y2, opts?): readonly SelectionItem[]

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:371

框选拾取:返回画布矩形 (x1,y1)-(x2,y2) 内命中的 item 列表(不改选中集)。

v1 仅支持 Node 粒度(mask 含 Face / Edge 位会降级并告警); opts.mustBeFullyInside 为 true 时要求节点完全落入矩形才算命中 (默认相交即命中);模型未就绪时返回空数组。

Parameters ​

x1 ​

number

y1 ​

number

x2 ​

number

y2 ​

number

opts? ​

BoxPickOptions

Returns ​

readonly SelectionItem[]


setAutoHoverOnMove() ​

setAutoHoverOnMove(enabled): void

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:349

开关「指针移动自动悬停」(默认开);关闭时同时清除当前悬停,以免高亮残留。

Parameters ​

enabled ​

boolean

Returns ​

void


setAutoSelectOnClick() ​

setAutoSelectOnClick(enabled): void

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:337

开关「点击画布自动选中」(默认开);关闭后点击不再改选中集,仍可用 pick() 自行拾取。

Parameters ​

enabled ​

boolean

Returns ​

void


setHighlightMode() ​

setHighlightMode(mode): void

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:306

设置选中的视觉呈现模式:仅染色 / 仅描边 / 染色+描边。

Parameters ​

mode ​

SelectionHighlightMode

Returns ​

void


setHover() ​

setHover(item): void

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:258

程序化设置悬停项(传 null 清除),变化时触发 hover-changed;同项重复设置为 no-op。

Parameters ​

item ​

SelectionItem | null

Returns ​

void


setPickableMask() ​

setPickableMask(mask): void

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:289

设置可拾取的实体粒度位掩码(Node / Face / Edge 可按位组合;默认仅 SelectionMask.Node,即零件级)。含非法位时抛 ViewerError;影响 点击 / 悬停拾取与不带 mask 的 pick()。

Parameters ​

mask ​

number

Returns ​

void


setStyle() ​

setStyle(patch): void

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:320

增量更新选中 / 悬停样式(颜色、描边强度、染色混合度等),只覆盖传入字段。

Parameters ​

patch ​

SelectionStylePatch

Returns ​

void


size() ​

size(): number

Defined in: packages/viewer-core/src/public/managers/SelectionManager.ts:251

取当前选中项数量。

Returns ​

number