Профили из вида профиля

Автор Тема: Профили из вида профиля  (Прочитано 6956 раз)

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

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 382
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Профили из вида профиля
« : 18-08-2016, 09:16:40 »
Существует ли какая-нибудь связь между объектами Profile и ProfileView? Как, имея ProfileView, получить все Profile, отрисованные на нем?

Отмечено как Решение Алексей Терно 18-08-2016, 11:09:45

Оффлайн German

  • ADN Club
  • **
  • Сообщений: 84
  • Карма: 13
Re: Профили из вида профиля
« Ответ #1 : 18-08-2016, 10:50:04 »
Что-то вроде ProfileView.GraphOverrides

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 382
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Профили из вида профиля
« Ответ #2 : 18-08-2016, 11:10:04 »
Да! Спасибо! :)

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Re: Профили из вида профиля
« Ответ #3 : 18-08-2016, 12:49:31 »
Только надо учитывать, что в ProfileView.GraphOverrides могут быть данные не только для профилей. Я оттуда же брал, например, данные о переопределениях стилей элементов сети на виде профиля.

Оффлайн Алексей ТерноАвтор темы

  • ADN Club
  • ****
  • Сообщений: 382
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Re: Профили из вида профиля
« Ответ #4 : 18-08-2016, 13:06:47 »
Только надо учитывать, что в ProfileView.GraphOverrides могут быть данные не только для профилей. Я оттуда же брал, например, данные о переопределениях стилей элементов сети на виде профиля.
Я использую свойство ProfileId. Ты хочешь сказать, что это свойство возвращает ID для профилей и труб?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Re: Профили из вида профиля
« Ответ #5 : 18-08-2016, 13:29:37 »
Да. В этом свойстве может быть Id не только объекта Profile. Я оттуда же получаю Id объектов ProfileViewPart, для которых на этом виде профиля изменен стиль:
Код - C# [Выбрать]
  1.         /// <summary>
  2.         /// Получение переопределений стилей труб на виде профиля
  3.         /// </summary>
  4.         /// <param name="pView">Вид профиля</param>
  5.         /// <returns>Словарь ID трубы в модели - стиль</returns>
  6.         public static Dictionary<ObjectId, string> GetPipesStyleOverrides(this ProfileView pView)
  7.         {
  8.             Dictionary<ObjectId, string> overrideStylePipes = new Dictionary<ObjectId, string>();
  9.  
  10.             foreach (ProfileOverride gOver in pView.GraphOverrides)
  11.             {
  12.                 if (gOver.UseOverrideStyle)
  13.                 {
  14.                     using (AcDb.DBObject obj = gOver.OverrideStyleId.Open(OpenMode.ForRead, false, true))
  15.                     {
  16.                         if (obj is PipeStyle)
  17.                         {
  18.                             using (ProfileViewPart pViewPart = gOver.ProfileId.Open(OpenMode.ForRead, false, true) as ProfileViewPart)
  19.                             {
  20.                                 PipeStyle pipeStyle = obj as PipeStyle;
  21.                                 overrideStylePipes.Add(pViewPart.ModelPartId, pipeStyle.Name);
  22.                             }
  23.                         }
  24.                     }
  25.                 }
  26.             }
  27.  
  28.             return overrideStylePipes;
  29.         }