Как восстановить файл ревит

Обновлено: 07.07.2024

Каждый пользователь Revit сталкивался с ситуацией аварийного завершения работы и потери данных. Да, Revit иногда «вылетает», не всегда предлагает создать файл восстановления… А ведь так обидно терять время и проделанную работу!

В то же время, даже в AutoCAD есть функция автосохранения, многие привыкли к ней и очень огорчаются, узнав, что в Revit настроить автосохранение невозможно!

Это вдохновило нас на создание приложения «R AutoSave» – автосохранения для Revit!


Основная задача R AutoSave – свести к минимуму потерю данных.

Вам достаточно просто установить R AutoSave, настроить интервал автосохранения и всё!


Как это работает?

Например, вы указали интервал сохранения 5 минут. Это значит, что каждые 5 минут будет происходить автоматическое сохранение проекта в специальный файл автоматического сохранения (.AS$), полностью без вашего участия.

Вы по-прежнему можете произвести «ручное» сохранение файла (команда «Сохранить») тогда, когда вам будет необходимо.

Файлы резервных копий, созданные во время «ручных» сохранений (файлы вида «Имя проекта.001.rvt»), по умолчанию будут храниться в папке «Backup» в директории с проектом.

Да-да, теперь в папках ваших проектов будет полный порядок!


Итак, Revit «вылетел»… или «завис» компьютер, отключили свет… в общем, произошло аварийное завершения работы. Что делать?

Запустите Revit, а потом откройте нужный файл. Появится диалоговое окно с вариантами восстановления файла и временем сохранения. Выберите желаемый вариант, и вы восстановите нужный файл.


А если я открыл файл, просто чтобы посмотреть? Я смогу закрыть его без сохранения?

Начало автосохранения отсчитывается с момента внесения первых изменений в проекте. Если вы ничего не меняете в файле, а просто открываете виды – автосохранение не начнется (сохранять-то нечего).

Но даже если вы поработали, а потом решили закрыть файл, не сохраняя внесённых изменений – просто сделайте это, как обычно. Изменения (включая все автоматические сохранения) не будут сохранены, сохранятся только стандартные «ручные» сохранения.

Какие файлы сохраняет R AutoSave?

  • Файлы проектов (RVT)
  • Файлы локальных копий центрального хранилища (RVT)
  • Файлы семейств (RFA)
  • Файлы шаблонов проектов (RTE)

Что это за файлы: «.AS$» и «.S$$»?

Файл «.AS$» - это копия файла, созданная в момент автосохранения.

Файл «.S$$» - это копия файла, созданная в момент открытия файла либо «ручного» сохранения файла.

Оба этих файла позволяют выполнять как автосохранение, так и закрытие без сохранения либо восстановление файла после аварийного завершения работы.

Как включить / выключить R AutoSave?

После установки приложения R AutoSave функция автоматического сохранения включается по умолчанию.

Для включения или отключения автоматического сохранения, а также для изменения дополнительных параметров необходимо перейти на панель «Параметры» («R» - «Параметры» или «Файл» - «Параметры») к разделу «Автосохранение».

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


Какие еще настройки есть у R AutoSave?

Автоматическое сохранение выполняется через заданный интервал времени. Вы можете выбрать интервал автосохранения от 5 минут до 1 часа.

Начало автосохранения отсчитывается с момента внесения первых изменений в проекте.

Если во время работы вы выполняете «ручное» сохранение файла (команда «Сохранить»), оригинальный проект перезаписывается и создаются резервные копии (файлы типа «Имя проекта.0001.rvt») - это стандартный принцип работы Revit.Файлы резервных копий будут храниться в папке Backup или другой, указанной пользователем.

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

Сохранять в папке открытого проекта / Расположение папки для резервных копий.

Если вы включите опцию «Сохранять в папке открытого проекта» (включена по умолчанию), резервные копии будут храниться в папке «Backup» в директории файла Revit.

