Найти/изменить близкорасположенные точки полилиний

<< Click to Display Table of Contents >>

Navigation:  РЕЖИМЫ РАБОТЫ В ОКНАХ-ЧЕРТЕЖАХ > < Работа с полилиниями >

Найти/изменить близкорасположенные точки полилиний

 

Иногда в файлах-чертежах имеются полилинии, точки которых находятся близко друг к другу или имеют сопадающие координаты X и Y и разные координаты Z.

Во многих случаях такие случаи являются нежелательными.

 

Рассматриваемый режим предназначен для поиска и корректировки близкорасположенных точек полилиний.

Корректировка может быть как автоматической, так и полуавтоматической или ручной.

 

Работа производится с полилиниями текущего основного файла-чертежа.

 

Для вызова диалога "Корректировка близких точек полилиний основного файла-чертежа" курсор помещается в любое место рабочего графического окна и нажимается левая или правая клавиша мыши.

 

 

 

 

Исходный файл чертеж - для информации выводится название текущего основного файла-чертежа.

 

Считать близкими точки, между которыми расстояние 2D (в плане) меньше ... - вводится расстояние, по которому программа определяет, является ли точка полилинии близкой к другой точке или отрезку другой полилинии.

 

Не проводить автоматического усреднения, если разница отметок (Z) больше ... - если разница отметок между близкими точками больше заданного значения, то автоматическая корректировка координат таких точек не производится. Корректировка возможна только с предварительным вводом нужных координат новой точки.  

 

Разновидности близких точек

 

Точки внутри полилиний - точка полилинии находящаяся близко к соседней точке этой же полилинии.

 

Точки начал / концов полилиний относительно точек начал / концов других полилиний - точка начала или конца полилинии, находящаяся близко к точке начала или конца другой полилинии.

 

Точки внутри полилиний относительно точек начал / концов других полилиний - точка начала или конца полилинии, находящаяся близко к точке внутри другой полилинии (не считая точек начала или конца другой полилинии).

 

Точки начал / концов полилиний относительно отрезков других полилиний - точка начала или конца полилинии, находящаяся близко к отрезку другой полилинии.  

 

 

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

Проверка производится начиная с полилинии, имеющей наибольший номер и заканчивая полилинией с номером 1.

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

 

Близкой считается точка, расстояние от которой до другой точки или до отрезка другой полилинии меньше заданного значения. Расстояние вычисляется только по координатам X и Y, без использования координаты Z.

 

 

 

Провести автоматическую корректировку близких точек - программа последовательно ищет близкие точки и производит их корректировку, если это возможно.

То есть, нажатие на эту кнопку приводит к запуску автоматической корректировки близких точек.

 

 

После редактирования полилиний автоматически начинать поиск следующей близкой точки - если этот элемент не отмечен, то после очередного редактирования (более подробно о вариантах редактирования см. ниже) производится перерисовка изображения в окне и можно увидеть результат редактирования. Для продолжения редактирования нужно будет нажать кнопку Продолжить поиск близких точек.

Если этот элемент отмечен, то после очередного редактирования автоматически начинается поиск следующей близкой точки, после чего изображение в окне центрируется в очередную найденную точку. Результат предыдущего редактирования в большинстве случаев уйдет из поля зрения, но зато не нужно будет нажимать кнопку Продолжить поиск близких точек.

 

 

 

 

Рассмотрим корректировку для разных видов близких точек.

 

Точки внутри полилиний.

Если в полилинии есть несколько пар близких точек то берутся две самых близкие точки.

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

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

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

Если одна из найденных близких точек является точкой начала или конца, то точке замены присваиваются координаты точки начала/конца, иначе координаты точки замены будут  равны средним координатам найденных двух точек.

После замены двух точек на одну производится повторный поиск близких точек в той же полилинии.

 

 

Точки начал / концов полилиний относительно точек начал / концов других полилиний.

Для проверяемой точки начала или конца текущей проверяемой полилинии близкими могут оказаться несколько точек начал/концов из разных полилиний.

Если разница координат Z между максимальной и минимальной Z найденных близких точек  больше заданного значения, то автоматическое редактирование не производится, производится переход к другой полилинии (а если проверялась точка начала, то к точке конца той же полилинии).

Если разница Z меньше или равна заданной, то по всем найденным точкам вычисляются средние координаты точки, на которую заменить найденные близкие точки, и производится замена координат всех найденных близких точек.

 

 

Точки внутри полилиний относительно точек начал / концов других полилиний.

Для проверяемой точки внутри полилинии близкими могут оказаться несколько точек начал/концов из разных полилиний.

Если разница координат Z между максимальной и минимальной Z найденных близких точек  больше заданного значения, то автоматическое редактирование не производится, производится переход к другой полилинии (а если проверялась точка начала, то к точке конца той же полилинии).

Если разница Z меньше или равна заданной, то по всем найденным близким точкам вычисляются средние координаты точки, на которую заменить найденные близкие точки. Координаты точки внутри полилинии и точки начала / конца полилинии (начал / концов полилиний) заменяются на вычисленную среднюю точку. Полилиния, внутри которой находится проверяемая точка, разделяется на две самостоятельные полилинии.

 

 

Точки начал / концов полилиний относительно отрезков других полилиний.

Из проверяемой точки начала или конца текущей проверяемой полилинии опускается перпендикуляр на каждый отрезок из других полилиний и находится точка пересечения перпендикуляра и отрезка. Если расстояние по перпендикуляру от проверяемой точки до точки пересечения с отрезком меньше заданного, то проверяемая точка считается близкой к отрезку.

Если разница Z больше заданной, то автоматическая корректировка не производится, производится переход к другой полилинии (а если проверялась точка начала, то к точке конца той же полилинии).

