Сообщество программистов Autodesk в СНГ

ADN Club => Civil 3D API => Тема начата: Алексей (IdeaSoft) от 02-07-2018, 10:41:43

Название: Получить набор участков труб из объекта трассы
Отправлено: Алексей (IdeaSoft) от 02-07-2018, 10:41:43

Из объекта трассы можно получить набор труб?
 
Код - C# [Выбрать]
  1.  Alignment trassa = (Alignment)tr.GetObject(Id, OpenMode.ForRead);
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Алексей (IdeaSoft) от 02-07-2018, 12:16:13

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

Cвойство elem.StartStation что показывает?
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Дмитрий Загорулькин от 02-07-2018, 12:22:41
Из объекта трассы можно получить набор труб?
Так ведь я уже как мог подробно ответил на этот вопрос в этой теме: http://adn-cis.org/forum/index.php?topic=8557.15
Cвойство elem.StartStation что показывает?
Показывает пикетаж начала отрезка.
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Алексей (IdeaSoft) от 02-07-2018, 13:01:09
Получается что я перебираю все виды профилей, где встречается труба.
Зачем мне бегать по видам профилей, где встречается труба.
Я сразу хочу из объекта трассы получить набор труб с высотами Z.
Мне координата Z нужна в абсолютных отметках, а не
в тех которые я получаю на виде профиля.

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

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

Алексей, у меня сложилось впечатление, что у Вас очень плохие знания самого продукта Civil 3D. Вы не понимаете элементарных вещей: что представляют из себя его объекты, как они себя ведут и как взаимодействуют между собой. Как Вы без этого понимания пытаетесь программы под него писать?
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Алексей (IdeaSoft) от 02-07-2018, 13:56:18
Алексей, у меня сложилось впечатление, что у Вас очень плохие знания самого продукта Civil 3D
Да нет, знаний мне хватает.
Просто дело в том, что мне не нравится то что:
 - набор трасс я получить могу
 - набор труб тоже получить могу

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


 
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Алексей (IdeaSoft) от 02-07-2018, 13:58:26
Связать в единую цепь наверное можно, но нужно подумать как алгоритм такой написать.
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Дмитрий Загорулькин от 02-07-2018, 14:01:06
а вот связать их в единую цепь не смогу.
Трубы с трассами в единую цепь (даже представить не могу, как это)? Или получить цепь из соединённых последовательно труб? Или получить цепь из труб, которые проходят под трассой? Или что-то ещё? Не понимаю.
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Алексей (IdeaSoft) от 02-07-2018, 14:29:00
а вот связать их в единую цепь не смогу.
Трубы с трассами в единую цепь (даже представить не могу, как это)? Или получить цепь из соединённых последовательно труб? Или получить цепь из труб, которые проходят под трассой? Или что-то ещё? Не понимаю.

Что-то я не могу получить просто набор объектов Pipe
Есть свойство CivilDocument, которое вернет просто набор всех труб (объектов Pipe)?
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Дмитрий Загорулькин от 02-07-2018, 15:22:14
Трубы не являются самостоятельными объектами, они входят в сети. Поэтому, можно получить сети из CivilDocument, а из сетей - их трубы.
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Алексей (IdeaSoft) от 02-07-2018, 16:04:47
Трубы не являются самостоятельными объектами, они входят в сети. Поэтому, можно получить сети из CivilDocument, а из сетей - их трубы.

Хорошо, тогда возможно ли получить набор объектов видов профилей?
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Дмитрий Загорулькин от 02-07-2018, 16:06:48
набор объектов видов профилей?
Набор объектов типа "Вид профиля" (ProfileView) или объектов, отображаемых на видах профилей?
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Алексей (IdeaSoft) от 02-07-2018, 16:14:30
Я получаю объекты внутри трассы,
Но опять, мне доступны только 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.                     }
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Дмитрий Загорулькин от 02-07-2018, 16:24:04
Или это опять мой бред?
Да
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Алексей (IdeaSoft) от 02-07-2018, 16:37:07
Зачем мучится писать алгоритм может есть штатная команда,
которая получает 3d-полилини (к примеру по оси трубы)?

Почему по 3d-полилиниям трассы у проектировщиков же получилось
Должен же быть и обратный механизм?
 
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Дмитрий Загорулькин от 02-07-2018, 18:14:39
Зачем мучится писать алгоритм может есть штатная команда,
которая получает 3d-полилини (к примеру по оси трубы)?
У трубы в принципе только 2 точки - начало и конец. То есть, можно построить отрезок. Ну или дугу, если труба дуговая. Зачем полилиния?
Почему по 3d-полилиниям трассы у проектировщиков же получилось
Должен же быть и обратный механизм?
Обратный механизм невозможен, потому что у трассы нет координаты Z.
Название: Re: Получить набор участков труб из объекта трассы
Отправлено: Алексей (IdeaSoft) от 03-07-2018, 04:57:19
Зачем мучится писать алгоритм может есть штатная команда,
которая получает 3d-полилини (к примеру по оси трубы)?
У трубы в принципе только 2 точки - начало и конец. То есть, можно построить отрезок. Ну или дугу, если труба дуговая. Зачем полилиния?
Почему по 3d-полилиниям трассы у проектировщиков же получилось
Должен же быть и обратный механизм?
Обратный механизм невозможен, потому что у трассы нет координаты Z.

Вообщем не стал заморачиваться с алгоритмами civil api. Сделал проще. Получил характерные линии из трасс. А из харакрерных линий отрезки. И все на этом. Отрезками пока доволен и меня это устраивает.