Помогите написать макрос
pavgrig / 12.01.2012, 19:57/00:41
Форум:
Версия программы:
14.0.0.701 (sp2)
Задача такая. Рисунок состоит из множества горизонтальных кривых. Нужно чтобы макрос делал реверс для всех линий, которые находятся на четных или нечетных строчках. Под "реверсом" я имею в виду функцию, которая в русской версии называется "Обращение направления кривой для выбранных фрагментов".
Буду очень признателен за помощь.
Не совсем понятно что имелось виду под "реверсом", возможно это
Curve.ReverseDirection
Ну вероятно это и есть "обращение направления кривой". В общем нужно чтобы кривая осталась на своем месте, а начальная и конечная точки поменялись местами.
Как вариант, четные кривые можно просто развернуть на 180 градусов.
Это я как раз и хочу сделать. Команда 'реверс' как раз и меняет направление на 180 градусов. Вопрос в том, что я никогда не сталкивался с написанием макросов в кореле. А вообще по логике надо чтобы макрос мог определить и выбрать четные кривые и применить к ним команду реверса. Вроде несложно, но как составить код я не знаю. Буду признателен за вашу помощь.
Такую ерунду вполне можно сделать очень быстро и без макроса.
Мне приходилось резать много узких полосок для оклейки карманов на стендах и процесс подготовки всегда занимал не больше минуты.
Сначала рисуете первую прямую горизонтальную линию.
Затем дублируете ее вниз на заданную ширину полоски. Для проверки можно даже выделить ее другим цветом. Скопированную линию просто переворачиваем на 180 градусов, выделяем теперь уже обе линии и группируем. Далее дублируем вниз на удвоенную ширину полоски. Если вы пользователь X5-го Корела, то можно сразу выставить количество копий в докере трансформации, если других версий - повторяем копирование, нажав и удерживая Ctrl-R. После этого можно выделить всю эту кучу сгруппированных полосок и расгруппировать.
Ну это если Вы только квадратики рисуете. А если например текст или более сложный рисунок, то так не получится сделать.
Вам надо змейкой фрезу пустить? Так циклом их обработайте с шагом 2
iE = ActiveLayer.Shapes.Count ' это если надо все линии на листе обработать, а иначе надо задавать все Shapes, например, например, в активном выделении (или по каким еще признакам)
For i = 1 To iE Step 2
ActiveLayer.Shapes(i).Curve.ReverseDirection ' (саму команду я не проверяла, как Санчо написал, пишу)
Next i
Это все