一、背景

我们考虑兼容,其实是在做这样一件事:以应用级别源代码能够复用为目标,适应多个版本Revit提供的API的变化。

我们要适应多个Revit的API谈不上向前兼容向后兼容的概念。我们只是在以复用为前提,去做多个版本库Dll的适配。

在以往Revit插件适应新的Revit宿主版本的时候,我们的工作就是找到那些语义和功能一致,但是签名发生变化的那些函数,然后去适配这些函数,重新定义一个满足现有输入输出要求的新函数。常用做法就是做一个专门提供适配的项目,在这个项目中去兼容各个版本的差异,通过条件编译来控制具体的执行逻辑。更具体的实现就是定义一个静态类,把冲突方法规整成新的静态方法,然后在插件开发中,统一使用这个适配项目提供的封装过的方法。我们可以把这个模块理解成适配器,或者外观模式,或者代理,它仅仅是实现了隐式的调用子系统方案。

例如如下实现:

public static class RevitAdapterAPI
{/// <summary>/// 获取填充区域类型的颜色,19中分为了前景颜色和背景颜色/// </summary>/// <param name="frType"></param>/// <returns></returns>public static void SetFilledRegionTypeColor(FilledRegionType frType, Color clr){
#if R16 || R18frType.Color = clr;
#elsefrType.ForegroundPatternColor = clr;
#endif}
}

这是一个渐进式的增量过程。由于两个Revit版本之间API差别有限,且在插件开发中基本也不会大范围的去使用这些特殊的功能,所以客观要求开发人员去有意识的使用那些适配过的方法也并非什么强人其难的事。

但是,这次新的2022版本API改动有些特别,它引入的冲突不只是函数冲突那么简单,它还改动了一些更基础的东西,这些东西恰恰又是在插件开发中普遍使用,程序员已经形成普遍认知的东西,比如说单位的枚举,参数的枚举等等。它把这些枚举类型给变了,变成什么我们暂时先不细说,但像这种类型替代引起的变化,对设计兼容方案来说是非常不友好的。它不仅冲击了程序开发人员的思想认知,也会增加旧代码的改动量,这又变相的增加了出错的风险和测试的成本。

所以,Revit2022版本的升级兼容不得不审慎的对待。

接下来如果有时间,会继续更新如何实现这次版本升级.....

Revit插件兼容2022版本升级策略(1) —背景相关推荐

  1. revit插件怎么快速自动标高?可以使用有自动标高的revit插件来实现

    revit插件怎么快速自动标高?这个问题其实可以使用有自动标高的revit插件来实现.有了这样的插件使用可以极大的提高bim工作者的工作效率,今天就使用一款中恒[综合模块]的建模助手插件来快速标高,这 ...

  2. 【超图对接日志】REVIT插件调用开发

    需求背景与目的 1.超图提供了关于REVIT导出UDBX的插件. 2.并且官方拥有通过代码调用的DEMO. 3.这里主要分析于DEMO使用的过程中需要特别注意的问题. 一.项目只支持.NET FRAM ...

  3. Revit插件 | 建模助手插件框架重大更新

    基于Revit使用的插件建模助手,更新了!有一说一,在10月底的首届建筑科技创新交流展览会上,建模助手实打实揽获了一波忠实粉丝. 根据后台数据显示,(revit插件)建模助手下载量有明显的提升!毕竟在 ...

  4. 好用的综合revit插件丨revit标高中段线的隐藏方法

    好用的综合revit插件丨revit标高中段线的隐藏方法 如(图-1)所示,只有轴网才能通过设置其类型属性的轴中段隐藏中段线,而标高没有类似的选项,那么我们能隐藏标高的中段线吗?顺便介绍好用的综合re ...

  5. 不能对Revit插件进行强签名

    背景 最近正在研发一款Revit插件,为加强dll间引用的关联性,对发布的所有dll进行了强签名. 在Revit加载强命名的插件后,执行插件命令,程序抛出异常未能加载文件或程序集或它的某一个依赖项.需 ...

  6. Revit插件 | 建模助手2023年度版本大更新,就是这么懂你

    ​大家好,本期是懂你的建模助手. 从去年开始,建模助手几乎每个月都会有大大小小的活动,目的是让大家用最低的成本尝试极棒的建模体验!强行挽尊ing 但作为一支很pro的团队,单一地搞活动肯定不行滴,还得 ...

  7. 建筑、结构和机电应的建模都要会Revit等软件?提高效率的revit插件?

    学习BIM的朋友经常会有一个问题.我从事具体的专业.为什么建筑.结构和机电应的建模我都要会? 事实上,你不仅要掌握建构.建筑.机电和族的建模能力,至少还要掌握Revit.CAD.Navisworks和 ...

  8. 建模大师怎么安装到revit中_工程师最爱的REVIT插件,让BIM建模溜到飞起!

    今日BIM公益培训:Revit 如何使用简化的二维图形代替复杂的三维模型平面投影私信--获取视频链接 手绘时代加班到晚上7点,CAD时代加班到晚上12点,BIM时代加班到第二天7点.为什么科技进步,我 ...

  9. 高手必备 | Revit插件到底哪个好?区别是什么?

    大家好,这里是建模助手. 不知道各位BIMer有没有听说过这么一个让人悲催的梗:手绘时代我们加班到晚上7点,CAD时代加班到晚上12点,BIM时代加班到第二天7点. 虽然科技是不断进步了,但是&quo ...

最新文章

  1. mysql yearweek 日期不准_Mysql 中,WEEK 与YEARWEEK函数的参数问题
  2. 动画库 Lottie 的使用
  3. ML之k-NN:k-NN实现对150朵共三种花的实例的萼片长度、宽,花瓣长、宽数据统计,根据一朵新花的四个特征来预测其种类
  4. mongodb内存映射原理
  5. 量子纠缠在量子计算机中的作用,量子纠缠
  6. C和C++里面常见错误和异常出现怎么解决总结(不断更新)
  7. Spring框架Runtime介绍(导包)
  8. 苹果Apple Music正式登陆索尼PS5
  9. java架构之-负载均衡-Ribbon 的使用
  10. 有哪些写给自己的句子?
  11. 谷歌浏览器chrome假死、卡死、经常无反应,火狐firefox闪黑格子的解决办法(显卡/驱动兼容问题)...
  12. 四六级英语听力软件测试,英语四六级听力真题库
  13. 赛特斯艰难上市,“软件定义通信”的路并不好走
  14. python中全局变量global的使用
  15. CF311D Interval Cubing 数学、线段树
  16. Linux下安装USB转串口驱动(PL2303)
  17. C#dgv调用数据中存储的路径来显示图片
  18. 爬虫-模拟点击,实现加载页面全部内容
  19. 验证码 图片无法刷新
  20. selenium自动化测试实战教学(12306自动化订票)春节出行必备

热门文章

  1. C++ 标准库类型 string
  2. 初学者怎么样提高c/c++编程能力?
  3. 新年愿望清单列好了吗?如何在桌面上添加便签计划清单
  4. 是J2EE还是.Net,选择您的技术平台 -- .Net正在推动新一代电子政府
  5. 酷早报:10月20日全球Web3加密行业重大资讯大汇总
  6. 用计算机算出年龄教程,年龄计算器的教程
  7. 感动:美国富人洗手间陪女佣…
  8. 命运好幽默让爱的人都沉默
  9. ‘若有说明:int i,j=7, *p=i;,则与i=j;等价的语句是 A) i= *p; B) *p=*j; C) i=j; D) i=* *p;
  10. python实现截图操作(android、PC、批处理)