Проверка элементов на дублирование

<< Нажмите, чтобы обновить оглавление >>

Навигация:  Общие принципы построений >

Проверка элементов на дублирование

В ТИМ КРЕДО существует понятие дублирования элементов. Это явление происходит, если в процессе построения элементов один элемент целиком или полностью накладывается на ранее созданный элемент, т. е. дублируется с существующим. Наличие дублирующихся элементов может привести к некорректному поведению данных.

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

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

Критерии дублирования полилиний:

полилинии лежат на одних и тех же примитивах;

начало и конец одной полилинии находятся в пределах другой полилинии (полилинии полностью совпадают или совпадают частично, т. е. одна является сегментом другой);

Приоритеты удаления при дублировании:

из двух полилиний всегда удаляется более короткая полилиния;

при полном совпадении длин двух полилиний возможны варианты:

удаляется "старая" полилиния, если обе полилинии свободны или несвободны от построений;

удаляется свободная полилиния, если только одна полилиния свободна от построений;

если маска лежала на удаляемой полилинии, то после удаления она "падает" на оставшуюся полилинию;

при конфликте двух масок одного типа в одном слое – новая маска сохраняется неизменной, а "старая" маска разрезается.

Различные ситуации и правила удаления полилиний приведены в таблице:

06_Metodology_06_01_Geometry_Geometry_img_double1

Полилиния 1 (ПЛ1) и полилиния 2 (ПЛ2) свободны от построений:

если ПЛ1 = ПЛ2, то будет удалена "старая" полилиния;

если ПЛ1 < ПЛ2, то будет удалена ПЛ1

06_Metodology_06_01_Geometry_Geometry_img_double2

Свободна от построений только одна полилиния:

если ПЛ1 = ПЛ2, то будет удалена свободная полилиния;

если ПЛ1 < ПЛ2, то будет удалена ПЛ1

Если маска лежала на удаляемой полилинии, то после удаления она "падает" на оставшуюся полилинию.

06_Metodology_06_01_Geometry_Geometry_img_double3

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

если ПЛ1 = ПЛ2, то будет удалена "старая" ПЛ;

если ПЛ1 < ПЛ2, то будет удалена ПЛ1

Маска, лежащая на удаляемой полилинии, "падает" на оставшуюся полилинию.

06_Metodology_06_01_Geometry_Geometry_img_double4

Есть маски одного или разных типов на обеих ПЛ в разных слоях:

если ПЛ1 = ПЛ2, то будет удалена "старая" ПЛ;

если ПЛ1 < ПЛ2, то будет удалена ПЛ1

Маска "падает" на оставшуюся полилинию. Маски остаются в своих слоях.

06_Metodology_06_01_Geometry_Geometry_img_double5

Есть не перекрывающиеся маски одного типа на обеих ПЛ в одном слое:

если ПЛ1 = ПЛ2, то будет удалена "старая" ПЛ;

если ПЛ1 < ПЛ2, то будет удалена ПЛ1.

Маска, лежащая на удаляемой полилинии, "падает" на оставшуюся полилинию. Маски остаются неизменными.

06_Metodology_06_01_Geometry_Geometry_img_double6

Есть перекрывающиеся маски одного типа на обеих ПЛ в одном слое:

если ПЛ1 = ПЛ2, то будет удалена "старая" ПЛ;

если ПЛ1 < ПЛ2, то будет удалена ПЛ1.

Маска "падает" на остающуюся ПЛ и удаляет нижнюю маску по условию удаления масок.