Уникальный идентификатор модели Revit 2016-2018

Мы ищем способ различать модели Revit с разных компьютеров. Для моделей BIM360 и Revit Server мы можем использовать

document.GetWorksharingCentralModelPath().GetModelGUID()

Однако для локальных моделей и центральных моделей мы не можем получить какой-либо уникальный идентификатор для модели. Мы не можем установить параметр с GUID из-за того, что несколько пользователей начинают с модели Revit шаблона, поэтому копируют уникальный идентификатор и делают их неуникальными. Есть ли способ однозначно различить модель Revit с помощью Revit API?


person Jacob Scheib    schedule 23.03.2018    source источник
comment
возможно сочетание имени пользователя и центрального пути? Я не знаю какого-либо специального идентификатора, но у модели будет локальный путь, специфичный для пользователя, и центральный путь, который должен быть общим.   -  person konrad    schedule 24.03.2018


Ответы (2)


The Building Coder обсудил проблему создания собственного уникального идентификатора проекта и использования Именованное хранилище Guid для идентификации проекта.

person Jeremy Tammik    schedule 26.03.2018
comment
Спасибо за ваш ответ. GUID отлично возвращается, но, к сожалению, если я скопирую этот файл * .rvt из одного места в другое, GUID будет следовать за скопированным проектом. - person Jacob Scheib; 28.03.2018
comment
Да, конечно. если это вас беспокоит, вам придется реализовать что-то, что гарантирует, что имя, расположение и все, что есть в файле проекта, останется нетронутым и неповрежденным, независимо от того, что вам нужно, и выдает предупреждение и создает новый GUID, когда это не так. . как насчет использования ОС, чтобы гарантировать, что копирование файлов вообще станет невозможным? :-) - person Jeremy Tammik; 29.03.2018

на мой взгляд, копирование документа Revit НЕ должно приводить к новому ProjectId.

Кроме того, эти участники не дают хороших результатов:

Document.ProjectInformation.Id
Document.ProjectInformation.UniqueId

Приведенный выше вариант, предложенный The Building Coder, будет работать, если вы хотите запрограммировать какой-либо загрузчик. Затем вы создадите GUID и сохраните его в «невидимом хранилище» под названием ExtensibleStorage, которое может прочитать только ваша программа.

Самый простой способ:

ExportUtils.GetGBXMLDocumentId(Document);
person Matters    schedule 22.01.2019
comment
ExportUtils.GetGBXMLDocumentId стабильна? Какова его цель и есть ли причины не использовать его в качестве уникального идентификатора документа? - person bartzy; 02.02.2020