Закрытие открытых проектов в Revit

Автор Тема: Закрытие открытых проектов в Revit  (Прочитано 19859 раз)

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

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Закрытие открытых проектов в Revit
« Ответ #15 : 17-03-2016, 10:26:52 »
Кстати, если бы ты пользовался поиском, то возможно нашёл и проверил бы такой вариант: http://thebuildingcoder.typepad.com/blog/2012/12/closing-the-active-document.html

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

Капелька бальзама на душу :)

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Закрытие открытых проектов в Revit
« Ответ #16 : 17-03-2016, 10:50:51 »
Кстати, если бы ты пользовался поиском, то возможно нашёл и проверил бы такой вариант: http://thebuildingcoder.typepad.com/blog/2012/12/closing-the-active-document.html

Беглое чтение этой статьи привело меня к выводу, что в данном примере обязательно должен использоваться сторонний макрос и файл проекта. Ну с файлом проекта еще как-то решить можно, а вот пихать каждому пользователю макрос в Revit, видится мне как не самый лучший вариант. Но за подсказку большое спасибо!

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: Закрытие открытых проектов в Revit
« Ответ #17 : 17-03-2016, 12:14:08 »
обязательно должен использоваться сторонний макрос и файл проекта
Макрос не обязательно. нет ничего такого в макросах, чего нельзя было бы добиться полноценной надстройкой. Макрос просто приведен в качестве примера. А так ничто не мешает вам поместить этот код в полноценную надстройку. Файл проекта да, обязателен, так как именно в этом и состоит суть: открыть какой то файл проекта, перейти на него, и закрыть нужный. Правда можно ведь просто создать новый файл проекта, а не открывать уже существующий.

Отмечено как Решение Пашин Евгений 17-03-2016, 14:44:24

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Закрытие открытых проектов в Revit
« Ответ #18 : 17-03-2016, 14:41:48 »
Окей, решение найдено, но оно «костыль»!!! Работает.

1. После того как проект изменен, нужно сначала закрыть все невидимые виды проекта

Код - vb.net [Выбрать]
  1.         Try
  2.             Dim myPC As RevitCommandId = RevitCommandId.LookupPostableCommandId(PostableCommand.CloseHiddenWindows)
  3.             App.PostCommand(myPC)
  4.         Catch ex As Exception
  5.             MsgBox(ex.Message)
  6.         End Try

2. Обязательно сохранить проект

Код - vb.net [Выбрать]
  1.         Dim App As Autodesk.Revit.UI.UIApplication = myCD.Application()
  2.         Dim UIDoc As UIDocument = App.ActiveUIDocument
  3.         Dim Doc As Document = App.ActiveUIDocument.Document
  4.  
  5.         Doc.Save()

3. Запускаем приложение, которое закрывает текущий проект. Андрей Калашников написал приложение, которое отсылает сочетание клавиш в окно Revit (на AutoIT-е). За это ему огромное спасибо!!!

Код - vb.net [Выбрать]
  1. Process.Start("C:\Users\Pashin.Evgeniy\Desktop\project_closer.exe")

4. Модуль должен работать не через модальное окно, а через кнопку на ленте (или после закрытия модального окна).

Имеется исходный код AutoIT-а:



Приложение для закрытия текущего проекта - во вложении.


А вот результат работы модуля в купе с приложением


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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Закрытие открытых проектов в Revit
« Ответ #19 : 17-03-2016, 14:49:25 »
Макрос не обязательно. нет ничего такого в макросах, чего нельзя было бы добиться полноценной надстройкой. Макрос просто приведен в качестве примера. А так ничто не мешает вам поместить этот код в полноценную надстройку. Файл проекта да, обязателен, так как именно в этом и состоит суть: открыть какой то файл проекта, перейти на него, и закрыть нужный. Правда можно ведь просто создать новый файл проекта, а не открывать уже существующий.

У меня не получилось данный пример запустить (закрыть проект и создать другой), поэтому сделал по-другому!

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

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Закрытие открытых проектов в Revit
« Ответ #20 : 06-04-2016, 07:12:32 »
Забыл выложить решение по закрытию открытых проектов без стороннего приложения, если кому будет интересно:

Код - vb.net [Выбрать]
  1.         ' Пытаемся закрыть неактивные документы
  2.         Dim App As Autodesk.Revit.UI.UIApplication = myCD.Application()
  3.         Dim UIDoc As UIDocument = App.ActiveUIDocument
  4.         Dim Doc As Document = App.ActiveUIDocument.Document
  5.  
  6.         ' Получение списка открытых документов
  7.         Dim myDocSet As DocumentSet = Doc.Application.Documents
  8.  
  9.         For Each mydocset_Single As Document In myDocSet
  10.             Try
  11.                 Dim myNewDS As DocumentSet = Doc.Application.Documents
  12.                 If myNewDS.Size > 1 Then
  13.                     mydocset_Single.Close()
  14.                 End If
  15.             Catch ex As Exception
  16.             End Try
  17.         Next