При желании, место хранения файлов резервных копий можно заменить на другую, централизованную папку (для всех проектов и семейств Revit). Для активации поля «Расположение папки для резервных копий» нужно отключить параметр «Сохранять в папке открытого проекта».

Напоминание для несохранённых файлов

Если файл не был ни разу сохранён (вновь созданный проект или семейство, открытое из проекта для редактирования), то автосохранение для него не работает. Мы добавили напоминание для таких файлов. Если оно вам надоест, просто отключите функцию «Напоминание для несохранённых файлов».

Элемент 296017 оказался поврежден перед текущим сеансом. К тому же rvt-файл вылетает при попытке выбора по коду элемента, который поврежден. Такой rvt-файл еще можно спасти, если у вас есть копия проекта в котором тот же элемент еще не поврежден.

На прошлой недели в детском саду попросили принести фотографию ребенка на спортивную тему. Но я не принес эту фотографию, поэтому опубликую ее здесь.

Элемент 156321 оказался поврежден перед текущим сеансом

А занят я был восстановлением файла .rvt в котором разместился поврежденный элемент Id 296017.

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


Иногда вылеты происходили при синхронизации с файлом хранилищем, и локальный файл больше не открывался в Ревите. Приложение "Удалить элемент по Id" не могло удалить поврежденный элемент, который приводил к вылету Ревита, при попытке его выбрать.

Открывалась совершенно мрачная перспектива откатываться на месяц назад, когда была сделана ручная копия проекта.

Ручная копия и помогла спасти проект. Совершенно случайно оказалось, что ручная копия проекта содержит тот же элемент Id 296017, когда он еще не был поврежден. Спасательные действия выглядели так:

  • В одном сеансе открыл локальный файл проекта и ручную копию проекта.
  • Из ручного копии скопировал еще не битый элемент Id 296017 в проект, записал его новый код, к примеру здесь он пусть будет ID 750489.
  • Внезапно я смог выбрать поврежденный элемент Id 750458 и Ревит не вылетел! Значит я смогу его удалить!
  • Удалил приложением "Удалить элемент по Id" элемент Id 296017 в проекте. Проверил инструментом "Код выбора" проект на наличие в нем элемента Id 296017. Ура, его больше нет!
  • Удалил ID 750489 приложением "Удалить элемент по Id" и снова проверил его наличие в проекте. Ни Id 296017, ни ID 750489 не оказалось больше в проекте.
  • Сохранил чистый локальный файл как файл хранилище.

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

UPD: Скачайте мои приложения по ссылке в статье про приложение - "Выбрать элементы фильтра" и тогда будут доступны все мои бесплатные приложения - "Выбрать элементы фильтра", "Удалить элемент по Id", "Печать по форматам".

Приложение Удалить элемент по Id, что бы спасти RVT файл с поврежденным элементом

Поддержите мои бесплатные приложения для Revit. Нажмайте "Нравится"!

Узнавайте о новых расширениях для Revit подписавшись на страницу BIM3D в Твиттере!

Извините за предствленные неудобства. Всплывающее окно больше не побеспокоит Вас!

Восстановление файлов формата RVT

Проект архитектурного проектирования, созданный с помощью Revit, программы моделирования информации о зданиях (BIM); включает в себя 3D-дизайн здания, который может содержать планы этажей, высоты, секции, которые можно просмотреть «на лету» как полностью рендеринга 3D-сцены; также включает настройки проекта и соответствующие данные.

Как восстановить утерянные .RVT файлы?

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

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

Используйте программы для восстановления .RVT файлов после намеренного или случайного удаления, форматирования памяти устройства или карты памяти, заражения вирусом, сбоя или очистки памяти.

Программы для восстановления файлов

Ищете как восстановить ?

В случаях, когда файлы удалены и стандартными средствами системы их восстановить уже не предоставляется возможным, используйте Hetman Partition Recovery.

1. Загрузите, установите и запустите программу.

2. Программа автоматически просканирует компьютер и отобразит все подключенные к нему жесткие диски и съёмные носители информации, физические и локальные диски.

Программа для восстановления файлов

