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

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

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Подскажите, как получить с помощью CIVIL API:

1) Коллекцию трасс (к примеру сети водопровод)

2) По трассе получить объект профиля и соотв. позицию профиля (X,Y) в модели


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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Вроде как трасса это коридор?

Код - C# [Выбрать]
  1.             CorridorCollection coll = ... ;// взять коллекцию
  2.             foreach (CAD_DBS.ObjectId id in coll) {
  3.                 Corridor cor =   ... ;  // взять коридор по id
  4.                 Plane pln = ...;  // Тут что делать не понятно?
  5.                 Autodesk.Aec.Geometry.Profile prof = cor.GetProfile(pln); // Получить профиль
  6.                // Ну и положение чертежа профиля наверное так получить можно?
  7.                 Point2d p1, p2;  
  8.                 prof.Extent(out p1, out p2);
  9.             }

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Вроде как трасса это коридор?
А мне казалось, что коридор - это коридор...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Вроде как трасса это коридор?
А мне казалось, что коридор - это коридор...

Я проверил коридор это ни фига не трасса.
Трассу нужно искать где-то в другом месте

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Я проверил коридор это ни фига не трасса.
Трассу нужно искать где-то в другом месте
Ага. Alignment: http://adndevblog.typepad.com/infrastructure/2012/05/list-all-alignment-entities.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Я проверил коридор это ни фига не трасса.
Трассу нужно искать где-то в другом месте
Ага. Alignment

По ходу через коллекцию труб можно получить трассу

Код - C# [Выбрать]
  1.             Document doc = Application.DocumentManager.MdiActiveDocument;
  2.             Database db = doc.Database;
  3.             CivilDocument civ_doc = CivilDocument.GetCivilDocument(db);
  4.             ObjectIdCollection coll = civ_doc.GetPipeNetworkIds(); // Коллекция труб
  5.             Pipe pipe = ... ;  // Получить трубу из коллекции
  6.             ObjectId newtid = pipe.NetworkId; // Получить ИД трассы из элемента трубы
  7.             Network nw = ... ; // взять трассу по newtid


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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
По ходу через коллекцию труб можно получить трассу
Кажется ты написал бред.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Кажется ты написал бред.
Конечно же бред. Все через заднее место написал.
Сначала получить коллекцию труб а потом трассу - это полный бред.
Я так делать не хочу и не буду.
А я хочу сразу получить коллекцию трасс.
Как это сделать?

Должен же в API способ получить коллекцию трасс.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
А я хочу сразу получить коллекцию трасс.
Как это сделать?
Выше я уже давал ссылку: http://adndevblog.typepad.com/infrastructure/2012/05/list-all-alignment-entities.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
А точно же. Вот я тормоз.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить коллекцию Трасс и профиль
« Ответ #10 : 08-06-2018, 14:32:00 »
            ObjectId newtid = pipe.NetworkId; // Получить ИД трассы из элемента трубы
И в любом случае ты получал не ObjectId трассы, а ObjectId сети.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Получить коллекцию Трасс и профиль
« Ответ #11 : 08-06-2018, 14:34:06 »
Ага посмотрел.
Вообщем так
В цикле делаю проверку на то что это объект Network и все


Код - vb.net [Выбрать]
  1. Dim alignSubEnt As AlignmentSubEntity = alignEnt(i)
  2.             Select Case alignSubEnt.SubEntityType
  3.               Case AlignmentSubEntityType.Network


Нет это тоже бред



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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить коллекцию Трасс и профиль
« Ответ #12 : 08-06-2018, 14:43:27 »
Нет это тоже бред
Безусловно. Причем здесь трубопроводная сеть?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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

Зачем мне эти: AlignmentSubEntityType.Line
                       AlignmentSubEntityType.Acr и прочие Spiral

Мне же нужно объект трассы (сети)
Я так понял это Network



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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получить коллекцию Трасс и профиль
« Ответ #14 : 08-06-2018, 14:48:28 »
Мне же нужно объект трассы (сети)
Я так понял это Network
Трасса - это трасса. Сеть - это сеть. Я перестал что-либо понимать...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (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 »
Спасибо большое за ответы.
Теперь разобрался.