Странный глюк. Некомбинируемая группа объектов.

Форум: 

В приложенном файле 5 совсем простых объектов. Вместе они составляют лого хундая. Однако, нормально скомбинировать их не получается - при комбинировании дырки не вырезаются из фона, а закрашиваются тем же цветом. То же самое получается и при использовании логических операций (Trim, Minus ...) Что в этих овальчиках не так, где скрытая засада? У меня получилось правильно объединить их только через задний проход, создав Boundary от каждогою :-(

Это не глюк, по крайней мере, не программы :D
Просто надо поменять направление (Reverse direction) внешней кривой.

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

Надо ж, и впрямь работает! Все перепробовал а до направления кривой не дошел.

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

Ну все равно я считаю, что это недоработка программы. Неужели, они не могут такие вещи на автомате отслеживать при комбинировании и логических операциях?

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

На самом деле, чисто математически никаких проблем нет, если использовать метод even-odd rule
http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE...
По всей логике,он и должен применяться, но они почему-то используют winding rule :-(

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

Да какая разница, она то разворачивает многоугольник построчно именно этими алгоритмами.
Кстати, направление обхода критично только на непересекающихся контурах. На пересекающихся она раскладывает как надо even-odd

Хлопцы, чтоб вы знали, CorelDRAW поддерживает два режима заливки: Alternate и Winding. Так вот Winding это тот самый режим в котором "прорези" тоже имеют заливку. Вот макрос который меняет режим заливки на противоположный:

Sub ChangeFillMode()
  If ActiveSelectionRange.Count = 0 Then Exit Sub
  Dim s As Shape
  For Each s In ActiveSelectionRange
    If s.CanHaveFill Then
      If s.Fill.Type <> cdrNoFill Then
        If s.FillMode = cdrFillAlternate Then _
          s.FillMode = cdrFillWinding Else _
          s.FillMode = cdrFillAlternate
      End If
    End If
  Next
End Sub

Страницы