[CDR X4 и ранее] Артефакт с замыканием кривой

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Во вложении файл с кривой. Проблема в том, что она не замыкается:
1) при перемещении последнего узла в позицию первого вместо схлопывания перемещаемый узел толкает первый
2) В докере "Свойства объекта" - вкладка "Кривая" - галка "Замыкать кривую" галка установлена и не снимается

Очистка трансформации проблему не решает. Никакие эффекты не применяются.
При создании новых кривых проблем не наблюдается.

https://forum.rudtp.ru/resources/corel-x3-artefakt-s-zamykaniem-krivoj.2338/download?version=2521
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
при перемещении последнего узла в позицию первого вместо схлопывания перемещаемый узел толкает первый
Зато первый превосходно переносится к последнему и фигура схлопывается
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Зато первый превосходно переносится к последнему и фигура схлопывается
Проверил ещё раз: ни первый к последнему, ни последний к первому не пристыковываются. Только толкают
Проверил и в тестовом файле (который прикрепил), и в рабочем файле.

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

P.S. Могу предположить, что окрываете вы файл в Corel X6. У меня в данный момент X3
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
У меня в данный момент X3
На X3 последовательность иная - чтобы разомкнуть данный объект достаточно выделить его и нажать Weld
Данный способ работает и на X6
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
На X3 последовательность иная - чтобы разомкнуть данный объект достаточно выделить его и нажать Weld
Видимо, под Weld вы подразумеваете некую комбинацию клавиш, объединяющую/разъединяющую кривую.
Если так, то в X3 у команды "Упорядочить - Закрыть путь" комбинация клавиш отсутствует. Более того, при выделение сабжевого объекта этот пункт (набор команд) неактивен.
 
Последнее редактирование:

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
Попробовал в Х7 - там вообще открылось с ЗАМКНУТОЙ кривой из трёх узлов
Попробовал в Х5 - эффект тот же, что и вы описали.
Открыл докер Properties - закладка Curve - снял галку Close Curve. Все стало вменяемым.
Х3 к сожалению нет. Уже нет
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Видимо, под Weld вы подразумеваете некую комбинацию клавиш, объединяющую/разъединяющую кривую.
Ну вот только не надо притворяться, что вы не знаете что такое Weld
В русской версии Формирование-Объединение
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Если вы заводили этот топик дабы раскрыть секрет фокуса - он в том, что данная фигура - мутант, у нее на четыре Node всего три Segments
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Попробовал в Х5 - эффект тот же, что и вы описали.
Открыл докер Properties - закладка Curve - снял галку Close Curve. Все стало вменяемым.
Х3 к сожалению нет. Уже нет
Успешно сняли галку "Close Curve" в X5 ?
В то же время вы пишете, что "в Х5 - эффект тот же, что и вы описали"
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Ну вот только не надо притворяться, что вы не знаете что такое Weld
Во-первых, у меня русскоязычный Corel.
Во-вторых, у меня рисует робот, не человек. Он-то уж точно знает, но мне не говорит...

В русской версии Формирование-Объединение
Вот этот способ работает. Артефакт устраняет.

данная фигура - мутант, у нее на четыре Node всего три Segments
Так кривая разомкнута. Поэтому 3 сегмента.
Если замкнуть, будет 4 сегмента.
 
Последнее редактирование:

dastin

