CDX3: как сделать окантовку для наконечника кривой ?

  • Автор темы Автор темы Cyrax
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Cyrax

Топикстартер
10 лет на форуме
Сообщения
588
Реакции
4
Corel Draw X3.
Есть чёрная кривая с наконечником (стрелка). Необходимо сделать для неё белую окантовку. Причём не только вокруг линии (кривой), но и вокруг самого наконечника. Контур формируется только вокруг кривой и наконечник игнорирует, т.е. наконечник остаётся без окантовки. Если же стрелку превратить в символ, то этому спецсимволу уже нельзя будет задать outline (при задании параметров outline'а для такого символа outline не появится).
Единственный вариант - создание такой же стрелки цвета окантовки и чуть большего размера и группировка полученных двух стрелок. Но в этом случае имеются 2 проблемы:
1. Вторая стрелка выступает из-за первой в разных местах на разное расстояние, т.е. визуально "окантовка" в разных местах стрелки будет иметь разную толщину
2. Нельзя будет работать с группой как с одиночной стрелкой, в частности, менять толщину и форму кривой
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Какой-то взрыв мозга...
А что мешает сделать Convert Outline To Object и работать со стрелкой как с единым объектом с наконечником?
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Необратимый процесс. И в общем случае наклон такой "стрелки" программно определить не получится.
Макрос должен иметь возможность:
1. Определять наклон стрелки
2. Менять двустороннюю стрелку на одностороннюю и наоборот
В случае с об_ектом это всё сделать можно, но ооооочень трудоёмко.
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?


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

Сперва вам нужно было окантовку вокруг стрелки, причем стрелка была на конце кривой и почему-то должна была в символ преобразовываться. Теперь выясняется, что на самом деле стрелка прямая и нужен уже ее наклон (в градусах? зачем???), да еще и макрос для этого писать. Двустороннюю стрелку на одностороннюю вам тоже, почему-то трудоемко менять, хотя это делается элементарно, и вообще к теме никакого отношения не имеет.
Может я чего-то недопонимаю и вам вообще не в кореле надо работать, а какую-то собственную программу под свои задачи написать?
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

У Вас что-то в кашу всё перемешалось.

причем стрелка была на конце кривой
Стрелка всегда была прямой. Под "кривой" я имел ввиду Curve.

и почему-то должна была в символ преобразовываться.
Стрелка не должна в символ преобразовываться. Это я рассмотрел один из вариантов создания окантовки вокруг стрелки и наконечника: преобразовываем стрелку в спецсимвол и создаём outline (как у обычных символов). Проблема оказалась в том, что у таких спецсимволов outline создать нельзя.

Теперь выясняется, что на самом деле ... нужен уже ее наклон (в градусах? зачем???)
В градусах или в радианах - без разницы. Угол наклона нужно знать для того, чтобы макрокод мог разместить стрелку вдоль текста, к которому она имеет отношение (стрелки у меня размещаются над текстом - аналог надчёркивания, но в виде стрелки)

да еще и макрос для этого писать.
Имеется надпись и с десяток произвольно ориентированных стрелок, имеющих разную длину. Нужно все эти стрелки ориентировать вдоль текста (над текстом) на определённом расстоянии от него + задать им фиксированную длину. Макросом эти операции выполняются за долю секунды, вручную - гемор сплошной, особенно если таких надписей со стрелками куча.

Двустороннюю стрелку на одностороннюю вам тоже, почему-то трудоемко менять, хотя это делается элементарно
Элементарно делается в отношении с Curve с наконечником. Но речь шла о Curve, преобразованной в обьект (Вы же сами предложили этот способ). И чтобы такую двустороннюю стрелку-об_ект поменять на одностороннюю, нужно вначале распознать в об_екте стрелку, т.е. определить, какие узлы за какие фрагменты стрелки-об_екта отвечают.

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

P.S. Не было бы никаких проблем, если бы в Corel'е реализовали окантовку не только вокруг Curve, но и вокруг наконечников (опционально), а также реализовали бы надчёркивание в виде стрелок. имхо, элементарная функциональность.
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Опять вы пытаетесь бежать впереди паровоза. Я так понимаю, это имеет отношение к вашему топику в разделе автоматизация? Вы что, уже придумали макрос, который стрелки над буквами размещает и вам осталось только заливки им присобачить? По моему, там тупик уже на самом первом этапе, а стрелки сделать - никакой проблемы как раз нет.
Если стрелка прямая, то угол наклона считается элементарно, даже если стрелка в кривую вместе с наконечником преобразована (подумайте хорошо).
Теперь вопрос - если у вас уже есть макрос, который размещает преобразованную в кривые стрелки вокруг текста - то нафига тогда стрелки распознавать как таковые? Проще их просто заново макросом ставить в нужные места уже как двусторонние и не морочить себе и людям голову.
И, повторяю - как вы решили главный вопрос - положение букв внутри текстового фрагмента?
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Макрос написал, но в компромиссном варианте (об этом позже и в той теме).

Если стрелка прямая, то угол наклона считается элементарно, даже если стрелка в кривую вместе с наконечником преобразована
Если Вы имеете ввиду ориентированность вдоль стрелки первого и последнего узла, то это не так. У меня для двусторонней стрелки они ориентированы вдоль, для односторонней - поперёк. Как в других случаях - не знаю.
В любом случае, терять линию с наконечником крайне нежелательно. Т.к. должна быть возможность изменения размера и формы наконечника.
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Зачем вам вообще определять по стрелке угол наклона, если вы сами их скриптом рисуете? Просто запоминайте где нарисована стрелка и под каким углом. Тогда и наконечник выбирать можно будет каждый раз новый и с нужной стороны.
И в чем компромис заключается?
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Скриптом я их не рисую. Скрипт корректирует и размещает уже существующие стрелки.

Просто запоминайте где нарисована стрелка и под каким углом.
Имеете ввиду поле "tag" ?
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Ничего не понимаю. А что мешает их скриптом рисовать сразу с углами, обводками и наконечниками?
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Количество и тип стрелок (односторонняя или двустороння) не определяется однозначно содержимым текста и зависит от других факторов, которые известны только оператору. Т.е. скрипт, даже проанализировав текст, не сможет определить, сколько и каких стрелок нужно создать.
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Все страньше и страньше...
Это что ж, получается, оператор сам рисует какое-то количество разных стрелок руками, а скрипт по какому-то непостижимому алгоритму их по местам расставляет, да еще и наконечники с обводками приделывает?
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Изврат конечно, а белая тень не поможет?
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Это что ж, получается, оператор сам рисует какое-то количество разных стрелок руками, а скрипт по какому-то непостижимому алгоритму их по местам расставляет, да еще и наконечники с обводками приделывает?
Всё так. Только наконечники с обводками уже имеются у стрелок (они у всех стрелок одинаковые). Скрипт расставляет их вдоль текста и рядом с текстом и далее позволяет менять направление и длину каждой стрелки. Т.е. цвет, тип наконечника и ширину окантовки скрипт не трогает.
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

А зачем такой изврат? Почему бы не сделать чтобы скрипт сам эти стрелки не рисовал в нужных местах, тем более, это проще?
Или оператор находит некое мазохистское удовольствие в самостоятельном рисовании кучи стрелок с обводками?
Еще, я не понял фразу "далее позволяет менять направление и длину каждой стрелки". Кому позволяет менять и зачем? Опять же, повторяю, вы что, хотите сделать из корела некое интерактивное приложение?
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

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

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

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

а белая тень не поможет?
Хоть и окружает наконечник, в отличие от контура, но всё равно не то. Границы тени нечёткие. Да и для того, чтобы тень отстояла от границ стрелки, нужно сделать размытие.
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Потому что скрипту неизвестно, в каких местах вдоль текста они должны располагаться.
Опять вернулись к тому с чего начали... То есть, все таки не скрипт, а оператор стрелки на места ставит?
Достаточно одной готовой стрелки. Далее создаём нужное количество экземпляров (уже есть такая кнопка) и размещаем их вдоль текста (вторая кнопка).
Опять наоборот :-( Вы же только что сказали, что сам оператор стрелки расставляет - теперь говорите, что скрипт кнопкой...
Далее уже корректируем длину и направление каждой стрелки.
А длину и направление тоже только оператор задать может?
Оператору. Для того, чтобы можно было точно задавать одинаковые длины выбранным стрелкам без изменения относительного положения над текстом, чтобы можно было задавать нужное направление стрелки одним щелчком, чтобы можно было смещать стрелки влево/вправо, сохраняя расстояние до текста.
Как, однако, все сложно у вас получается... Ну тогда сделайте редактирование в каркасном виде (без обводок). А потом отдельную кнопку "Создать из линии стрелку с обводкой"
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

То есть, все таки не скрипт, а оператор стрелки на места ставит?
Стрелки вдоль текста расставляет скрипт, а оператор затем смещает их как нужно в горизонтальном направлении (горизонтальное - это вдоль направления текста).

А длину и направление тоже только оператор задать может?
Да.

Ну тогда сделайте редактирование в каркасном виде (без обводок). А потом отдельную кнопку "Создать из линии стрелку с обводкой"
Зачем это нужно, когда стрелки уже готовые есть, с обводкой.
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Зачем это нужно, когда стрелки уже готовые есть, с обводкой.
Толку с них готовых, если их интерактивно ни расширять, ни удлиннять ни концы им приделывать нельзя.
Я, например, представляю это так - выделяете стрелку, жмете на кнопку - она превращается в каркас, редактируете ее, наконечники меняете, длину и т.д. затем на кнопку - она становится нормальной стрелкой с обводкой.
Хотя, конечно, это все мазохизм чистейшей воды. Нафига скрипт, если все руками делать приходится?
 
Ответ: CDX3: как сделать окантовку для наконечника кривой ?

Толку с них готовых, если их интерактивно ни расширять, ни удлиннять ни концы им приделывать нельзя.
"Интерактивно" - имеете ввиду перемещением узлов ? Если таким способом менять длину, то будет смещаться центр стрелки + её наклон. Позицию центра и наклон придётся сохранять "на глаз", что очень неудобно. К тому же все эти операции выполнять дольше, чем нажать пару раз кнопку.

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

затем на кнопку - она становится нормальной стрелкой с обводкой
А если длину и направление стрелки придётся менять после того, как превратим стрелку в об_ект с заливкой ?

это все мазохизм чистейшей воды
Это называется автоматизация. В данном случае она сильно упрощает и ускоряет процесс работы со стрелками.
 
Статус
Закрыто для дальнейших ответов.