пятница, 17 января 2020 г.

[Revit API] - UniqueId в зазеркалье

    Согласно документации Revit API для хранения информации об элементах во внешних хранилищах данных рекомендуется использовать UniqueId.
Это надёжно, UniqueId остаётся неизменным в пределах модели в отличие от ElementId. 

Однако UniqueId всё же может меняться в процессе работы в модели при казалось бы безобидной операции  - "Зеркало".

Выберите какой-нибудь элемент, запишите его UniqueId и ElementId:
Я выбрал балку, вот её свойства:


Затем примените команду "Зеркало". 
Перед заданием оси симметрии убираем галочку "Копировать" в панели параметров.



UniqueId и ElementId элемента изменились после выполнения команды:


На мой взгляд это явная недоработка, я не обнаружил описания такого поведения в документации. Рекомендаций для разрешения этой проблемы я не даю, зависит от конкретной задачи. Учитывайте эту особенность при разработке плагинов, где предполагается обновление элементов в пределах модели, либо работа с внешними источниками данных.

Успехов!