Переопределение стиля трубы на виде профиля

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

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

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

  • ADN Club
  • ****
  • Сообщений: 324
  • Карма: 50
  • Skype: vildar82
Привет,
Нужно переопределить стиль трубы на виде профиля:



Делаю так:
Код - C# [Выбрать]
  1.         [CommandMethod(nameof(TestOverrideStyle), CommandFlags.Modal)]
  2.         public void TestOverrideStyle()
  3.         {
  4.             var doc = AcadHelper.Doc;
  5.             var ed = doc.Editor;
  6.             var db = doc.Database;
  7.             var civil = CivilDocument.GetCivilDocument(db);
  8.             using (var t = doc.TransactionManager.StartTransaction())
  9.             {
  10.                 var pv = ed.GetEntity("Выбор вида профиля").ObjectId.GetObject(OpenMode.ForWrite) as ProfileView;
  11.                 if (pv == null) return;
  12.                 var overrideStyle = civil.Styles.PipeStyles["PIK_Пересечка_К1"];
  13.                 foreach (var graphOverride in pv.GraphOverrides)
  14.                 {
  15.                     var part = graphOverride.ProfileId.GetObject<ProfileViewPart>();
  16.                     if (part == null) continue;
  17.                     var pipe = part.ModelPartId.GetObject(OpenMode.ForRead) as Pipe;
  18.                     if (pipe == null || pipe.Name != "Т 1") continue;
  19.                     graphOverride.OverrideStyleId = overrideStyle;
  20.                 }
  21.                 t.Commit();
  22.             }
  23.         }
  24.  

Выдает ошибку на 19 строке:



Пробовал через Com зайти, тоже не получилось.
Там у объекта IAeccProfileOverride свойство стиля Style типа AeccProfileStyle.
Хотя там трубы могут быть ???

Тестовый файл
https://drive.google.com/open?id=1LKzWbb3L09jpWpbqXYJa7AoWeg19TYqh
Civil 2017.

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

  • ADN
  • *
  • Сообщений: 2076
  • Карма: 533
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Насколько я помню, у меня тоже это не получилось сделать примерно года 3 тому назад. И было общение с ADN DevHelp на эту тему и они подтвердили, что это невозможно. К сожалению, вся переписка осталась на корпоративном почтовом ящике, который теперь недоступен. Можно попробовать снова обратиться к ним с этом вопросом.


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

  • ADN Club
  • ****
  • Сообщений: 324
  • Карма: 50
  • Skype: vildar82
Вроде обходных путей нет  :(
Пойду через нажатие контролов на окошках  ;D

Оффлайн Andant

  • ADN Club
  • **
  • Сообщений: 79
  • Карма: 26
Вроде обходных путей нет 
А если замену ссылок попробовать?
http://adn-cis.org/forum/index.php?topic=8082.msg28800#msg28800

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

  • ADN
  • *
  • Сообщений: 2076
  • Карма: 533
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Сегодня нашёл в справке по Civil 3D 2019 API новое свойство у вида профиля - ProfileView.PipeOverrides Property. Похоже, что это то что нужно, но ещё в версии 2018 его не было.
И аналогичное свойство для колодцев: ProfileView.StructureOverrides Property