LoadFamily и ошибка перерисовки содержимого окна проекта

Автор Тема: LoadFamily и ошибка перерисовки содержимого окна проекта  (Прочитано 3155 раз)

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

Оффлайн talalaev_dАвтор темы

  • ADN OPEN
  • Сообщений: 10
  • Карма: 1
  • Skype: talalaev_d
Добрый день.
В процессе повторной загрузки отредактированных семейств обратно в проект выскакивает окно с ошибкой "Произошла ошибка при прорисовке содержимого окна..."
В качестве загрузки семейства в проект использую метод LoadFamily Method (Document, IFamilyLoadOptions)
Код - C# [Выбрать]
  1. IFamilyLoadOptions l_opt = new MyFamilyLoadOptions();
  2. ....
  3. UpdatedFam = famDoc.LoadFamily(_doc, l_opt);

В интерфейсе IFamilyLoadOptions произвёл переопределение:
Код - C# [Выбрать]
  1.  
  2. class MyFamilyLoadOptions : IFamilyLoadOptions
  3.     {
  4.              public bool OnFamilyFound(
  5.               bool familyInUse,
  6.               out bool overwriteParameterValues)
  7.             {
  8.             if (!familyInUse)
  9.             {
  10.                 overwriteParameterValues = true;
  11.                 return true;
  12.             }
  13.             else
  14.             {
  15.                 MessageBox.Show("The family is in use.");
  16.                 overwriteParameterValues = true;
  17.                 return true;
  18.             }
  19.         }
  20.  
  21.             public bool OnSharedFamilyFound(
  22.               Family sharedFamily,
  23.               bool familyInUse,
  24.               out FamilySource source,
  25.               out bool overwriteParameterValues)
  26.             {
  27.             if (!familyInUse)
  28.             {
  29.                 source = FamilySource.Family;
  30.                 overwriteParameterValues = true;
  31.                 return true;
  32.             }
  33.             else
  34.             {
  35.                 MessageBox.Show("The shared family is in use.");
  36.                 source = FamilySource.Family;
  37.                 overwriteParameterValues = true;
  38.                 return true;
  39.             }
  40.         }
  41. }
Добавил обработку familyInUse для понимания какие семейства используются в проекте, в моём случае как только количество этих семейств переваливает за число 6-7 то возникает вышеописанная ошибка с окном. Если выбрать другой вид то процедура доходит до конца (загрузка всех модифицированных семейств) и никаких проблем нет.
Кто сталкивался с такими странными глюками? Пробовал использовать RefreshActiveView() после каждого загруженного семейства - результата не дало, ошибка по прежнему выскакивает.
При чем интересно что на проекте с 30 семействами такая проблема вылезает, а в другом проекте с 50 семействами (хотя там familyInUse дает всего 4 семейства) - нет.
« Последнее редактирование: 16-06-2017, 17:55:50 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
talalaev_d
1. Пожалуйста придерживайтесь правил форматирования кода на нашем форуме (у меня в подписи)
2. Может это не проблема API, а самого Revit: https://knowledge.autodesk.com/ru/support/revit-products/troubleshooting/caas/sfdcarticles/sfdcarticles/RUS/An-error-has-occurred-while-drawing-the-contents-of-this-window.html ?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн talalaev_dАвтор темы

  • ADN OPEN
  • Сообщений: 10
  • Карма: 1
  • Skype: talalaev_d
Отключение аппаратного ускорения не помогло. Хотя иногда непонятные артефакты возникали (одинаково что с отключенной что со включенной опцией).
Да данный момент решил проблему (не уверен что правильно) закрытием всех видов кроме 3D по умолчанию, потому как только в таком случае загрузка большого числа семейств (все семейства категории аннотации) не приводит к появлению окна ошибки прорисовки.