Отметки трубы

Автор Тема: Отметки трубы  (Прочитано 153 раз)

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

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ***
  • Сообщений: 165
  • Карма: 17
  • Skype: vildar82
Отметки трубы
« : 30-11-2017, 15:18:33 »
Всем привет. Пытаюсь програмно изменить отметку трубы. Если средствами Civil 3D посмотреть свойства трубы, то там есть эти свойства и их можно изменить:


Некоторые из этих свойств также есть и стандартной палитре свойств AutoCAD.
Но вот уже пол дня ползаю по свойствам класса Pipe, онлайн справке и окошку плагина Snoop Civil 3D и все никак не могу найти эти свойства.
Могу предположить, что они хранятся в других объектах базы и в Pipe имеется только ссылка. Но не могу понять – где?


Отмечено как Решение vildar82 30-11-2017, 15:41:44

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

  • ADN
  • *
  • Сообщений: 1276
  • Карма: 249
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Отметки трубы
« Ответ #1 : 30-11-2017, 15:31:05 »
Что касается положения трубы, то в базе хранится только начальная и конечная точка трубы. Остальные значения вычисляются из характеристик трубы.
P.S. Начальная и конечная точка на оси трубы, т.е. координаты Z этих точек - отметки оси трубы.

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ***
  • Сообщений: 165
  • Карма: 17
  • Skype: vildar82
Re: Отметки трубы
« Ответ #2 : 01-12-2017, 11:18:50 »
Еще вопрос.
Как получить заглубление?



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

  • ADN
  • *
  • Сообщений: 1276
  • Карма: 249
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Отметки трубы
« Ответ #3 : 01-12-2017, 11:23:06 »
Тоже вычисляются. Надо получить отметки поверхности в концах трубы и произвести арифметические действия с нужными отметками трубы

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

  • ADN
  • *
  • Сообщений: 1276
  • Карма: 249
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Отметки трубы
« Ответ #4 : 01-12-2017, 13:06:08 »
Update:
Заглубления можно вычислить, если у трубы задана ссылочная поверхность. Для её определения нужно смотреть свойство RefSurfaceId.
У трубы есть такие свойства: MaximumCover и MinimumCover. Они показывают соответственно максимальное и минимальное заглубление верха трубы по наружному диаметру (тут могу ошибаться, надо перепроверить) от ссылочной поверхности. Это может быть в любой точке трубы, не только в конце или в начале. Поэтому, большого практического смысла в этих значениях нет.
Теперь, что касается вычисления отметок поверхности.
У колодца есть свойство SurfaceElevationAtInsertionPoint, поэтому, можно просто брать это значение, если на конце трубы есть колодец (см. свойства StartStructureId, EndStructureId). Конечно же, если ссылочные поверхности трубы и колодца совпадают. Если же колодца нет, то надо открывать на чтение ссылочную поверхность и применять метод FindElevationAtXY. У него есть одна неприятная особенность - если точка окажется вне поверхности, то возникает исключение. Поэтому, надо либо отлавливать исключение, либо проверять попадание точки в границы поверхности.

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ***
  • Сообщений: 165
  • Карма: 17
  • Skype: vildar82
Re: Отметки трубы
« Ответ #5 : 01-12-2017, 20:17:13 »
Ого!  :)
Спасибо.

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

  • ADN
  • *
  • Сообщений: 1276
  • Карма: 249
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Отметки трубы
« Ответ #6 : 01-12-2017, 20:25:20 »
Да пожалуйста :)
Я, кстати, не помню, что будет выдавать SurfaceElevationAtInsertionPoint, если ссылочная поверхность задана колодцу, но сам колодец вне этой поверхности. Этот момент тоже неплохо бы проверить...