ProfileView.GraphOverrides - не полный список частей!

Автор Тема: ProfileView.GraphOverrides - не полный список частей!  (Прочитано 10397 раз)

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

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
В той сети, которая в чертеже - 50 элементов. Где-то ещё 2 потерялись.
Также, в этой сети есть вертикальные "петли". Такое я только у вас видел. То есть, 2 трубы подключены к одному и тому же колодцу с одной и с другой стороны. FindShortestNetworkPath будет находить только одну из этих труб, что вполне логично.
Как сложилась ситуация, что элементы сети добавлены на вид профиля, но программно не читаются, так и не понял пока.
Сам не понимаю. Возможно, что как-то играют роль вот такие "петли". Надо экспериментальным путём искать ответ.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Кстати, я уже давно сам не пользуюсь таким "традиционным" способом нахождения элементов сети на виде профиля. Подсмотрел в MGDDBG способ нахождения ссылок объекта и пользуюсь им. (Вот, кстати, обсуждение, из которого появилась такая идея)
Примерно так:
Код - C# [Выбрать]
  1. pView.FindReferences
  2.     (out ObjectId[] hardOwnIds,
  3.     out ObjectId[] softOwnIds,
  4.     out ObjectId[] hardPtIds,
  5.     out ObjectId[] softPtIds);
  6.  
  7. IEnumerable<ObjectId> pViewPartsIds = softPtIds
  8.     .Where(item => item.CheckObjectIdFor<ProfileViewPart>())
  9.     .Distinct();
  10.  
Работает быстрее и использовать проще.
Если воспользоваться таким способом, то найдёт все элементы.

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

  • ADN Club
  • ****
  • Сообщений: 409
  • Карма: 77
  • Skype: vildar82
Ок.
Как бы, что может быть в этих soft/hard references мне пока мало понятно.
Но уже, сигнал небольшой есть, что стоит их юзать.
Спасибо.