ADN Open CIS
Сообщество программистов Autodesk в СНГ

13/07/2014

Отслеживание изменения семейства

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

Вот один из подобных вопросов:

Вопрос: Меня все время спрашивают, как можно защитить мои семейства от изменения их пользователями.

Было бы очень неплохо, если я хотя бы смог определить, что в семейство были внесены некие изменения.

Например, значение некоторого параметра установить равным нулю, если семейство было скопировано или изменено.

В этом случае в своей надстройке я бы смог отфильтровать те семейства, в которых были сделаны изменения.

Ответ: Мне кажется в предложенном вами варианте могут быть подводные камни, например, как быть со вложенными параметрами и как отслеживать изменения в них.

Тем не менее в Revit 2015 API появилась одна полезная возможность, которая как раз связана с данной темой. Параметры «только для чтения». Эти параметры можно изменить программно, но их нельзя изменить в интерфейсе пользователя. Более подробную информацию смотрите в разделе Создание общих параметров – описание и изменения пользователями - shared parameter creation – description and user modifiability (на англ.)

И наконец, мне совершенно спонтанно пришла в голову идея:

  • Нужно придумать и реализовать некий метод для создания бинарного представления вашего семейства. Например, это может быть результат выполнения метода EditFamily. Затем сохраним этот результат в файл.
  • Вычислить контрольную сумму полученного бинарного представления
  • Сохранить контрольную сумму в параметр «только для чтения» или с помощью расширяемой области хранения. Возможно в зашифрованном виде.

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

Я надеюсь, что правильная реализация этого алгоритма позволит добиться желаемого результата.

Я буду очень признателен, если кто-нибудь предложит другие решения или реализацию предложенного алгоритма.

Источник: http://thebuildingcoder.typepad.com/blog/2014/07/ifc-guid-algorithm-update-and-family-modification.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=853

Опубликовано 13.07.2014
Отредактировано 13.07.2014 в 23:58:11