<< Нажмите, чтобы обновить оглавление >> Навигация: Общие принципы построений > Проверка элементов на дублирование |
В ТИМ КРЕДО существует понятие дублирования элементов. Это явление происходит, если в процессе построения элементов один элемент целиком или полностью накладывается на ранее созданный элемент, т. е. дублируется с существующим. Наличие дублирующихся элементов может привести к некорректному поведению данных.
Во избежание такой некорректности в процессе выполнения геометрических построений выполняются проверки по критериям дублирования примитивов и полилиний, свободных либо несвободных от построений.
Если выполняется критерий дублирования примитивов, то новый элемент не создается и выдается соответствующее сообщение. Если выполняется критерий дублирования полилиний, то происходит удаление одной из полилиний.
Критерии дублирования полилиний:
•полилинии лежат на одних и тех же примитивах;
•начало и конец одной полилинии находятся в пределах другой полилинии (полилинии полностью совпадают или совпадают частично, т. е. одна является сегментом другой);
Приоритеты удаления при дублировании:
•из двух полилиний всегда удаляется более короткая полилиния;
•при полном совпадении длин двух полилиний возможны варианты:
–удаляется "старая" полилиния, если обе полилинии свободны или несвободны от построений;
–удаляется свободная полилиния, если только одна полилиния свободна от построений;
•если маска лежала на удаляемой полилинии, то после удаления она "падает" на оставшуюся полилинию;
•при конфликте двух масок одного типа в одном слое – новая маска сохраняется неизменной, а "старая" маска разрезается.
Различные ситуации и правила удаления полилиний приведены в таблице:
Полилиния 1 (ПЛ1) и полилиния 2 (ПЛ2) свободны от построений: •если ПЛ1 = ПЛ2, то будет удалена "старая" полилиния; •если ПЛ1 < ПЛ2, то будет удалена ПЛ1 |
|
---|---|
Свободна от построений только одна полилиния: •если ПЛ1 = ПЛ2, то будет удалена свободная полилиния; •если ПЛ1 < ПЛ2, то будет удалена ПЛ1 Если маска лежала на удаляемой полилинии, то после удаления она "падает" на оставшуюся полилинию. |
|
Есть маски разных типов на обеих полилиниях: •если ПЛ1 = ПЛ2, то будет удалена "старая" ПЛ; •если ПЛ1 < ПЛ2, то будет удалена ПЛ1 Маска, лежащая на удаляемой полилинии, "падает" на оставшуюся полилинию. |
|
Есть маски одного или разных типов на обеих ПЛ в разных слоях: •если ПЛ1 = ПЛ2, то будет удалена "старая" ПЛ; •если ПЛ1 < ПЛ2, то будет удалена ПЛ1 Маска "падает" на оставшуюся полилинию. Маски остаются в своих слоях. |
|
Есть не перекрывающиеся маски одного типа на обеих ПЛ в одном слое: •если ПЛ1 = ПЛ2, то будет удалена "старая" ПЛ; •если ПЛ1 < ПЛ2, то будет удалена ПЛ1. Маска, лежащая на удаляемой полилинии, "падает" на оставшуюся полилинию. Маски остаются неизменными. |
|
Есть перекрывающиеся маски одного типа на обеих ПЛ в одном слое: •если ПЛ1 = ПЛ2, то будет удалена "старая" ПЛ; •если ПЛ1 < ПЛ2, то будет удалена ПЛ1. Маска "падает" на остающуюся ПЛ и удаляет нижнюю маску по условию удаления масок. |