1

我有一些为 Revit 2019 或以下版本编写的 Revit 加载项。现在我正在尝试升级 Revit 2020 的工具,但似乎 API 方法发生了一些重大变化。幸运的是,其中一些是向后兼容的,因此我可以使用新的 API 方法更新代码并将其用于 Revit 2020 和 2019。但是,其中一些仅适用于 Revit 2020。(ex)ImageInstance.Create(Document, View, ElementId, ImagePlacementOptions

在这种情况下,保持相同代码库与不同 Revit 版本兼容的最佳方法是什么?我可以很容易地想象使用 If 语句来确定每个 Revit 版本的正确 API 方法,但对于工具的维护来说似乎并不理想。

任何意见,将不胜感激!

4

1 回答 1

1

自 Revit 2015 版以来,我一直在编写和管理插件,并使用if语句来确保事情是向后兼容的。他们还没有完全失控……

值得编写一个小函数来将 Revit 版本作为字符串返回给您的if语句:

def revitVersion(): # returns '2020'
     return app.VersionName[-4:]

您还可以放在lists一起帮助检查功能:

revitsWithoutBIM360 = ['2015', '2016', '2017', '2018']

if revitVersion() in revitsWithoutBIM360:
     print 'This version or Revit can't access BIM360 projects'
else:
     # your code here

可能不是最优雅的处理方式,但对我有用。

于 2020-04-15T04:19:16.987 回答