Skip to content

Interface: SelectionManager

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

选中与悬停状态 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:114

程序化修改选中集: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:142

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

Returns

void


dispose()

dispose(): void

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

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

Returns

void


getAutoSelectOnClick()

getAutoSelectOnClick(): boolean

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

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

Returns

boolean


getHighlightMode()

getHighlightMode(): SelectionHighlightMode

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

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

Returns

SelectionHighlightMode


getHover()

getHover(): SelectionItem | null

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

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

Returns

SelectionItem | null


getPickableMask()

getPickableMask(): number

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

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

Returns

number


getSelection()

getSelection(): readonly SelectionItem[]

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

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

Returns

readonly SelectionItem[]


getStyle()

getStyle(): Readonly<SelectionStyle>

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

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

Returns

Readonly<SelectionStyle>


has()

has(item): boolean

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

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

Parameters

item

SelectionItem

Returns

boolean


pick()

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

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

在画布坐标 (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:283

框选拾取:返回画布矩形 (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:261

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

Parameters

enabled

boolean

Returns

void


setAutoSelectOnClick()

setAutoSelectOnClick(enabled): void

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

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

Parameters

enabled

boolean

Returns

void


setHighlightMode()

setHighlightMode(mode): void

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

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

Parameters

mode

SelectionHighlightMode

Returns

void


setHover()

setHover(item): void

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

程序化设置悬停项(传 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:201

设置可拾取的实体粒度位掩码(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:232

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

Parameters

patch

Partial<SelectionStyle>

Returns

void


size()

size(): number

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

取当前选中项数量。

Returns

number