提交代码

This commit is contained in:
yuding
2026-04-20 10:38:42 +08:00
parent 0b730da6f4
commit 9a185699ae
36 changed files with 17961 additions and 13149 deletions

View File

@@ -32,9 +32,10 @@
| 管理器 | 职责 |
|--------|------|
| EngineManager | 3D 引擎管理 |
| ToolbarManager | 工具栏管理 |
| ToolbarManager | 底部工具栏管理(传统线性布局,当前未使用) |
| **RadialToolbarManager** | **径向工具栏管理(当前主交互入口)** |
| DialogManager | 对话框管理 |
| ButtonGroupManager | 按钮组管理 |
| ButtonGroupManager | 按钮组管理(通用,当前未使用) |
| RightKeyManager | 右键菜单管理 |
### 功能管理器
@@ -75,6 +76,7 @@
| BimTree | 树形控件 |
| BimMenu | 菜单组件 |
| BimButtonGroup | 按钮组 |
| **RadialToolbar** | **径向工具栏(圆形扇形菜单,当前主交互入口)** |
### 面板组件

View File

@@ -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` | 构件树、属性、右键菜单 |

View File

@@ -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折叠面板组件
### 概述