Всем привет. На связи Евгений Кондаков. Сегодня будет небольшая статья для тех, кто хочет исправить работу макросов на шаблонах ADSK для разделов ОВ и ВК, чтобы они заработали в Revit 2022.
Если Вы так же знаете C#, как знаю его я (никак), то эта статья для Вас 😊
Итак, поехали.
При попытке запустить макрос на Revit 2022 нас встречает замечательное окошко с ошибкой:
Если внимательно посмотреть на содержимое ошибки, то видно, что написано про отсутствующий метод ConvertFromInternalUnits. Он не то, что бы не существует, а просто аргументы поданы не те. Вообще, этот метод преобразует внутренние единицы Revit (футы и дюймы) в пользовательские (метры, миллиметры и т.д.)
Я первым делом зашёл на revitapidocs.com и посмотрел класс UnitUtils и его метод ConvertFromInternalUnits и сравнил то, что написано для 2021.1 и 2022 версий. И, действительно, ещё в версии 2021.1 он помечен как устаревший (типа такой сигнал разработчикам на будущее). Вот ссылка https://www.revitapidocs.com/2021.1/1eb255ae-0617-7ecf-d4d7-3c1e5977d0b1.htm
В 2022 версии в метод ConvertFromInternalUnits надо подать ещё и ForgeTypeId, а что это за зверь, я пока не разобрался. Поэтому будем править макрос «на коленке». В скором обновлении шаблонов разработчики обещают подправить его, так что, может быть, когда Вы будете читать эту статью, это уже будет неактуально.
Заходим на закладку «Управление» ----> «Диспетчер макросов», выделяем макрос и нажимаем редактировать. Изменения будем вносить в 417, 444, 456 строку. А строки 966 и 1006 я просто закомментировал, т.к. пока не знаю, что с ними делать. Да и не использую я создание пространств по помещениям через макрос: хочется больше контроля 😊
Дальше будут скрины как было и как стало по каждой из строчек:
417 строка — преобразование линейных единиц из футов в метры:
444 строка — преобразование объемных единиц из куб. футов в куб. метры:
456 строка — преобразование площадных единиц из кв. футов в кв. метры:
В конце внесения всех изменений в код макроса в Sharp Develop нажимаем на выпадающее меню «Сборка» и выбираем «Собрать решение» (F8). Ошибок быть не должно. Ну максимум одно предупреждение про неиспользованную переменную. С переводными коэффициентами из футов в метры вроде тоже всё проверил :)
После этого запускаем макрос привычным образом и видим, что спецификация О_ОВ_Спецификация сводная заполнилась, и трубы с воздуховодами в неё тоже попали.
На сегодня у меня всё. Напишите в комментариях, получилось или нет. Где-то в любом случае должны появиться подводные камни😊