Как получить имя семейства трубы?

Автор Тема: Как получить имя семейства трубы?  (Прочитано 14673 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как получить имя семейства трубы?
« Ответ #15 : 17-01-2017, 17:34:10 »
А какое исключение возникает в событиях?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Как получить имя семейства трубы?
« Ответ #16 : 17-01-2017, 17:48:25 »
Неопознанное  ???

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как получить имя семейства трубы?
« Ответ #17 : 17-01-2017, 18:07:42 »
Хм. А если попробовать как-то так:

Код - C# [Выбрать]
  1. string GetPartFamilyName(Part part)
  2. {
  3.     string ret;
  4.     bool isUpgrade = false;      
  5.     try
  6.     {  
  7.         isUpgrade = part.UpgradeFromNotify();  
  8.         IAeccPipeNetworkPart partCom = (IAeccPipeNetworkPart)part.AcadObject;
  9.         IAeccPartFamily partFamilyCom = (IAeccPartFamily)partCom.PartFamily;
  10.         ret = partFamilyCom.Name;
  11.     }
  12.     catch
  13.     {
  14.         ret = "*ERROR*";
  15.     }  
  16.     if (isUpgrade) part.DowngradeToNotify();
  17.     return ret;
  18. }
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Как получить имя семейства трубы?
« Ответ #18 : 17-01-2017, 18:34:18 »
eNotApplicable на строке:
Код - C# [Выбрать]
  1. isUpgrade = part.UpgradeFromNotify();

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как получить имя семейства трубы?
« Ответ #19 : 17-01-2017, 18:37:06 »
Тогда увы...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Как получить имя семейства трубы?
« Ответ #20 : 17-01-2017, 19:40:37 »
В общем-то, небольшую обходную лазейку нащупал. Изменение семейства у элемента в Civil возможно только при выполнении команды "AECCSWAPNETWORKPART". Если объект был предварительно выбран перед запуском этой команды, то такой код работает:
Извините, вам запрещён просмотр содержимого спойлеров.

Если удастся отловить выбор объектов после запуска команды, то можно считать, что проблема решена.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Re: Как получить имя семейства трубы?
« Ответ #21 : 17-01-2017, 20:07:23 »
Фух... Не самый простой путь, но работает, зараза  :D
Извините, вам запрещён просмотр содержимого спойлеров.