3. Дважды кликните на диске, файлы из которого необходимо восстановить, и выберите тип анализа.

Hetman Partition Recovery - тип анализа

4. После окончания процесса сканирования вам будут предоставлены файлы для восстановления.

Hetman Partition Recovery - файлы, которые возможно восстановить

5. Чтобы найти нужный перейдите в интерфейсе программы в папку из которой он был удалён. Или перейдите в папку «Глубокий анализ» и выберите искомый тип файла.

Hetman Partition Recovery - Глубокий анализ

6. Выделите нужные файлы и нажмите кнопку «Восстановить».

Программа для восстановления данных - список восстановления

7. Выберите один из предложенных способов сохранения файлов и восстановите их.


В Autodesk Revit существует функция записи всех действий пользователя в текстовый файл — журнал, который используется разработчиками в основном для выявления причин сбоя приложения. Самое интересное, что действия можно воспроизвести путем перетаскивания файла на значок Revit. Это позволяет восстановить часть работы после «вылета» Revit или же сэкономить время на некоторых часто повторяемых действиях. К примеру, рассмотрим случай создания нового проекта для коллективной работы на основе требуемого Шаблона (Template). Напомню, что для этого необходимо будет создать Рабочие наборы (Worksets), которые позволяют назначить Владельца (Owner) и Заемщика(Borrower) совокупности пользовательских элементов, семейств, видов и настроек. На первый взгляд процедура не сложная, но отнимающая время и требующая внимания.

Запись

С начала запустим Autodesk Revit и создадим новый проект, с обязательным выбором Шаблона проекта (Template) из библиотеки для получения его пути и наименования. Далее приступим к созданию Рабочих наборов (Worksets) и сначала введем наименования основного набора для Уровней (Levels) и Осей (Grids), а также для всех остальных элементов проекта, например, Местности (Site). Соответственно составляю наименования согласно своему классификатору данных, в котором все элементы Разбивки (Layouts) имеют код 000 00240, а Местности (Site) – 100 00000. Естественно можете ввести любые понятные Вам значения. Далее добавляю Рабочие наборы (Worksets), которые могут понадобиться для распределения элементов Концепции (Massing), Конструкций (Structure), Архитектуры (Architecture), Технологии (Technology), Инженерии (Services) и т.п. Таким образом каждый проектировщик будет работать в наборе, соответствующий его разделу. Спросите – а как же быть в случае работы нескольких архитекторов? Ведь Revit не позволяет одновременно назначать нескольких владельцев одному набору, в то время как другие участники проекта смогут свободно занимать их элементы. Как вариант можно создать дополнительные архитектурные наборы для более детального распределения элементов, например, Стены (Walls), Полы (Floors), Потолки (Ceilings), Проемы (Openings) и т.п., а можно разделить проект на отдельные модели и связать их между собой наложенными ссылками. Что лучше? Собственно, это тема следующих публикаций, а пока выберем Активный рабочий набор (Active Workset), установим Подавление графики неактивных наборов (Gray Inactive Workset Graphics) и завершим их создание. Далее можем еще раз открыть диалог наборов для проверки результата и закрыть Revit. Запись журнала – завершена.

Редактирование

Для просмотра полученного журнала действий перейдем по следующему пути:

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

Далее открываем файл журнала для редактирования в Блокноте (Notepad). Несмотря на то, что было с два десятка действий, строк записей значительно больше, но это обстоятельство не должно Вас пугать, так как большинство из них – это комментарии помеченные символом апострофа в начале и не представляющие для нас никакой ценности. Соответственно по ходу редактирования все они удаляются, кроме комментариев в 3-4 строках, которые содержат информацию о сборке Revit и без которых выполнение может не произойти. К сожалению, официально журналы не поддерживаются и в справочной документации нет по ним описания, а также их синтаксис может изменяться от версии к версии, как и отличается в зависимости от локализации. Раз упомянул о синтаксисе, обратим внимание на следующие строки, в которых объявляется переменная Jrn в формате vbScript с последующим присвоением ей команд выполнения скриптов:

