NavisworksTransport/doc/introduction/2.2.1_类别设置功能设计说明.md

6.3 KiB
Raw Blame History

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. 接口

公共接口

/// <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. 注释设计

代码注释规范

/// <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 处理的元素