214 lines
6.3 KiB
Markdown
214 lines
6.3 KiB
Markdown
# 2.2.1 类别设置功能设计说明
|
||
|
||
## 2.2.1.1. 模块描述
|
||
|
||
类别设置模块是物流"类别"设置功能的核心模块,负责在模型属性页面新增"物流属性"类别。该模块为后续的物流元素分类和属性管理提供基础支持,通过扩展Navisworks的属性系统,为模型元素添加物流相关的分类信息。
|
||
|
||
该模块与CategoryAttributeManager和NavisworksComPropertyManager紧密集成,使用COM API在模型元素上创建自定义的"物流属性"类别。
|
||
|
||
## 2.2.1.2. 功能
|
||
|
||
### 核心功能
|
||
1. **类别创建**:在模型属性页面创建"物流属性"类别
|
||
2. **类别管理**:管理物流属性的类别定义和结构
|
||
3. **属性扩展**:为类别添加自定义属性字段
|
||
4. **持久化存储**:将类别信息持久化存储在模型中
|
||
|
||
### 子功能
|
||
| 功能编号 | 功能名称 | 功能描述 |
|
||
|---------|---------|---------|
|
||
| 2.2.1.F1 | 类别初始化 | 初始化物流属性类别结构 |
|
||
| 2.2.1.F2 | 类别检查 | 检查元素是否已有物流属性 |
|
||
| 2.2.1.F3 | 类别添加 | 为元素添加物流属性类别 |
|
||
| 2.2.1.F4 | 类别移除 | 从元素移除物流属性类别 |
|
||
| 2.2.1.F5 | 类别查询 | 查询具有特定类别的元素 |
|
||
|
||
## 2.2.1.3. 性能
|
||
|
||
### 性能指标
|
||
| 指标名称 | 目标值 | 说明 |
|
||
|---------|-------|------|
|
||
| 类别添加时间 | < 100ms | 为单个元素添加类别的时间 |
|
||
| 批量添加时间 | < 1秒 | 为100个元素批量添加类别 |
|
||
| 类别查询时间 | < 500ms | 查询特定类别元素的时间 |
|
||
| 内存占用 | < 50MB | 类别管理的额外内存占用 |
|
||
|
||
### 性能优化策略
|
||
1. 批量COM API调用减少开销
|
||
2. 类别缓存避免重复查询
|
||
3. 延迟加载策略
|
||
|
||
## 2.2.1.4. 输入输出项
|
||
|
||
### 1. 字段输入输出
|
||
|
||
#### 输入字段
|
||
| 字段名 | 类型 | 必填 | 说明 |
|
||
|-------|------|-----|------|
|
||
| Items | ModelItemCollection | 是 | 要添加类别的模型元素 |
|
||
| CategoryName | string | 否 | 类别名称,默认"物流属性" |
|
||
|
||
#### 输出字段
|
||
| 字段名 | 类型 | 说明 |
|
||
|-------|------|------|
|
||
| SuccessCount | int | 成功添加类别的元素数量 |
|
||
| HasCategory | bool | 元素是否已有物流属性 |
|
||
|
||
### 2. 界面交互输入输出
|
||
|
||
#### 界面输入
|
||
- 类别名称设置
|
||
- 元素选择确认
|
||
- 类别添加/移除操作
|
||
|
||
#### 界面输出
|
||
- 类别添加结果提示
|
||
- 元素属性面板更新
|
||
- 类别统计信息
|
||
|
||
## 2.2.1.5. 算法
|
||
|
||
### 类别添加算法
|
||
```
|
||
算法:为元素添加物流属性类别
|
||
输入:模型元素集合
|
||
输出:添加结果
|
||
|
||
1. 初始化COM API
|
||
2. 对于每个元素:
|
||
3. 检查元素是否已有物流属性
|
||
4. 如果已有,跳过
|
||
5. 创建"物流属性"类别
|
||
6. 添加类别到元素的属性集合
|
||
7. 提交更改
|
||
8. 返回统计结果
|
||
```
|
||
|
||
### 类别查询算法
|
||
```
|
||
算法:查询具有物流属性的元素
|
||
输入:搜索范围
|
||
输出:元素列表
|
||
|
||
1. 创建搜索条件
|
||
2. 设置搜索条件:PropertyCategory = "物流属性"
|
||
3. 执行搜索
|
||
4. 返回匹配的元素集合
|
||
```
|
||
|
||
## 2.2.1.6. 流程逻辑
|
||
|
||
```
|
||
开始
|
||
│
|
||
▼
|
||
┌─────────────────┐
|
||
│ 选择模型元素 │
|
||
└────────┬────────┘
|
||
│
|
||
▼
|
||
┌─────────────────┐ 是
|
||
│ 已有物流属性? │──────────┐
|
||
└────────┬────────┘ │
|
||
│否 │
|
||
▼ │
|
||
┌─────────────────┐ │
|
||
│ 创建物流属性类别 │ │
|
||
└────────┬────────┘ │
|
||
│ │
|
||
▼ │
|
||
┌─────────────────┐ │
|
||
│ 添加类别到元素 │ │
|
||
└────────┬────────┘ │
|
||
│ │
|
||
┌────┴───────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────┐
|
||
│ 更新属性面板 │
|
||
└────────┬────────┘
|
||
│
|
||
▼
|
||
┌─────────────────┐
|
||
│ 显示操作结果 │
|
||
└────────┬────────┘
|
||
│
|
||
▼
|
||
结束
|
||
```
|
||
|
||
## 2.2.1.7. 接口
|
||
|
||
### 公共接口
|
||
```csharp
|
||
/// <summary>
|
||
/// 类别属性管理器
|
||
/// </summary>
|
||
public class CategoryAttributeManager
|
||
{
|
||
/// <summary>
|
||
/// 添加物流属性类别
|
||
/// </summary>
|
||
/// <param name="items">模型元素集合</param>
|
||
/// <returns>成功添加的数量</returns>
|
||
public int AddLogisticsCategory(ModelItemCollection items);
|
||
|
||
/// <summary>
|
||
/// 检查元素是否有物流属性
|
||
/// </summary>
|
||
/// <param name="item">模型元素</param>
|
||
/// <returns>是否有物流属性</returns>
|
||
public bool HasLogisticsCategory(ModelItem item);
|
||
|
||
/// <summary>
|
||
/// 移除物流属性类别
|
||
/// </summary>
|
||
/// <param name="items">模型元素集合</param>
|
||
/// <returns>成功移除的数量</returns>
|
||
public int RemoveLogisticsCategory(ModelItemCollection items);
|
||
|
||
/// <summary>
|
||
/// 获取所有具有物流属性的元素
|
||
/// </summary>
|
||
/// <returns>元素列表</returns>
|
||
public List<ModelItem> GetAllLogisticsItems();
|
||
}
|
||
```
|
||
|
||
## 2.2.1.8. 注释设计
|
||
|
||
### 代码注释规范
|
||
```csharp
|
||
/// <summary>
|
||
/// 物流类别定义
|
||
/// </summary>
|
||
public static class LogisticsCategories
|
||
{
|
||
/// <summary>
|
||
/// 物流属性类别显示名称
|
||
/// </summary>
|
||
public const string LOGISTICS = "物流属性";
|
||
|
||
/// <summary>
|
||
/// 物流属性类别内部名称
|
||
/// 用于COM API操作
|
||
/// </summary>
|
||
public const string CATEGORY_INTERNAL_NAME = "物流属性_Internal";
|
||
}
|
||
```
|
||
|
||
## 2.2.1.9. 数据结构
|
||
|
||
### LogisticsCategories 常量
|
||
| 常量名 | 值 | 说明 |
|
||
|-------|---|------|
|
||
| LOGISTICS | "物流属性" | 类别显示名称 |
|
||
| CATEGORY_INTERNAL_NAME | "物流属性_Internal" | 类别内部名称 |
|
||
|
||
### CategoryResult 结构
|
||
| 字段名 | 类型 | 说明 |
|
||
|-------|------|------|
|
||
| SuccessCount | int | 成功数量 |
|
||
| FailCount | int | 失败数量 |
|
||
| ProcessedItems | List<ModelItem> | 处理的元素 |
|