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

ADN Club => Revit API => Тема начата: talalaev_d от 16-06-2017, 15:59:57

Название: LoadFamily и ошибка перерисовки содержимого окна проекта
Отправлено: talalaev_d от 16-06-2017, 15:59:57
Добрый день.
В процессе повторной загрузки отредактированных семейств обратно в проект выскакивает окно с ошибкой "Произошла ошибка при прорисовке содержимого окна..."
В качестве загрузки семейства в проект использую метод 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 семейства) - нет.
Название: Re: LoadFamily и ошибка перерисовки содержимого окна проекта
Отправлено: Александр Ривилис от 16-06-2017, 17:58:39
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 ?
Название: Re: LoadFamily и ошибка перерисовки содержимого окна проекта
Отправлено: talalaev_d от 17-06-2017, 11:40:54
Отключение аппаратного ускорения не помогло. Хотя иногда непонятные артефакты возникали (одинаково что с отключенной что со включенной опцией).
Да данный момент решил проблему (не уверен что правильно) закрытием всех видов кроме 3D по умолчанию, потому как только в таком случае загрузка большого числа семейств (все семейства категории аннотации) не приводит к появлению окна ошибки прорисовки.