Получить набор участков труб из объекта трассы

Автор Тема: Получить набор участков труб из объекта трассы  (Прочитано 9647 раз)

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

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun

Из объекта трассы можно получить набор труб?
 
Код - C# [Выбрать]
  1.  Alignment trassa = (Alignment)tr.GetObject(Id, OpenMode.ForRead);

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun

В цикле перебираю объекты типа AlignmentSubEntityLine
 
Код - C# [Выбрать]
  1. foreach (AlignmentEntity elem in trassa.Entities) {
  2. ...
  3. }

Cвойство elem.StartStation что показывает?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Из объекта трассы можно получить набор труб?
Так ведь я уже как мог подробно ответил на этот вопрос в этой теме: http://adn-cis.org/forum/index.php?topic=8557.15
Cвойство elem.StartStation что показывает?
Показывает пикетаж начала отрезка.

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Получается что я перебираю все виды профилей, где встречается труба.
Зачем мне бегать по видам профилей, где встречается труба.
Я сразу хочу из объекта трассы получить набор труб с высотами Z.
Мне координата Z нужна в абсолютных отметках, а не
в тех которые я получаю на виде профиля.

Ну или сразу получить из трассы 3d-полилиниию было бы еще лучше.

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

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Зачем мне бегать по видам профилей, где встречается труба.
Я сразу хочу из объекта трассы получить набор труб с высотами Z.
Повторю ещё раз: объект "Трасса" (Alignment) ничего не знает о таком объекте как "Труба" (Pipe). Вообще. Ей фиолетово - есть трубы в чертеже или нет , проходит труба под ней или не проходит, пересекает её труба или не пересекает. С какого боку к ней не подходи - методами, свойствами и т.п. не вытащить из неё данных о трубах. Почему? Да потому что она о них не знает! Это всё равно что нарисовать в обычном автокаде линию поверх текста и пытаться из линии получить текст. Как там линия и текст - два различных не связанных объекта, так и тут - трасса и труба практически никак не взаимодействуют.
Ну или сразу получить из трассы 3d-полилиниию было бы еще лучше.
Толку-то: трасса всегда в нулевом уровне.
Но я так понял, что с видом профиля все равно связь должна быть, т.к. именно
в виде профиля прорабатывается высотное положение трубы.
Что значит "прорабатывается"? Высотное положение трубы отображается на виде профиля и может на нём редактироваться. Но его также можно изменять и просто в свойствах трубы, без вида профиля. И посмотреть на 3D виде.

Алексей, у меня сложилось впечатление, что у Вас очень плохие знания самого продукта Civil 3D. Вы не понимаете элементарных вещей: что представляют из себя его объекты, как они себя ведут и как взаимодействуют между собой. Как Вы без этого понимания пытаетесь программы под него писать?

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Алексей, у меня сложилось впечатление, что у Вас очень плохие знания самого продукта Civil 3D
Да нет, знаний мне хватает.
Просто дело в том, что мне не нравится то что:
 - набор трасс я получить могу
 - набор труб тоже получить могу

а вот связать их в единую цепь не смогу.


 

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Связать в единую цепь наверное можно, но нужно подумать как алгоритм такой написать.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
а вот связать их в единую цепь не смогу.
Трубы с трассами в единую цепь (даже представить не могу, как это)? Или получить цепь из соединённых последовательно труб? Или получить цепь из труб, которые проходят под трассой? Или что-то ещё? Не понимаю.

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
а вот связать их в единую цепь не смогу.
Трубы с трассами в единую цепь (даже представить не могу, как это)? Или получить цепь из соединённых последовательно труб? Или получить цепь из труб, которые проходят под трассой? Или что-то ещё? Не понимаю.

Что-то я не могу получить просто набор объектов Pipe
Есть свойство CivilDocument, которое вернет просто набор всех труб (объектов Pipe)?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
Трубы не являются самостоятельными объектами, они входят в сети. Поэтому, можно получить сети из CivilDocument, а из сетей - их трубы.

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Трубы не являются самостоятельными объектами, они входят в сети. Поэтому, можно получить сети из CivilDocument, а из сетей - их трубы.

Хорошо, тогда возможно ли получить набор объектов видов профилей?

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
набор объектов видов профилей?
Набор объектов типа "Вид профиля" (ProfileView) или объектов, отображаемых на видах профилей?

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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Я получаю объекты внутри трассы,
Но опять, мне доступны только Point2d точки
А нужны координаты Z
Может попробовать сделать команду получить характерную линию из трассы?
Или это опять мой бред?

Код - C# [Выбрать]
  1.   //// Цикл по объектам внутри трассы
  2.                     foreach (CIV_DBS.AlignmentEntity alignEnt in trs.Entities)
  3.                     {
  4.                         int subEntCount = alignEnt.SubEntityCount;
  5.                         for (int i = 0; i < subEntCount; i++)
  6.                         {
  7.                             CIV_DBS.AlignmentSubEntity ele = alignEnt[i];
  8.                             if (ele.SubEntityType == CIV_DBS.AlignmentSubEntityType.Line)
  9.                             {
  10.                                 CIV_DBS.AlignmentSubEntityLine pipe = ele as CIV_DBS.AlignmentSubEntityLine;
  11.                                 CAD_GEO.Point2d p1 = pipe.StartPoint;
  12.                                 CAD_GEO.Point2d p2 = pipe.EndPoint;
  13. ...
  14.                             }
  15.                         }
  16.                     }


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

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Зачем мучится писать алгоритм может есть штатная команда,
которая получает 3d-полилини (к примеру по оси трубы)?

Почему по 3d-полилиниям трассы у проектировщиков же получилось
Должен же быть и обратный механизм?