Некромант-любитель
12 лет на форуме
Сообщения
2 145
Реакции
2 043
да .. про галку вы правы - но узлы перемещаются вместе - это я имел в виду
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Мало ли что там на уровне свойств у артефактной кривой творится.
На уровне интерфейса кривая ведёт себя как разомкнутая и наличие у неё при этом 3 сегментов вполне соответствует этому поведению. Здесь скорее, свойство "Closed" имеет некорректное значение, не соответствующее поведению кривой на уровне интерфейса.
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Попробовал в Х7 - там вообще открылось с ЗАМКНУТОЙ кривой из трёх узлов
В прошлом году ради интереса пробовал открыть свой файл в новом Corel 2017 - там почти все ромбы превратились в треугольники. Разбираться не стал. Сейчас понятно, в чём дело. Эти ромбы - незамкнуты (одно из рёбер визуализируется за счёт заливки) и с тем же самым артефактом, что в сабже рассматривается. Поэтому и исчезло это самое ребро.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Мало ли что там на уровне свойств у артефактной кривой творится.
На уровне интерфейса кривая ведёт себя как разомкнутая и наличие у неё при этом 3 сегментов вполне соответствует этому поведению. Здесь скорее, свойство "Closed" имеет некорректное значение, не соответствующее поведению кривой на уровне интерфейса.
Ну если вам так проще, то пусть будет так. В любом случае, порочность данного контура заключается в том, что в его реализации свойство Closed установлено, но замыкающий сегмент отсутствует. По хорошему бы, надо, чтобы корел ругался уже при открытии подобного файла, но почему то каждая версия считает эту проблему устранимой и устраняет по своему, являя в итоге такое чудо. Последние версии, как я понимаю, просто выбрасывают лишний узел, но почему то создать замыкающий сегмент никто не пытается. Возможно, потому что для его создания данных мало.
 

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
В любом случае, порочность данного контура заключается в том, что в его реализации свойство Closed установлено, но замыкающий сегмент отсутствует.
Тот факт, что при выполнении этого самого Wend кривая оказывается разомкнутой (и уже без артефакта), можно сделать вывод, что некорректным является не отсутствие замыкающего сегмента, а значение свойства [Closed = True], которое исправляется в значение [False]
(Здесь не совсем понятно, почему команда объединения доступна для одного объекта.)

На X3 последовательность иная - чтобы разомкнуть данный объект достаточно выделить его и нажать Weld. Данный способ работает и на X6
В данном случае создаётся новый объект с теми же самыми свойствами и геометрией (фактически, выполняется дублирование с удалением оригинала), но уже без артефакта. А поскольку создаётся новый объект, то данный способ имеет побочные эффекты. Например, изменение StaticId (если в документе установлена связь объектов по идентификаторам, то все эти связи "полетят")
 
Последнее редактирование:

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Другой (программный) способ устранения сабжевого артефакта, не имеющий побочных эффектов:
Код:
shape.Curve.Closed = False  'размыкание кривой с одновременным устранением артефакта (кривая становится корректно разомкнутой)
shape.Curve.Closed = True   'корректное замыкание кривой
Процедура, которая среди выделенных объектов ищет глючные замкнутые кривые и ремонтирует их (корректно замыкает):
Код:
'Ремонт замкнутых кривых
Sub curveCloseRepair()
    If (ActiveSelectionRange.count = 0) Then
        MsgBox "Выделите одну или несколько кривых и повторите операцию."
        Exit Sub
    End If
    ActiveDocument.BeginCommandGroup ("curveCloseRepair")
    Dim settPs As Boolean: settPs = Application.ActiveDocument.PreserveSelection: Application.ActiveDocument.PreserveSelection = False
    Dim settEe As Boolean: settEe = Application.EventsEnabled: Application.EventsEnabled = False
    Dim settOp As Boolean: settOp = Application.Optimization: Application.Optimization = True

    Dim selectedShRange As ShapeRange: shape0 As shape
    Set selectedShRange = ActiveSelectionRange: ActiveSelectionRange.RemoveFromSelection 

    For Each shape0 In selectedShRange.Shapes
        If (shape0.Type = cdrCurveShape) Then
            If (shape0.Curve.Closed) Then
                shape0.Curve.Closed = False  'размыкание кривой с одновременным устранением артефакта (кривая становится корректно разомкнутой)
                shape0.Curve.Closed = True   'корректное замыкание кривой
            End If
        End If
    Next
    selectedShRange.CreateSelection
    Application.ActiveDocument.PreserveSelection = settPs
    Application.EventsEnabled = settEe
    Application.Optimization = settOp
 
    Application.Refresh
    ActiveDocument.EndCommandGroup
End Sub
И после такого ремонта документ уже можно открывать в новых версиях Corel
 
Последнее редактирование: