Revit插件兼容2022版本升级策略(2) —问题分析

本文分析了Revit 2022中单位表示的变化,DisplayUnitType枚举被替换为UnitTypeId。Revit提供了临时的过时方法帮助迁移代码。针对这一变化,提出了保持开发便利性、前瞻扩展性和代码稳定性的适配方案,建议创建自定义单位对象以封装转换逻辑,减少开发人员感知并增强代码的适应性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二、问题分析

a、API变化分析

       Revit2022主要的变化,或者说我们最在意的变化,是通用单位表示的变化。以及依赖单位的其他对象的属性和方法都要做调整。我先展示一下Revit版本从2020到2022单位相关的那些对象是如何演变的。

 

   黄色的枚举类型,2021变成了弃用,到2022由绿色的类型代替

                                 DisplayUnitType(int)——>UnitTypeId(ForgeTypeId)

        单位的表示,由DisplayUnitType枚举字段表示,变成了UnitTypeId静态类的只读属性一一对应。具体值由int——>ForgeTypeId(本质又是一个唯一的typeId(string))

       另外在2021版,专门提供了一些有趣的方法,这些方法刚被引入,就被标记成过时。很显然这些方法就是给我们去做适配的时候临时使用获取内部对应关系的。比如UnitUtils里面这些方法

  public static class UnitUtils
    { 
..................

 [Obsolete("This method is deprecated in Revit 2021 and may be removed in a future version of Revit. It will not be replaced, but until its removal it may be used to help migrate code that uses the `DisplayUnitType` enumeration to the `ForgeTypeId` class.")]
        public static DisplayUnitType GetDisplayUnitType(ForgeTypeId unitTypeId);
   [Obsolete("This method is deprecated in Revit 2021 and may be removed in a future version of Revit. It will not be replaced, but until its removal it may be used to help migrate code that uses the `DisplayUnitType` enumeration to the `ForgeTypeId` class.")]
        public static ForgeTypeId GetUnitTypeId(DisplayUnitType displayUnitTypeEnum);

..................
}

b、应用源码现有状态

  这个枚举类型在项目中使用的也非常多。所以我们的兼容目标是:

     1、开发人员使用起来一定要方便。

          尽量维持原来旧版本的使用方式;尽一切努力减少程序开发人员对变化的感知;有一 定的技术策略能使开发人员方便的调用适配过后的功能。

    2、要有一定的前瞻扩展性。

          能抵御一定层次的RevitAPI变化所带来的冲击。这个以适应Revit变化趋势为的方案首选方案

    3、封装变化的位置要统一,实现方案要稳定,可推导,可预测。

          让程序人员可以迅速地建立使用新方案进行开发的思维体系;适配模块高度内聚化

4、核心变动要集中。

          便于验证测试

总结:我们是不是可抽象出自定义的一层来表示单位。既不是DIsplayUnitType又不是ForgeTypeId。我们自己加个对象去表述单位,把这些逻辑串起来。没有什么事儿是加一个抽象层解决不了的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值