提交代码

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

@@ -172,3 +172,163 @@ bimEngine.engine?.getEngineComponent()?.isolateModels([
{ url: modelUrl, ids: [350518] }
]);
```
---
## 6) 启动一键编码 `startOneClickEncoding()`
### 所属模块
- 调用入口:`bimEngine.engine?.getEngineComponent()`
- 源码位置:`src/components/engine/index.ts`
### 方法签名
```ts
startOneClickEncoding(): void
```
### 入参
- 无入参。
### 行为约定
- 调用前建议先订阅 `encoding:start``encoding:complete``encoding:error` 事件以获取编码进度和结果。
- 若引擎未初始化或底层 `oneClickEncoding` 模块不可用,会在控制台输出警告并静默返回。
- 多次调用将重复触发编码流程(底层行为由 `iflow-engine-base` 决定)。
### 调用示例
```ts
const engineComp = bimEngine.engine?.getEngineComponent();
// 订阅编码事件
bimEngine.on('encoding:start', (data) => {
console.log('编码开始', data);
});
bimEngine.on('encoding:complete', (data) => {
console.log('编码完成', data);
});
bimEngine.on('encoding:error', (data) => {
console.log('编码失败', data);
});
// 启动编码
engineComp?.startOneClickEncoding();
```
---
## 7) 检查模型编码 `hasModelCode()`
### 所属模块
- 调用入口:`bimEngine.engine?.getEngineComponent()`
- 源码位置:`src/components/engine/index.ts`
### 方法签名
```ts
hasModelCode(): boolean
```
### 入参
- 无入参。
### 返回值
- `true`:所有已加载模型均已存在编码数据。
- `false`:至少有一个模型没有编码数据,或引擎未初始化、`oneClickEncoding` 模块不可用。
### 行为约定
- 遍历当前 `engine.models` 数组,对每个模型调用底层 `oneClickEncoding.exitModelCode(url)`
- 仅当所有模型的返回值为 `true` 时,才返回 `true`
- 若当前没有加载任何模型,返回 `false`
### 调用示例
```ts
const hasCode = bimEngine.engine?.getEngineComponent()?.hasModelCode();
console.log('模型是否已编码:', hasCode);
```
---
## 8) 读取缓存编码 `readModelCodeFormStoge()`
### 所属模块
- 调用入口:`bimEngine.engine?.getEngineComponent()`
- 源码位置:`src/components/engine/index.ts`
### 方法签名
```ts
readModelCodeFormStoge(): void
```
### 入参
- 无入参。
### 行为约定
- 遍历当前 `engine.models` 数组,对每个模型调用底层 `oneClickEncoding.readModelCodeFormStoge(url)`
- 若引擎未初始化或底层模块不可用,会在控制台输出警告并静默返回。
- 无返回值,仅触发读取动作。
### 调用示例
```ts
bimEngine.engine?.getEngineComponent()?.readModelCodeFormStoge();
```
---
## 9) 一键编码事件
### 所属模块
- 事件总线:`bimEngine`(通过 `ManagerRegistry` 桥接)
- 源码位置:`src/components/engine/index.ts`
### 事件列表
| 事件名 | 触发时机 | payload |
|--------|---------|---------|
| `encoding:start` | 编码流程开始时 | `{ data?: any }` |
| `encoding:complete` | 编码流程成功完成时 | `{ data?: any }` |
| `encoding:error` | 编码流程失败时 | `{ data?: any }` |
### 行为约定
- 事件由底层 `oneClickEncoding` 模块触发,经 `Engine` 组件桥接后冒泡到 `bimEngine` 事件总线。
- 订阅方式与 SDK 其他事件一致:使用 `bimEngine.on(event, handler)`,返回的函数可用于取消订阅。
- 建议在调用 `startOneClickEncoding()` 之前完成事件订阅,避免漏掉 `encoding:start` 事件。
### 调用示例
```ts
const unsubStart = bimEngine.on('encoding:start', (data) => {
console.log('编码开始', data);
});
const unsubComplete = bimEngine.on('encoding:complete', (data) => {
console.log('编码完成', data);
});
const unsubError = bimEngine.on('encoding:error', (data) => {
console.log('编码失败', data);
});
// 启动编码
bimEngine.engine?.getEngineComponent()?.startOneClickEncoding();
// 需要时取消订阅
// unsubStart();
// unsubComplete();
// unsubError();
```