Revit api Revit API:维护多个API版本的代码
我有一些Revit附加模块是为Revit 2019或以下版本编写的。现在,我正在尝试升级Revit 2020的工具,但API方法似乎有一些重大变化。幸运的是,其中一些是向后兼容的,因此我可以使用新的API方法更新代码,并将其用于Revit 2020和2019。但是,其中一些仅适用于Revit 2020。(ex)Revit api Revit API:维护多个API版本的代码,revit-api,revit,revitpythonshell,pyrevit,Revit Api,Revit,Revitpythonshell,Pyrevit,我有一些Revit附加模块是为Revit 2019或以下版本编写的。现在,我正在尝试升级Revit 2020的工具,但API方法似乎有一些重大变化。幸运的是,其中一些是向后兼容的,因此我可以使用新的API方法更新代码,并将其用于Revit 2020和2019。但是,其中一些仅适用于Revit 2020。(ex)ImageInstance.Create(文档、视图、元素ID、ImagePlacementOptions) 在这种情况下,保持同一代码库与不同Revit版本兼容的最佳方法是什么?我可以很
ImageInstance.Create(文档、视图、元素ID、ImagePlacementOptions
)
在这种情况下,保持同一代码库与不同Revit版本兼容的最佳方法是什么?我可以很容易地想象使用If语句为每个Revit版本确定合适的API方法,但对于工具的维护似乎并不理想
任何建议都将不胜感激 自Revit 2015版以来,我一直在编写和管理加载项,并使用
if
语句确保内容向后兼容。他们还没有失去控制
值得编写一个小函数,将Revit版本作为字符串返回给if
语句:
def revitVersion(): # returns '2020'
return app.VersionName[-4:]
您还可以将列表
放在一起,以帮助检查功能:
revitsWithoutBIM360 = ['2015', '2016', '2017', '2018']
if revitVersion() in revitsWithoutBIM360:
print 'This version or Revit can't access BIM360 projects'
else:
# your code here
这可能不是最优雅的处理方式,但对我来说很有效。非常感谢!是的,虽然我表达了一点担忧,但你的方法显然是最直接的方法。我会试试看的!