Добавить в корзинуПозвонить
Найти в Дзене

Ленивый метод построения перекрестков на площадке.

Пролог. Долго не удавалось начать писать эту статью из-за типичной лени программиста. Зачем делать руками, если компьютер может сделать это сам. Сделал для себя полезный инструмент интерполяции структурных линий на закруглениях, но когда захотел показать, как я его применяю, понял что мне лень отрисовывать отметки кромок для нескольких перекрестков. И пришлось написать правильный инструмент и для этой процедуры. Ну теперь обо всем по порядку. Проблема построения закруглений. Мне довольно давно не нравились горизонтали получающиеся при построении перекрестков на закруглениях. Если отметки структурной линии на закруглении проинтерполировать, то горизонтали построятся с огибанием. Когда я строил поверхность в Civil 3D, то сначала спрямлял закругление получая плоский треугольник, потом проецировал скругление на поверхность и полученную структурку добавлял в поверхность. После чего удалял спрямления. В робуре функции проецирования есть, но это большое количество дополнительных

Пролог.

Долго не удавалось начать писать эту статью из-за типичной лени программиста. Зачем делать руками, если компьютер может сделать это сам. Сделал для себя полезный инструмент интерполяции структурных линий на закруглениях, но когда захотел показать, как я его применяю, понял что мне лень отрисовывать отметки кромок для нескольких перекрестков. И пришлось написать правильный инструмент и для этой процедуры. Ну теперь обо всем по порядку.

Проблема построения закруглений.

Мне довольно давно не нравились горизонтали получающиеся при построении перекрестков на закруглениях. Если отметки структурной линии на закруглении проинтерполировать, то горизонтали построятся с огибанием.

Вот так выглядят горизонтали при интерполяции между началом и концом закруглений.
Вот так выглядят горизонтали при интерполяции между началом и концом закруглений.

Когда я строил поверхность в Civil 3D, то сначала спрямлял закругление получая плоский треугольник, потом проецировал скругление на поверхность и полученную структурку добавлял в поверхность. После чего удалял спрямления. В робуре функции проецирования есть, но это большое количество дополнительных построений. Особенно если еще и бордюр будет мешаться, а можно спрямляя еще и на закругление другой стороны тротуара залезть. Создавать дополнительную площадку ради закругления тоже не хочется да и легче не становится из-за особенностей финкции проецирования на поверхность в Робуре. Под конец еще инструменты топоматика взбесили. Самый опасный инструмент - это задать отметки по уклону вдоль опорной линии. Нет если есть ось и на одной ширине нужно наметить кромку, то все нормально. Но если есть перекрестки, и на них ось идет прямо, а кромка поворачивает, то можно так испортить поверхность, что мне пришлось полтора часа все восстанавливать. У меня вдоль тротуара были нарисованы куча углублений для стоянок в островками между ними. Эти островки поднялись на несколько метров. Отменить операцию не получилось. Мне в последнее время было некогда программировать, но после этого я снова открыл Visual Studio.

Плагин на закруглении

В итоге я выбираю три точки. Первой выбираю центр перекрестка, затем начало и конец закругления. После чего выбираю структурную линию содержащую закругление. Что делает плагин: По трем точкам определяет параметры поверхности. Далее перебирает все точки структурной линии. Для каждой точки определяется попадает ли она внутрь треугольника образованного тремя выбранными точками. Если попадает, то ее высотная отметка проецируется на плоскость. Никаких дополнительных площадок и построений не производится. Чистая математика. Теперь если меняется уклон проезда, я определяю отметку по краям закруглений и перестраиваю закругление плагином.

Но что делать если рядом возвышается бордюр? Его тоже нужно перестроить. Для этого я при выборе первой точки спрашиваю добавку к высоте. По умолчанию добавка 0. Для верха бордюра я ввожу добавку 0.15, после чего выбираю отметки на бордюре и его структурку. Таким образом перестраивается бордюр.

А так выглядят горизонтали после работы плагина
А так выглядят горизонтали после работы плагина

Теперь рассмотрим как получить отметки начала и конца закругления. От каждой точки ( а на каждом перекрестке их 8) нужно построить структурку перпендикулярно к оси. При это не факт, что получившаяся отметка на оси является интерполяцией оси в данной точке. По этому я сначала рисую полилинию к оси. Потом от оси к точке черчу структурку и удаляю полилинию. Потом по уклону от оси определяю отметку искомой точки. А теперь представьте мое состояние, когда я для примера нарисовал квадрат из четырех перекрестков и понял, что эту процедуру для данной конструкции мне придется повторить 32 раза. Плюс к этому добавим престранный инструмент от Топоматика который вставляет точки на оси. Почему престранный? Ну во первых он не позволяет добавить точку напротив кромки т.к. не позволяет курсору отклоняться от оси. Во вторых у него можно добавить точку в пикетаже от начала. Зачем нужно от начала, когда нужно откладывать расстояние от колодца или от ближайшего перекрестка.

Что у меня получилось. Сначала я собирался так же добавлять структурки. Но в итоге решил только менять отметку точек.

Плагин получения отметок начала закругления

Я выбираю структурную линию оси. Потом выбираю точку начала закругления рядом с осью. Задаю поперечный уклон от кромки к оси (по умолчанию стоит 20). И все. Отметка пересчитывается. Программа сама находит точку на оси перпендикулярно искомой. Интерполирует отметку в данной точке и определяет отметку с учетом уклона и расстояния. И меняет высоту выбранной точки. После выбора оси я могу поочередно пройти по всем точкам кромок вдоль этой оси. Затем выйти из команды и сделать то же самое для другой оси перекрестка.

Продемонстрирую покадрово

С такими инструментами строить и перестраивать вертикалку одно удовольствие.

-4

Ну как то так. И без особых усилий.
Ну как то так. И без особых усилий.

Если Топоматик реализует данные инструменты порадуюсь за всех пользователей.