Таким образом все необходимые нам строки будут начинаться с Jrn и очень вероятно в журнале можно будет воспользоваться преимуществами скриптового программирования с целью оптимизации. Приступим к поиску строчки с командой Создания нового проекта на основе шаблона. Придется пролистать половину журнала, внимательно просмотреть множество строчек комментариев, в которых отображается информация о Revit, ходе его загрузки и всех связанных с ним библиотек, компонентов и надстроек, доступности памяти, а также пропустить команды назначения всяческих переменных и т.п., пока не найдем строчку Открытия главного меню приложения:

  • Jrn.AppButtonEvent 1 , “Application Menu is opening”

Теперь все лишнее можно смело удалить. Спустя несколько комментариев следует команда Закрытия главного меню приложения и сразу же искомая команда Создание нового проекта:

Вот как раз с этого места и начинаются исполняемые команды и следует быть очень осторожным, чтобы в ходе редактирования не удалить и не повредить нужные строки. Естественно комментарии между командами удаляем, а также можем удалить переносы строк исполняемых команд, которые обозначаются в конце символом нижнего подчеркивания. Обратите внимание на команды выбора шаблона проекта:

  • Jrn.PushButton «Modal , New Project , Dialog_Revit_NewProject» _
    , «Browse…, Control_Revit_BrowseTemplateName»
  • Jrn.Data «FileDialog» _
    , «IDOK» , «L:\01 Libraries\Autodesk\Revit\2016\ASK\ASK 000 00000 General.rte», «rte» _
    , «ASK 000 00000 General.rte», «ASK 000 00000 General.rte»
  • Jrn.Data «FileType» , «Template Files (*.rte)»

В них указаны значения пути и имени файла Шаблона проекта (Project Template), которые можно будет заменить, что позволит создавать Рабочие наборы (Worksets) на основе любых шаблонов. После команды подтверждения Создания нового проекта:

  • Jrn.PushButton «Modal , New Project , Dialog_Revit_NewProject» , «OK, IDOK»

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

В нем указываем наименования наборов для хранения элементов Уровней (Levels) и Осей (Grids), а также Остальных (Others) элементов. После нажатия подтверждения создания, снова последует много комментариев, после которых важно не пропусти команду завершения Транзакции (Transaction). Что она собой представляет? Это фактическое завершение режима ожидания значений для переменных с передачей их следующим процессам в случае подтверждения или же возврат предыдущих значений в случае отмены.

Далее последуют команды создания дополнительных рабочих наборов:

  • Jrn.PushButton «Modal , Worksets , Dialog_Revit_Partitions» , «New, Control_Revit_New»
  • Jrn.Edit «Modal , New Workset , Dialog_Revit_NewPartition» _
    , «Control_Revit_NewPartitionName» , «ReplaceContents» , «200 00000 Massing»
  • Jrn.PushButton «Modal , New Workset , Dialog_Revit_NewPartition» , «OK, IDOK»

