Как получить список всех открытых проектов?

Автор Тема: Как получить список всех открытых проектов?  (Прочитано 8875 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Добрый день, коллеги!

Подскажите как получить список всех открытых проектов в Revit?

Или подсказку на какой-нибудь ресурс )

Отмечено как Решение Пашин Евгений 17-03-2016, 09:34:42

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Код - C# [Выбрать]
  1. Application.Documents

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Application.Documents

Александр, спасибо!!!
Не удивлен, что это должно быть просто )))

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Application.Documents
Небольшое дополнение. Свойство возвратит не только открытые, но и связанные файлы, так как Revit их все равно загружает.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Небольшое дополнение. Свойство возвратит не только открытые, но и связанные файлы, так как Revit их все равно загружает.

А есть другая лазеечка? Просто следующей задачей будет переключение на неактивный документ и закрытие предыдущего... А я бы не хотел словить Fatal при переключении.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Тут на форуме где-то мелькала тема получения связанных файлов документа.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Код - C# [Выбрать]
  1.     public static class DocumentExtensions
  2.     {
  3.         public static IEnumerable<Document> GetLinkedDocuments(this Document document)
  4.         {
  5.             var linkedfiles = GetLinkedFileReferences(document);
  6.  
  7.             var linkedFileNames = linkedfiles
  8.                 .Select(x => ModelPathUtils.ConvertModelPathToUserVisiblePath(x.GetAbsolutePath()))
  9.                 .ToList();
  10.  
  11.             return document.Application.Documents
  12.                 .Cast<Document>()
  13.                 .Where(doc => linkedFileNames
  14.                     .Any(fileName => doc.PathName.Equals(fileName)));
  15.         }
  16.  
  17.         public static IEnumerable<RevitLinkInstance> GetRevitLinkInstances(this Document document)
  18.         {
  19.             var collector = new FilteredElementCollector(document);
  20.  
  21.             var linkInstances = collector.WherePasses(RevitLinkInstanceExtensions.GetDocumentRevitLinksInstancesFilter());
  22.  
  23.             return linkInstances
  24.                 .OfType<RevitLinkInstance>();
  25.         }
  26.  
  27.         private static IEnumerable<ExternalFileReference> GetLinkedFileReferences(Document document)
  28.         {
  29.             var collector = new FilteredElementCollector(document);
  30.             var linkedElements = collector
  31.                 .OfClass(typeof(RevitLinkType))
  32.                 .Where(x => RevitLinkType.IsLoaded(document, x.Id))
  33.                 .Select(x => x.GetExternalFileReference())
  34.                 .ToList();
  35.  
  36.             return linkedElements;
  37.         }
  38.     }
  39.  

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Тут на форуме где-то мелькала тема получения связанных файлов документа.
Так речь то не об этом, а о том, как понять, можно ли активировать документ или нет. Евгению нужно активировать любой документ, чтобы закрыть предыдущий, но можно получить ошибку, при попытке активирования.
А есть другая лазеечка? Просто следующей задачей будет переключение на неактивный документ и закрытие предыдущего...
Думаю нужно просто правильно определить, можно ли активировать документ или нет.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Думаю нужно просто правильно определить, можно ли активировать документ или нет.
Беглый взгляд на методы API уловил свойство Document.IsLinked. Есть предположение, что если значение равно true, то переключиться нельзя.

Оффлайн Пашин ЕвгенийАвтор темы

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Беглый взгляд на методы API уловил свойство Document.IsLinked. Есть предположение, что если значение равно true, то переключиться нельзя.

Шикарно, если так )