Трасса: предпросмотр и создание

Трасса — несколько участков одной операцией: от узла, врезки в трубу или пустого места через изломы до узла, трубы или нового узла. Перед записью окно «Новая трасса» показывает участки, длины, врезки и результат проверок.

Где найти
редактор сети: кнопка «Редактировать топологию сети» (значок ломаной с карандашом) в строке режимов над картой → инструмент «Трасса» на панели редактора или клавиша L.
Права
право создавать участки, для нового конечного узла — создавать узлы его вида, для врезки — перемещать участки.
Функция показана в сквозном сценарии:Правка сети с проверкой и откатом
Читаю как

Возможности

  • Начало и конец трассы — узел сети, врезка в трубу (труба разрезается, в точке врезки появляется узел) или пустое место (там создаётся новый узел выбранного на панели типа).
  • Изломы между ними — промежуточные точки участка. Щелчок по узлу или трубе завершает трассу, в пустом месте её завершает Enter или двойной щелчок.
  • Режим трубы на панели: «Двухтрубная, общая» (одна запись на подачу и обратку), «П и О раздельно» (две трубы с общей трассой), «Только подача», «Только обратка».
  • Привязки: к узлам и трубам, к направлению соседней трубы (∥ и ⊥), к шагу угла; с масштаба 15 — к контурам зданий и осям улиц подложки. Shift — строго 90°, Alt — без привязок.
  • Ввод с клавиатуры во время рисования: цифры — длина отрезка, Tab — угол, Enter — завершить, Backspace — убрать последнюю точку, Esc — сбросить, G — точка по координатам.
  • Окно «Новая трасса» до записи: участки с признаком и длиной, врезки, фрагмент, источник паспорта, ошибки и предупреждения.

Как это работает

Предпросмотр без записи. Enter отправляет трассу на сервер с признаком dry_run: сервер проверяет точки, считает длины и откатывает транзакцию. Окно «Новая трасса» показывает этот отчёт; номера объектов в нём условные. Предпросмотр работает и при выключенной на сервере правке.

Запись — одна операция. «Создать» отправляет ту же трассу без dry_run. Все узлы (nodes), участки (linesobj), паспорта труб (heatpipesections) и разрезы труб при врезке записываются в одной транзакции и одной записью журнала отмены (операция «Трасса»). Ctrl+Z убирает всю трассу целиком.

Длины и признаки. Длина участка считается по местной системе координат (SRID 9998), как в десктопе, а не по сфере. Признак трубы: «общий» в двухтрубном режиме, «подающий» и «обратный» в остальных; в режиме «П и О раздельно» на каждый отрезок создаются две трубы с одной геометрией.

Паспорт. Копируется с участка, примыкающего к тем же узлам, иначе с ближайшего в радиусе 300 м; если рядом ничего нет — умолчания таблицы. Новые узлы получают код от ближайшего узла.

Проверки. Сервер не даст создать участок короче 0,1 м, трассу больше 500 точек, трассу с концами в разных фрагментах. Точка ближе 0,3 м к узлу становится этим узлом. При врезке труба режется, паспорт и оборудование переходят на половины. После записи открывается «Проверка после правки».

Что нужно для работы

  • Право создавать участки; для нового конечного узла — право создавать узлы его вида (потребитель — «потребители», источник — «источники»); для врезки — право перемещать участки.
  • Флаги API MUTATIONS_ENABLED и TOPOLOGY_MUTATIONS_ENABLED.
  • Фрагмент новых объектов: если на карте несколько фрагментов, выберите его на панели или начните трассу от узла или трубы.

Шаги

  1. Включите редактор и инструмент «Трасса» (L). На панели выберите режим трубы («Двухтрубная, общая», «П и О раздельно», «Только подача», «Только обратка») и тип конечного узла — здесь «Потребитель». Кнопка с домиком включает и выключает привязку к зданиям подложки.

    Трасса: предпросмотр и создание: шаг 1

  2. Щёлкните по трубе — начало трассы станет врезкой. Дальше ставьте изломы щелчками. Строка состояния внизу подсказывает следующий шаг, у курсора — длина и поворот отрезка.

    Трасса: предпросмотр и создание: шаг 2

  3. Последнюю точку в пустом месте поставьте щелчком и нажмите Enter (или дважды щёлкните). Откроется окно предпросмотра: участки с признаком и длиной, врезка, фрагмент, результат проверок; плашка сверху напоминает, что карточка потребителя создастся вместе с трассой. «Назад к трассе» — дорисовать, «Сбросить трассу» — отказаться.

    Трасса: предпросмотр и создание: шаг 3

  4. «Создать» записывает трассу одной операцией. Уведомление показывает, сколько участков и узлов создано, общую длину и врезку; в нём же — «Отменить». Сразу открывается панель проверки связности.

    Трасса: предпросмотр и создание: шаг 4

Примеры

На копии базы Алматы, фрагмент 74:

  • Трасса «пусто → излом → пусто» из трёх щелчков: один участок 244,44 м, признак «общий», два новых узла. Сферическое расстояние по тем же точкам отличается от длины в базе меньше чем на 1 % — длина в базе по местной системе.
  • Трасса из двух точек в 150 м восточнее: предпросмотр — один участок 123,82 м, паспорт с ближайшего участка в радиусе 300 м.
  • На кадрах трасса начата врезкой в подготовленный участок и закончена новым узлом-потребителем: врезка разрезает трубу, на её месте появляется узел.

Если не получается

  • «Щёлкните узел или трубу — трасса будет в их фрагменте…» — на карте несколько фрагментов: выберите фрагмент новых объектов на панели редактора или начните трассу от узла или трубы.
  • Окно «Новая трасса» с красными пунктами — трасса не прошла проверку: «Назад к трассе», Backspace убирает последнюю точку.
  • Точка встала не туда, куда щёлкнули, — сработала привязка к узлу, трубе или зданию. Alt при щелчке — без привязок; привязку к зданиям выключает кнопка с домиком.
  • «Сначала завершите рисование или измерение» — закройте панель «Измерения».
  • Трасса легла не туда — привязка к зданиям подложки сдвигает точку к контуру. Выключите её кнопкой с домиком на панели или держите Alt.
  • Ошибка при записи при пройденном предпросмотре — кто-то успел изменить трубу врезки (конфликт версий): обновите карту и нарисуйте трассу заново.

Для разработчика

  • POST /api/v1/topology/chains — {points: [{kind: node|tap|new|vertex, lng, lat, node_id?, line_id?, node_type?}], pipe_mode: common|pair|supply|return, fileid, dry_run, versions} → created_nodes, created_lines, segments, taps, total_length_m, issues, operation_id. 422 validation — ошибки трассы, 409 fragment_required — не выбран фрагмент.
  • Сервер: database/topology_cad.py (create_chain, константы ALMOST_NODE_M, MIN_LINE_LENGTH_M, MAX_CHAIN_POINTS), паспорт — _create_line_passport в database/topology.py.
  • Веб: composables/useTraceDraw.ts (точки, ввод длины и угла), composables/useSnapIndex.ts и GET /api/v1/topology/snap-data (привязка), composables/useContextSnap.ts (здания и улицы), components/ChainPreviewDialog.vue.
  • Тесты: tests/utils/cadSnap.spec.ts, tests/composables/useContextSnap.spec.ts, API tests/test_cad_topology.py; e2e — первый тест e2e/functions/network-editor.spec.ts сверяет геометрию, узлы, длину и тип через API.
Хотите увидеть эту функцию на своих данных?Покажем ТГИД на демонстрации и ответим на вопросы инженеров.
Запросить демо