Если разница Z меньше или равна заданной, то в отрезок полилинии вставляется вычисленная точка пересечения, а затем эта полилиния разделяется на две самостоятельные полилинии. Проверяемой точке начала или конца текущей проверяемой полилинии также присваиваются координаты вычисленной точки пересечения. Если имеются точки начала / конца других полилиний, в точности совпадающие с проверяемой точкой, то всем таким точкам начала / конца других полилиний также присваиваются координаты вычисленной точки пересечения.

 

 

Знаков после точки - задается количество знаков после точки, выводимое в элементах диалога с координатами или расстояниями.

 

 

Начать поиск близких точек - начать поиск близких точек в соответствии с заданными выше параметрами.

После первой встреченной ошибки поиск останавливается, выводится информация об ошибке и программа ожидает реакции пользователя.

 

Информация об ошибке включает в себя следующие элементы :

- сообщение о текущем обрабатываемом виде близких точек;

- сообщение о найденных близких точках полилиний;

- кнопки с описанием возможных дальнейших действий пользователя;

- предлагаемые координаты точки, на которую заменить найденные близкие точки;

- таблица с подробной информацией о близких точках / полилиниях, включая координаты точек.

Кроме того, программа производит центрирование рабочего графического окна в текущую проверяемую точку или в точку пересечения на отрезке и отмечает эту точку значком .

Поэтому желательно, чтобы окно диалога не закрывало центральную часть рабочего графического окна.

Если использовать колесико мыши, то можно изменять масштаб изображения в рабочем графическом окне (но если в окне диалога активным будет элемент с количеством знаков после точки, который сам использует сообщения от колесика мыши, то изменения масштаба не произойдет).

 

 

Рассмотрим подробнее сообщения об ошибках и возможные действия пользователя для разных видов близких точек.

То, что было описано выше для поиска при автоматической корректировке близких точек справедливо и для поиска одной ошибки.

 

 

Точки внутри полилиний.

Найдены две близких точки внутри одной полилинии.

Можно выбрать один из двух вариантов действий - либо "Координаты точек не менять, искать следующие близкие точки", либо "Две близких точки заменить на одну точку с заданными координатами, затем искать следующие близкие точки".

 

Обратим внимание на то, что в группе элементов "Координаты, которые присвоить найденным близким точкам" программа записала координаты точки, находящейся между двумя близкими точками, что можно проконтролировать по таблице, в которой выведены координаты найденных близких точек. Если бы одна из точек находилась в начале или в конце полилинии, то программа предлагала бы координаты такой крайней точки.

 

Если по каким-то причинам пользователя не устраивают предлагаемые координаты, то можно их изменить.

 

 

 

Точки начал / концов полилиний относительно точек начал / концов других полилиний.

Начало полилинии 1238 близко (2D расстояние = 0.024515м) к концу полилинии 1237.

Действия - примерно как в предыдущем случае.

 

 

 

Здесь близкими являются 3 точки, причем разница между максимальным и минимальным значением Z превышает заданное значение 0.2м.

Поэтому программа не заполняет элемент диалога "Z=" с предлагаемой координатой Z.

 

Для заполнения элемента диалога "Z=" можно выполнить одно из трех действий :

1. Ввести значение координаты Z вручную.

2. Сделать активной клетку с каким-либо значением Z в таблице и произвести двойное нажатие на левую клавишу мыши - выбранное значение перепишется из клетки таблицы в элемент диалога "Z=".

3. Выделить несколько подряд идущих значений Z в таблице, нажать правую клавишу мыши и выбрать пункт всплывающего меню "Вычислить и записать среднее значение Z" :

После того, как элемент со значением Z заполнен, можно производить изменение координат близких точек.

 

 

 

 

Точки внутри полилиний относительно точек начал / концов других полилиний.

В дополнению к тому, что было описано выше, здесь можно видеть, что имеется не 2, а 3 возможных варианта действия.

Действие по первой кнопке (без редактирования) совпадает с предыдущими случаями.

А вот редактирование возможно либо с разделением полилинии, внутри которой находится близкая точка, либо без разделения, а только с корректировкой координат этой точки.

 

 

 

Точки начал / концов полилиний относительно отрезков других полилиний.

В отличие от описанных выше случаев, программа предлагает заменить точку начала полилинии не на среднюю точку, а на точку, лежащую на отрезке (на красной полилинии) и получающуюся при продлении синей полилинии до пересечения с красной.

 

 

 

 

Следует обратить внимание на то, что автоматической корректировкой точек начал/концов полилиний, близких к отрезкам других полилиний и точек внутри полилиний, близких к точкам начал/концов других полилиний необходимо пользоваться осторожно, так как ликвидация одних ошибок может породить другие ошибки.

В примере, показанном на следующем рисунке программа не нашла близких начал/концов полилиний, т.к. расстояние между ними оказалось больше заданного, но нашла точку начала полилинии, близкую к отрезку полилинии.

Если произвести добавление точки в полилинию 1039 (красную), разделение этой полилинии на две самостоятельных полилинии, а также перемещение конца полилинии №1040 (синей штриховой) в добавленную точку, то в результате одна из красных полилиний получится довольно-таки короткой, что вряд ли можно считать правильным. В данном конкретном случае лучше закрыть диалог и вручную отредактировать полилинии находясь в графическом режиме (либо увеличить расстояние, которое определяет, являются ли точки близкими).

 

 

 

 

Ошибки, которые встречаются в файлах с полилиниями, весьма разнообразны и невозможно исправить все их в автоматическом режиме.

Кроме описываемого режима по поиску и корректировке близкорасположенных точек полилинии, в DIGIMINE имеется возможность проверки полилиний, в котором производится поиск ошибок разных видов.

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