提交代码
This commit is contained in:
@@ -32,9 +32,10 @@
|
||||
| 管理器 | 职责 |
|
||||
|--------|------|
|
||||
| EngineManager | 3D 引擎管理 |
|
||||
| ToolbarManager | 工具栏管理 |
|
||||
| ToolbarManager | 底部工具栏管理(传统线性布局,当前未使用) |
|
||||
| **RadialToolbarManager** | **径向工具栏管理(当前主交互入口)** |
|
||||
| DialogManager | 对话框管理 |
|
||||
| ButtonGroupManager | 按钮组管理 |
|
||||
| ButtonGroupManager | 按钮组管理(通用,当前未使用) |
|
||||
| RightKeyManager | 右键菜单管理 |
|
||||
|
||||
### 功能管理器
|
||||
@@ -75,6 +76,7 @@
|
||||
| BimTree | 树形控件 |
|
||||
| BimMenu | 菜单组件 |
|
||||
| BimButtonGroup | 按钮组 |
|
||||
| **RadialToolbar** | **径向工具栏(圆形扇形菜单,当前主交互入口)** |
|
||||
|
||||
### 面板组件
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
src/managers/
|
||||
├── engine-manager.ts
|
||||
├── toolbar-manager.ts
|
||||
├── radial-toolbar-manager.ts
|
||||
├── dialog-manager.ts
|
||||
├── button-group-manager.ts
|
||||
├── right-key-manager.ts
|
||||
@@ -44,6 +45,7 @@ src/managers/
|
||||
BaseManager
|
||||
├── EngineManager
|
||||
├── ToolbarManager
|
||||
├── **RadialToolbarManager**
|
||||
├── DialogManager
|
||||
├── ButtonGroupManager
|
||||
├── RightKeyManager
|
||||
@@ -127,7 +129,7 @@ class EngineManager extends BaseManager {
|
||||
| 类别 | 代表 Manager | 主要职责 |
|
||||
|---|---|---|
|
||||
| 核心入口 | `EngineManager` | 引擎生命周期与外部 API |
|
||||
| UI 容器 | `ToolbarManager`, `DialogManager`, `ButtonGroupManager` | UI 容器与通用交互 |
|
||||
| UI 容器 | `RadialToolbarManager`, `ToolbarManager`, `DialogManager`, `ButtonGroupManager` | UI 容器与通用交互 |
|
||||
| 业务编排 | `MeasureDialogManager`, `Section*DialogManager`, `WalkControlManager`, `SettingDialogManager` | 对话框/面板回调与引擎能力编排 |
|
||||
| 数据/交互 | `ConstructTreeManagerBtn`, `ComponentDetailManager`, `RightKeyManager` | 构件树、属性、右键菜单 |
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ src/components/
|
||||
├── tree/ # 树形控件组件
|
||||
├── menu/ # 菜单组件
|
||||
├── button-group/ # 按钮组件
|
||||
├── radial-toolbar/ # 径向工具栏组件
|
||||
├── collapse/ # 折叠面板组件
|
||||
├── tab/ # 标签页组件
|
||||
├── description/ # 描述列表组件
|
||||
@@ -408,6 +409,81 @@ class BimButtonGroup {
|
||||
|
||||
---
|
||||
|
||||
## RadialToolbar(径向工具栏组件)
|
||||
|
||||
### 概述
|
||||
|
||||
圆形径向菜单组件,用于替代传统线性工具栏。支持多环布局、扇形展开、hover 触发和 toggle 状态。
|
||||
|
||||
### 配置
|
||||
|
||||
```typescript
|
||||
interface RadialToolbarOptions {
|
||||
container: HTMLElement;
|
||||
items?: RadialMenuItem[];
|
||||
mainButtonIcon?: string;
|
||||
mainButtonLabel?: string;
|
||||
onMainButtonClick?: () => void;
|
||||
itemsPerRing?: number;
|
||||
closeDelay?: number;
|
||||
}
|
||||
|
||||
interface RadialMenuItem {
|
||||
id: string;
|
||||
label: string;
|
||||
/** 直接显示的文本(优先级高于 label 的国际化翻译) */
|
||||
title?: string;
|
||||
icon?: string;
|
||||
onClick?: (item: RadialMenuItem) => void;
|
||||
isToggle?: boolean;
|
||||
isActive?: boolean;
|
||||
onToggle?: (nextActive: boolean, item: RadialMenuItem) => void;
|
||||
}
|
||||
```
|
||||
|
||||
### API
|
||||
|
||||
```typescript
|
||||
class RadialToolbar {
|
||||
init(): void;
|
||||
addItem(item: RadialMenuItem): void;
|
||||
setItemActive(id: string, active: boolean): void;
|
||||
setTheme(theme: ThemeConfig): void;
|
||||
setLocales(): void;
|
||||
destroy(): void;
|
||||
}
|
||||
```
|
||||
|
||||
### 使用说明
|
||||
|
||||
- `label`:国际化键名(如 `'toolbar.home'`),SDK 内置按钮使用
|
||||
- `title`:直接显示文本,优先级高于 `label`,适合外部动态添加按钮
|
||||
- `itemsPerRing`:每环最多显示的按钮数,超出自动进入下一环
|
||||
- `isToggle`:是否为切换按钮,配合 `onToggle` 和 `setItemActive` 使用
|
||||
|
||||
### 布局说明
|
||||
|
||||
**角度计算**:按钮中心均匀分布在扇形范围内(默认 180°~270°),通过 `(index + 0.5) / count` 计算位置,确保完整填满扇形而不贴边。
|
||||
|
||||
**环容量**:每环按钮数量写死在 `src/components/radial-toolbar/index.ts` 中(当前为 `[4, 6, 8]`),如需调整直接修改源码。
|
||||
|
||||
### 与 BottomDock 联动
|
||||
|
||||
`RadialToolbarManager` 会自动监听 `BottomDock` 状态变化,同步按钮激活状态:
|
||||
|
||||
```typescript
|
||||
// 点击径向工具栏按钮展开/收起 Dock
|
||||
onToggle: (active) => {
|
||||
if (active) {
|
||||
bimEngine.bottomDock?.open('measure');
|
||||
} else {
|
||||
bimEngine.bottomDock?.close('measure');
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## BimCollapse(折叠面板组件)
|
||||
|
||||
### 概述
|
||||
|
||||
Reference in New Issue
Block a user