Как видно со скрипта, на создания каждого набора требуется три строки – нажатие кнопки Нового набора, введение значения его имени и подтверждение, при этом завершение Транзакции (Transaction) после каждого создания – не требуется. Разница в строках заключается только в наименовании Наборов, и чтобы не терять время на долгое форматирование строк и удаление комментариев, достаточно скопировать уже готовые три строки команд и указать только требуемые имена, а нижеследующие строки – удалить. Итого получаем:

  • Jrn.PushButton «Modal , Worksets , Dialog_Revit_Partitions» , «New, Control_Revit_New»
  • Jrn.Edit «Modal , New Workset , Dialog_Revit_NewPartition» _
    , «Control_Revit_NewPartitionName» , «ReplaceContents» , «300 00000 Structure»
  • Jrn.PushButton «Modal , New Workset , Dialog_Revit_NewPartition» , «OK, IDOK»
  • Jrn.PushButton «Modal , Worksets , Dialog_Revit_Partitions» , «New, Control_Revit_New»
  • Jrn.Edit «Modal , New Workset , Dialog_Revit_NewPartition» _
    , «Control_Revit_NewPartitionName» , «ReplaceContents» , «400 00000 Architecture»
  • Jrn.PushButton «Modal , New Workset , Dialog_Revit_NewPartition» , «OK, IDOK»
  • Jrn.PushButton «Modal , Worksets , Dialog_Revit_Partitions» , «New, Control_Revit_New»
  • Jrn.Edit «Modal , New Workset , Dialog_Revit_NewPartition» _
    , «Control_Revit_NewPartitionName» , «ReplaceContents» , «500 00000 Technology»
  • Jrn.PushButton «Modal , New Workset , Dialog_Revit_NewPartition» , «OK, IDOK
  • Jrn.PushButton «Modal , Worksets , Dialog_Revit_Partitions» , «New, Control_Revit_New»
  • Jrn.Edit «Modal , New Workset , Dialog_Revit_NewPartition» _
    , «Control_Revit_NewPartitionName» , «ReplaceContents» , «600 00000 Services»
  • Jrn.PushButton «Modal , New Workset , Dialog_Revit_NewPartition» , «OK, IDOK

Вероятно, что можно будет оптимизировать строки Создания наборов, путем применения цикла и массива значений наборов. Остается всего несколько команд до завершения редактирования – это Сортировка наборов по имени, выбор Активного набора (Active Workset) и установка Подавления графики неактивных наборов (Gray Inactive Workset Graphics).

Обратите внимание, что команда выбора активного набора (Active Workset) дублируется с различными операторами «SelEndOk» и «Select», соответственно одна из них может быть лишней, в чем убедимся позже. После закрытия диалога Рабочих наборов (Worksets), обязательно должна следовать команда успешного завершения Транзакции (Transaction) для подтверждения действий:

  • Jrn.PushButton «Modal , Worksets , Dialog_Revit_Partitions» , «OK, IDOK»
  • Jrn.Data «Transaction Successful» , «Worksets»

В заключении работы скрипта, осуществляется повторное открытие диалога Рабочих наборов (Worksets) для проверки результата:

Оставшиеся строки закрытия проекта без сохранения и все комментарии – можно смело удалить, а также закомментировать лишнюю строку выбора активного набора, например, с оператором «SelEndOk». Все, сохраняем журнал и приступаем к проверке его работоспособности.

Выполнение

Перейдем Проводник в месторасположение файла нашего журнала и перетащим его на значок Autodesk Revit на Рабочем столе. Как результат, будет запущенно приложение и выполнение команд создания Рабочих наборов (Worksets). В случае возникновения неполадок, появится окно Ошибки журнала (Journal Error) с предложением перейти в Интерактивный режим (Enter interactive mode). Соответственно закрываем Revit без сохранения, возвращаемся в Проводник и открываем новый файл журнала, например, journal.0001.txt, который появился в ходе выполнения нашего в той же директории. В нем будет запись всех действий в ходе выполнения журнала до момента сбоя, потому листаем почти в самый конец, ищем строку с комментарием причины ошибки и ссылки на строку ее расположения, например:

  • ‘ 1:< Execution did not correspond to recorded journal sequence.
  • ‘ At line number 31 of source journal.

В данном случае сообщается, что выполнение не соответствует требуемой последовательности. Открываем наш журнал для редактирования, находим в нем сроку 31 и способом «научного тыка» устраняем причину ошибки, в моем случае отсутствует третья строка подтверждения создания рабочего набора «600 00000 Services». Вновь сохраняем файл журнала, но прежде чем его воспроизвести, попробуем немного оптимизировать.

Оптимизация

В ходе редактирования упоминал, что журналы Autodesk Revit записываются формате vbScript, соответственно можно произвести его оптимизацию. Начнем из создания переменных Наименования и Расположения Шаблона проекта (Project Template) для создания Рабочих наборов (Worksets). Для этого после строк объявления и назначения переменной Jrn, запишем свои:

  • Dim askFileName
  • askFileName = «ASK 000 00000 General.rte»
  • Dim askFileLocation
  • askFileLocation = «L:\01 Libraries\Autodesk\Revit\2016\ASK\»

