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

28/08/2014

Версия документа и количество сохранений

Александр Бушман (Alexander Buschmann) из компании IDAT Ingenieurbüro für Datenverarbeitung in der Technik GmbH прокомментировал статью о том, как отследить изменение семейства:

В Revit 2015 есть класс DocumentVersion, в котором есть свойства GUID и количество сохранений файла.

Имея эту информацию можно определить, были ли сделаны изменения или нет.

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

DocumentVersion можно получить с помощью свойства BasicFileInfo.GetDocumentVersion.

Я не пробовал этот вариант, но не вижу причин чтобы он не работал.

CmdDocumentVersion

Основываясь на предложении Александра, я реализовал этот новую небольшую команду CmdDocumentVersion в примерах The Building Coder:

Код - C#: [Выделить]
  1.     [Transaction(TransactionMode.ReadOnly)]
  2.     class CmdDocumentVersion : IExternalCommand
  3.     {
  4.         public Result Execute(
  5.           ExternalCommandData revit,
  6.           ref string message,
  7.           ElementSet elements)
  8.         {
  9.             UIApplication uiapp = revit.Application;
  10.             UIDocument uidoc = uiapp.ActiveUIDocument;
  11.             Document doc = uidoc.Document;
  12.  
  13.             string path = doc.PathName;
  14.  
  15.             BasicFileInfo info = BasicFileInfo.Extract(
  16.               path);
  17.  
  18.             DocumentVersion v = info.GetDocumentVersion();
  19.  
  20.             int n = v.NumberOfSaves;
  21.  
  22.             TaskDialog.Show("DocumentVersion", string.Format(
  23.                 "Документ '{0}' содержит GUID {1} и был сохранен {2} раз.",
  24.                 path, v.VersionGUID, n));
  25.  
  26.             //Util.InfoMsg(string.Format(
  27.             // "Документ '{0}' содержит GUID {1} и был сохранен {2} раз.",
  28.             //  path, v.VersionGUID, n));
  29.  
  30.             return Result.Succeeded;
  31.         }
  32.     }

Выполнив команду на примере проекта архитектурной модели из поставки Revit получим вот такой результат:

 

Кстати еще один важный момент, заслуживающий внимания. BasicFileInfo теперь можно получить и для открытого в данный момент файла.

Спасибо Александу за совет.

Примеры The Building Coder и файлы проектов можно скачать из репозитория The Building Coder samples на GitHub

Версия примеров, обсуждаемых в статье – 2015.0.111.0

Источник: http://thebuildingcoder.typepad.com/blog/2014/08/document-version-guid-and-number-of-saves.html

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

Опубликовано 28.08.2014