пятница, 19 августа 2016 г.

Приложение "Связь параметров"

Предлагаю оценить моё первое более-менее серьезное приложение для Revit.
Предназначено для автоматической передачи значения параметра от одного элемента к другому (либо в одном элементе - от одного параметра в другой). Процесс работает в фоновом режиме, срабатывает сразу после изменения элемента. Дополнительные связи добавляются через диалоговое окно.
Видео:


Это старая версия приложения, обновление тут.
Для чего можно использовать приложение? Можно много чего придумать:
  • Передача в семейство узла информации о размерах балки и колонны;
  • Передача в семейство "лягушки" информации о площади плиты;
  • Передача для трубы значения системного параметра "Смещение от уровня" в общий параметр "Рзм.СмещениеОтУровня";
  • Передача в отделочную стену номера помещения, и т.д.
Если придумаете еще интересные способы использования приложения - делитесь в  комментариях!
Скачать архив - яндекс-диск, гугл-диск. Установочные файлы я пока делать не умею, так что просто распакуйте архив в  C:\ProgramData\Autodesk\Revit\Addins\2015
Кнопки появятся на новой вкладке на ленте "Weandrevit":


В 2017 почему-то не срабатывает IUpdater, но в 2014-2016 работает нормально.
Больше информации - дальше в статье.


Поддерживаемые категории элементов: все загружаемые семейства, стены, перекрытия, помещения, трубы, воздуховоды.
Поддерживаемые типы параметров: текст, число, длина, площадь и т.д.; также должны работать любые другие параметры.
Список связей сохраняется в txt-файл рядом с файлом проекта. При открытии проекта приложение считывает этот файл автоматически. Также этот txt-файл может использоваться для пакетного добавления связей. Синтаксис строки файла:
ID исходного элемента;Имя исходного параметра;ID связанного элемента;Имя связанного параметра

При помощи кнопки "Show links" можно посмотреть связи, активные в данном документе:

LinkView - экспериментальная функция, при создании элементов передает в эти элементы информацию о виде, в котором они созданы (например, план в комплекте КЖ2, в создаваемые на этом плане стены сразу передается КЖ2). Тоже попробуйте.

Планируемые улучшения:
  • Конвертирование текст-число
  • Обработка события закрытия документа без сохранения (сейчас запись в txt-файле сохраняется, даже если документ закрыт без сохранения)
  • Считывание значений из параметров типа (сейчас только из параметров экземпляра)
  • Добавление связей для нескольких элементов одновременно
  • Добавление в базу информации о последнем значении параметра (чтобы скрипт не срабатывал, если значение параметра не изменилось);
  • Формулы для параметров
  • При добавлении связи - проверка, не связан ли данный параметр с другим элементом
  • Удаление ссылок при удалении элементов
Приложение распространяется абсолютно свободно, можете применять для любых целей. Если интересно - выложу исходники, оцените мой индусский код :)
Такие дела.

P.S. Если вылезает ошибка при запуске - возможно, Windows заблокировала стороннюю dll. Зайдите в свойства файла "TransferParameters.dll" и нажмите "Разблокировать", как на картинке:

19 комментариев:

  1. Отлично работает в 2015 версии. Спасибо!

    ОтветитьУдалить
  2. Прекрасная идея! Revit 2016 сборка 16.5.1144.0 20160525_1230(x64) Update5 for R2. Приложение не запускается.
    Revit cannot run the внешнее приложение "TransferParameters". System.IO.FileLoadException
    Could not load file or assembly file C:\ProgramData\Autodesk\Revit\Addins\2016\TransferParameters.dll or one of its dependencies. Operation is not supported. (Exception from HRESULT:0x80131515)
    В чём может быть проблема?

    ОтветитьУдалить
    Ответы
    1. Присоединяюсь. Та же ошибка ( Revit 2015 сборка 20140606_1530(x64)
      Update Release 3.

      Удалить
    2. версия 2105
      Сборка 20151007_1515(x64)
      Update Release 10
      та же проблема

      Удалить
    3. Вы неправильно закинули файлы. Нужно закидывать точно так, как они лежат в архиве. Addin-файл непосредственно в папку, dll и картинки - в папку TransferParameters.

      Удалить
    4. Странно. Но файлы закинул правильно. Не работает(

      Удалить
    5. Путь точно такой как на скриншоте
      https://www.dropbox.com/s/8wfndikucv4hll4/%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%202016-08-19%2016.27.13.png?dl=0

      Удалить
    6. Возможно Windows заблокировала DLL. Зайдите в свойства DLL и нажмите кнопку "Разблокировать".

      Удалить
    7. Александр, спасибо. Всё заработало

      Удалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. 2015 версия
    Сборка 20150303_1515(x64)
    Update Release 7
    Работает

    ОтветитьУдалить
  5. Ответы
    1. Сам писал расширение, любопытно как автор обошёл запрет на фоновую работу с API.

      Удалить
    2. Погуглите "revit api dynamic model updater".

      Удалить
    3. Странный вы. Что в гугл вбить я и сам знаю, если нет желание исходники показывать, так и не писали бы.

      Удалить
  6. АлександрЮ добрый день! Пока нет возможности впечататься результатами Ваших наработок, но сама задумка меня преследовала долго. Вопрос - откуда у Вас время для реализации всех задумок?
    Как сяду на неделе а новый объект, как поприменяю эту плюшку... Весь в предвкушении. Спасибо!

    ОтветитьУдалить
    Ответы
    1. Привет. Я занимаюсь этим вечерами и на выходных. Всяких спиногрызов и прочих семейных дел у меня нет, гулять и развлекаться никогда особо не любил. А программирование - моё хобби еще с детства, поэтому я занимаюсь этим в свободное время с удовольствием. То, что это помогает не только мне, но и еще многим людям - вдохновляет, как ничто другое.
      А у приложения уже есть новая версия - с пакетной передачей параметров и прочими плюшками. Следите за новостями!

      Удалить