Так как в скрипте требуются отдельные значения имени Шаблона проекта и его Полного пути, создадим переменную askFilePath составляемую из значений askFileLocation и askFileName:

  • Dim askFilePath
  • askFilePath = askFileLocation & askFileName

Очень советую перед подстановкой переменных в соответствующую строку команды, сделать ее исходную копию и закомментировать на всякий случай:

  • ‘ Jrn.Data «FileDialog» _
    , «IDOK» , «L:\01 Libraries\Autodesk\Revit\2016\ASK\ASK 000 00000 General.rte», «rte» _
    , «ASK 000 00000 General.rte», «ASK 000 00000 General.rte»
  • Jrn.Data «FileDialog» , «IDOK», askFilePath, «rte» , askFileName, askFileName

Перед сохранением можем еще закомментировать строки Открытия и Закрытия главного меню для проверки их полезности. Если все сделали правильно, выполнение журнала должно пройти без ошибок и можно попробовать применить функцию vbScript, например, Массив (Array) с целью хранения всех наименований Рабочих наборов (Worksets) в одной строке. Для начала сделаем поиск в сети Интернет доступной справочной документации по vbScript, лично советую Language Reference на сайте MSDN (Microsoft Developer Network). В разделе Функции (Functions) найдем информацию по Массиву (Array), скопируем пример кода и вставим в журнал после строк предыдущих переменных. Впишем название переменной askWorksetArray, которой после присвоим функцию Массива (Array) со значениями наименований всех Рабочих наборов (Worksets):

  • Dim askWorksetArray
  • askWorksetArray = Array(«000 00240 Layout»,»100 00000 Site»,»200 00000 Massing» _
    ,»300 00000 Structure»,»400 00000 Architecture»,»500 00000 Technology» _
    ,»600 00000 Services»)

Далее сделаем замену значений наименований наборов во всех строках журнала, где они используются на переменную askWorksetArray(n) с указанием в скобках позиции соответствующего значения в массиве, начиная с нуля. Например:

Прежде чем запустим журнал, избавимся от лишних закомментированных ранее строк, а также добавим несколько своих комментариев для ясности и улучшения читаемости. Сохраняем и выполняем журнал, в случае успеха – продолжаем оптимизацию, в ином случае – смотрим свежие журналы на предмет информации об ошибках и устраняем их. Попробуем применить цикл For…Next для возможности создания любого количества наборов из массива, но пока не менее трех. Для этого потребует функция определения длинны массива uBound() и переменная для ее хранения:

  • Dim askWorksetCount
  • askWorksetCount = uBound(askWorksetArray)
  • For i = 0 to askWorksetCount — 2
  • Jrn.PushButton «Modal , Worksets , Dialog_Revit_Partitions» , «New, Control_Revit_New»
  • Jrn.Edit «Modal , New Workset , Dialog_Revit_NewPartition» _
    , «Control_Revit_NewPartitionName» , «ReplaceContents» , askWorksetArray(i +2)
  • Jrn.PushButton «Modal , New Workset , Dialog_Revit_NewPartition» , «OK, IDOK»
  • Next

Естественно можно сразу начать цикл со второй позиции и не заниматься дополнительными вычислениями:

Сохраняем и проверяем работоспособность оптимизации циклом путем выполнения журнала. После можем попробовать добавить несколько новых Рабочих наборов (Worksets) к переменной askWorksetArray, сохранить и вновь запустить журнал.

Заключение

Таким образом мы получили простейшую автоматизацию по созданию наборов в новых проектах, которую можно еще оптимизировать условиями If…Else для создания уже минимум двух Рабочих наборов (Worksets) вместо трех, процедурами Sub с целью вынесения повторяемых действий за пределы основного кода для удобства их редактирования. Также журнал можно дополнить командами загрузки требуемых семейств, осуществления настроек и создания видов, что позволит использовать его еще более эффективно.

Читайте также: