Revit API: поддержка кода для нескольких версий API - PullRequest
1 голос
/ 15 апреля 2020

У меня есть некоторые надстройки Revit, написанные для Revit 2019 или версий ниже. Сейчас я пытаюсь обновить инструменты для Revit 2020, но, похоже, в методах API произошли некоторые существенные изменения. К счастью, некоторые из них имеют обратную совместимость, поэтому я могу просто обновить код новыми методами API и использовать его для Revit 2020 и 2019. Однако некоторые из них работают только для Revit 2020. (ex) ImageInstance.Create(Document, View, ElementId, ImagePlacementOptions)

В таком случае, каков наилучший способ обеспечения совместимости одной и той же базы кода с различными версиями Revit? Я легко могу представить себе использование If Statement для определения правильного метода API для каждой версии Revit, но он не кажется идеальным для обслуживания инструмента.

Буду признателен за любой совет!

1 Ответ

1 голос
/ 15 апреля 2020

Я пишу и управляю надстройками с 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

Может быть, это не самый элегантный способ справиться с этим, но он работает для меня.

...