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

ADN Club => Civil 3D API => Тема начата: Вильдар от 07-09-2018, 20:13:59

Название: Переопределение стиля трубы на виде профиля
Отправлено: Вильдар от 07-09-2018, 20:13:59
Привет,
Нужно переопределить стиль трубы на виде профиля:

(https://s22.postimg.cc/q8w4pfaq5/pv_Override1.jpg) (https://postimg.cc/image/q8w4pfaq5/)

Делаю так:
Код - 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 строке:

(https://s22.postimg.cc/wml7srfn1/pv_Override2.jpg) (https://postimg.cc/image/wml7srfn1/)

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

Тестовый файл
https://drive.google.com/open?id=1LKzWbb3L09jpWpbqXYJa7AoWeg19TYqh
Civil 2017.
Название: Re: Переопределение стиля трубы на виде профиля
Отправлено: Дмитрий Загорулькин от 08-09-2018, 11:15:43
Насколько я помню, у меня тоже это не получилось сделать примерно года 3 тому назад. И было общение с ADN DevHelp на эту тему и они подтвердили, что это невозможно. К сожалению, вся переписка осталась на корпоративном почтовом ящике, который теперь недоступен. Можно попробовать снова обратиться к ним с этом вопросом.

Название: Re: Переопределение стиля трубы на виде профиля
Отправлено: Вильдар от 09-09-2018, 11:25:24
Вроде обходных путей нет  :(
Пойду через нажатие контролов на окошках  ;D
Название: Re: Переопределение стиля трубы на виде профиля
Отправлено: Andant от 27-09-2018, 17:06:19
Вроде обходных путей нет 
А если замену ссылок попробовать?
http://adn-cis.org/forum/index.php?topic=8082.msg28800#msg28800 (http://adn-cis.org/forum/index.php?topic=8082.msg28800#msg28800)
Название: Re: Переопределение стиля трубы на виде профиля
Отправлено: Дмитрий Загорулькин от 12-06-2019, 23:22:32
Сегодня нашёл в справке по Civil 3D 2019 API новое свойство у вида профиля - ProfileView.PipeOverrides Property (http://docs.autodesk.com/CIV3D/2019/ENU/API_Reference_Guide/html/25eead99-565e-81d1-c6cb-6cb143705f24.htm). Похоже, что это то что нужно, но ещё в версии 2018 его не было.
И аналогичное свойство для колодцев: ProfileView.StructureOverrides Property (http://docs.autodesk.com/CIV3D/2019/ENU/API_Reference_Guide/html/a5ea66ef-5c12-839a-aa67-f18dec1dc41d.htm)