Получить коллекцию Трасс и профиль

Автор Тема: Получить коллекцию Трасс и профиль  (Прочитано 6272 раз)

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

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Получить коллекцию Трасс и профиль
« Ответ #15 : 08-06-2018, 14:51:13 »
Дли понимания прикрепляю картинку в дереве объектов Civil

Мне нужно получить доступ к коллекции "различные трассы"



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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Получить коллекцию Трасс и профиль
« Ответ #16 : 08-06-2018, 16:01:02 »
По порядку.
Получить коллекцию трасс в чертеже: http://docs.autodesk.com/CIV3D/2019/ENU/API_Reference_Guide/html/768e0508-6ee6-3da7-410b-4a059f6ddcbf.htm
Далее, трасса сети. В принципе, сеть и трасса могут и не иметь никакой связи. Просто сеть будет отображаться на виде профиля трассы. Но в идеальном случае, у сети может быть задана ссылочная трасса: http://docs.autodesk.com/CIV3D/2019/ENU/API_Reference_Guide/html/cc05cd26-d4ad-cc1f-5a82-fc28852b7509.htm
Далее, надо получить профили трассы? Или виды профилей, на которых отображена сеть? В общем, нужно более детальное описание задачи - что есть и что надо получить. Тогда смогу что-то подсказать конкретное.

Отмечено как Решение Александр Ривилис 09-06-2018, 00:51:43

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Получить коллекцию Трасс и профиль
« Ответ #17 : 08-06-2018, 16:26:08 »
Перечитал ещё раз предыдущее обсуждение.
В Сивиле всё не так просто с сетью и трассой. Есть только один вариант, о котором я выше писал - если у сети задана ссылочная трасса. Но это ничего не гарантирует. То есть, хоть ссылочная трасса и будет задана, но не даёт гарантии, что трубы и колодцы сети будут отображаться на видах профилей этой трассы. Также, нет никакой гарантии, что геометрия сети и трассы в плане будут совпадать. То есть, ссылочная трасса - это просто запись ObjectId трассы в объект Network, не более. И если найти трассу сети, имея исходными данными сеть, ещё как-то можно, то найти сеть под трассой можно, пожалуй, только брутфорсом. То есть:
Есть сеть - у сети есть свойство ReferenceAlignmentId (но оно ничего не гарантирует). У каждой трубы и колодца сети есть ещё отдельный метод GetProfileViewDisplayingMe: http://docs.autodesk.com/CIV3D/2019/ENU/API_Reference_Guide/html/307afdd4-7ad4-d57f-c273-a0d54d9222fe.htm. То есть, можно найти виды профилей, на которых конкретная труба или колодец отображаются. Потом уже по восходящей цепочке от видов профилей найти их родительские трассы.
Если же исходными данными является трасса, то найти какие сети под ней проходят и отображаются на её видах профилей - довольно нетривиальная задача. Прямого пути нет. Но решаемо.

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Получить коллекцию Трасс и профиль
« Ответ #18 : 08-06-2018, 16:32:48 »
Ага я получил коллекцию элементов типа
AlignmentSubEntityLine
Но вот как понять что элемент трубы находится в трассе?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Получить коллекцию Трасс и профиль
« Ответ #19 : 08-06-2018, 16:41:05 »
Это элементы, из которых состоит трасса - отрезки. Трасса (Alignment) - это просто линия в нулевом уровне, по которой строятся профили и виды профилей. Внутри трассы есть коллекция частей, из которых она состоит: линии, дуги и спирали. Но сама трасса (Alignment) ничего не "знает" об объекте "сеть" (Network). В данных трассы нигде не содержится никаких привязок к сетям чертежа. Так что
элемент трубы находится в трассе
такого в принципе не может быть. Элемент сети (труба или колодец) может геометрически находиться на трассе (на плановом виде), но трасса об этом не "знает" ничего.

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Получить коллекцию Трасс и профиль
« Ответ #20 : 08-06-2018, 17:35:59 »
Вот есть объект класса pipe
Мне бы просто получить этот объект?

CIV_DBS.Pipe pp =//  Вот как найти в базе объект Pipe?
pp.NetworkName //  Тут я получу имя трассы - это все что пока мне нужно будет.

Pipe и AlignmentSubEntityLine - это одно и тоже или разные вещи (приведение типов сработает)?


 

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить коллекцию Трасс и профиль
« Ответ #21 : 08-06-2018, 17:42:56 »
CIV_DBS.Pipe pp =//  Вот как найти в базе объект Pipe?
Если ты знаешь его ObjectId, то можешь его найти. Если нет, то по каким параметрам ты его найдёшь?
pp.NetworkName //  Тут я получу имя трассы - это все что пока мне нужно будет.
Не получишь. Потому что это не имя трассы, а имя сети.
Pipe и AlignmentSubEntityLine - это одно и тоже или разные вещи (приведение типов сработает)?
Это совершенно разные вещи. Приведение типов не может сработать.

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Получить коллекцию Трасс и профиль
« Ответ #22 : 08-06-2018, 22:26:29 »
Спасибо большое за ответы.
Теперь разобрался.