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

ADN Club => Civil 3D API => Тема начата: Andant от 18-10-2017, 16:53:57

Название: Получить геометрию PressurePipe.
Отправлено: Andant от 18-10-2017, 16:53:57
Трубы добавляются в напорный трубопровод при помощи методов AddLinePipe и AddCurvePipe.
Создаю новые трубы на базе старых с сохранением геометрии и заданием нового типоразмера.
Возникла проблема с определением, является ли исходная труба "курвой" :).
BaseCurve фиктивная.
Пока нашел только способ с двойным Explode. При первом  вызове получается неименованный блок U*, при втором - Polyline или Arc.
Неужели, нет ничего попроще? На больших объемах  будет тормозить...
Название: Re: Получить геометрию PressurePipe.
Отправлено: Дмитрий Загорулькин от 18-10-2017, 17:06:45
Для безнапорных труб "прокатывал" такой способ: определяем среднюю точку трубы и проверяем, лежит ли она на прямой между начальной точкой и конечной. Среднюю точку определял через параметры кривой. Если они работают, то как-то так:
Код - C# [Выбрать]
  1. StartParameter = pipe.GetParameterAtPoint(pipe.StartPoint);
  2. EndParameter = pipe.GetParameterAtPoint(pipe.EndPoint);
  3. MidPoint = pipe.GetPointAtParameter((StartParameter + EndParameter) / 2);
Название: Re: Получить геометрию PressurePipe.
Отправлено: Andant от 18-10-2017, 18:08:07
Код - C# [Выбрать]
  1. StartParameter = pipe.GetParameterAtPoint(pipe.StartPoint);
  2. EndParameter = pipe.GetParameterAtPoint(pipe.EndPoint);
  3. MidPoint = pipe.GetPointAtParameter((StartParameter + EndParameter) / 2);
  4.  
0.0
1.0
(0,0,0.5)
Название: Re: Получить геометрию PressurePipe.
Отправлено: Дмитрий Загорулькин от 18-10-2017, 18:35:10
Мда...
Ну на самом деле, Explode - не так уж и плохо. Если объекты-"осколки" обрабатывать в памяти и не добавлять в базу данных чертежа, то не должно быть сильных тормозов.
Название: Re: Получить геометрию PressurePipe.
Отправлено: Дмитрий Загорулькин от 18-10-2017, 18:57:41
А ведь есть ещё напорные трубы, выровненные по поверхности. Одна труба может состоять из более мелких сегментов, повторяющих линию профиля поверхности. Интересно, какой объект получится при взрыве такой трубы?
А ещё, при взрыве трубы может получиться не одна линия, а несколько - в зависимости от настроек стиля трубы. Надо будет среди них найти ту, которая идёт вдоль трубы...