Обновление вида профиля (областей данных)

Автор Тема: Обновление вида профиля (областей данных)  (Прочитано 353 раз)

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

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 359
  • Карма: 56
  • Skype: vildar82
Привет,
Странное поведение вида профиля наблюдается  ::)
Добавляю профиль по поверхности.
При этом вид профиля не считывает данные с нового профиля - пока не зайти в свойства вида профиля.
Как обновить вид профиля?
Реген не помогает.
Пробовал RecordGraphicsModified у вида профиля вызвать - нифига.

1 картинка - профиль добавлен - но вид профиля не реагирует на это.
2 - захожу в свойства вида профиля и нажимаю отмену
3 - данные с профиля обновляются





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

  • Administrator
  • *****
  • Сообщений: 11009
  • Карма: 1396
  • Рыцарь ObjectARX
  • Skype: rivilis
Ну если подготовишь:
1. dwg-файл с нужной информацией
2. Тестовый проект в zip-архиве, показывающий что ты делаешь.
то я отправлю вопрос в ADN DevHelp
3. Sreencast видео того, как это у тебя работает и про необходимость обновить свойства.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Вильдар 26-03-2020, 08:27:33

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2252
  • Карма: 612
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Была похожая ситуация, когда менялись оси сечений по трассе (передвигались/добавлялись/удалялись). А подпрофильная таблица, которая брала данные из этих осей, не реагировала на эти изменения. Причём, это не особенность API была, а внутреннее поведение Civil 3D. То есть, проблема наблюдалась при пользовательском редактировании стандартными инструментами.
Я её решал стандартным для сивила способом - "подёргать" объект туда-сюда, чтобы он запустил свои механизмы обновления.
Код - C# [Выбрать]
  1. /// <summary>
  2. /// Обновление вида профиля
  3. /// </summary>
  4. /// <param name="pView">Вид профиля</param>        
  5. [Obsolete("Used only for pviews with sample lines data")]
  6. public static void Update(this ProfileView pView)
  7. {
  8.     // "Подергаем" вид профиля
  9.     ElevationRangeType startElevMode = pView.ElevationRangeMode;
  10.     double startMinElev = pView.ElevationMin, startMaxElev = pView.ElevationMax;
  11.  
  12.     pView.ElevationRangeMode = ElevationRangeType.UserSpecified;
  13.     pView.ElevationMax += 1;
  14.  
  15.     pView.ElevationMax = startMaxElev;
  16.     pView.ElevationMin = startMinElev;
  17.     pView.ElevationRangeMode = startElevMode;
  18.  
  19.     // "Подергаем" область данных
  20.     ProfileViewBandItemCollection pViewBandItems = pView.Bands.GetBottomBandItems();
  21.     pView.Bands.SetBottomBandItems(pViewBandItems);
  22.  
  23.     // "Подергаем" стиль вида профиля
  24.     using (ProfileViewStyle pViewStyle
  25.         = pView.StyleId.SafeOpen<ProfileViewStyle>(OpenMode.ForWrite))
  26.     {
  27.         bool oldClipGrid = pViewStyle.GridStyle.VerticalGridOptions.UseClipGrid;
  28.         pViewStyle.GridStyle.VerticalGridOptions.UseClipGrid = !oldClipGrid;
  29.         pViewStyle.GridStyle.VerticalGridOptions.UseClipGrid = oldClipGrid;
  30.     }
  31. }
  32.  

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 359
  • Карма: 56
  • Skype: vildar82
Дмитрий Загорулькин, спасибо, попробую)