Как создать кнопку copy

Статус
Закрыто для дальнейших ответов.

Altis

Участник
Топикстартер
Сообщения
7
Реакции
0
Необходимо сделать кнопку для быстрого копирования на определенное расстояние любого выделенного объекта. Пробовал с помощью макроса, но он работает только с конкретными кривыми, а мне надо копировать разный дизайн. Может кто силен в макросах и знает как вместо имени кривой (varname), написать переменное имя.
Может можно вообще по другому такую кнопку сделать?
 

grreg

Участник
Сообщения
1 382
Реакции
1
Ответ: Как создать кнопку copy

Altis сказал(а):
Необходимо сделать кнопку для быстрого копирования на определенное расстояние любого выделенного объекта. Пробовал с помощью макроса, но он работает только с конкретными кривыми, а мне надо копировать разный дизайн. Может кто силен в макросах и знает как вместо имени кривой (varname), написать переменное имя.
Может можно вообще по другому такую кнопку сделать?
Ctrl+D, как мне надоело ограничение на 10 символов в ответе!!!!!
 

Altis

Участник
Топикстартер
Сообщения
7
Реакции
0
Ответ: Как создать кнопку copy

Открываю документ, выделяю объекты и копирую на 59 мм вниз, или выделяю другие другие объекты и копирую вправо на 90,6 мм. По работе постоянно требуется такое копирование.
И чего ругаться, надо внимательней читать вопрос.
 

Dingo

Участник
Сообщения
15
Реакции
0
Ответ: Как создать кнопку copy

А arrange-transformations-position (alt+f7) юзить не судьба?
 

svlasov

Администратор
20 лет на форуме
Сообщения
2 225
Реакции
4 932
Ответ: Как создать кнопку copy

grreg сказал(а):
Ctrl+D бля, как мне надоело ограничение на 10 символов в ответе!!!!!
Fixed. Теперь не меньше трех символов. :)
 

Altis

Участник
Топикстартер
Сообщения
7
Реакции
0
Ответ: Как создать кнопку copy

Dingo сказал(а):
А arrange-transformations-position (alt+f7) юзить не судьба?
Да что вы меня прописным истинам учите. Мне надо копирование делать периодически, в промежутках между созданием макетов. Нарисовал макет, скопировал, изменил копию, скопировал и т.д.
 

Dingo

Участник
Сообщения
15
Реакции
0
Ответ: Как создать кнопку copy

Altis сказал(а):
Да что вы меня прописным истинам учите. Мне надо копирование делать периодически, в промежутках между созданием макетов. Нарисовал макет, скопировал, изменил копию, скопировал и т.д.

и чем вам position не угодил?
как раз копирование на заданное растояние выделенного обьекта.
 

Altis

Участник
Топикстартер
Сообщения
7
Реакции
0
Ответ: Как создать кнопку copy

Dingo сказал(а):
и чем вам position не угодил?
как раз копирование на заданное растояние выделенного обьекта.
Да мне не нравится, что там надо ручками набирать, ведь мне надо то в сторону то в верх или вниз копировать, а ведь при открытии нового документа или самого корела, все сбрасывает
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: Как создать кнопку copy

Сайт по скриптингу для корела это www.oberonplace.com (на английском конечно).

Я правда не понял чем то что вы хотите отличается от того что можно в докере Transformation с кнопкой Apply to duplicate, но если отличается, вы получше опишите ТЗ и я вам запросто накатаю скрипт на VBA.

Собственно я было его уже накатал, но когда посмотрел на его форму понял что от того самого докера он не отличается.
 

Altis

Участник
Топикстартер
Сообщения
7
Реакции
0
Ответ: Как создать кнопку copy

Я хочу повесить 4 кнопки в кореле для копирования объектов по х=+90 и -90 мм, по у=+59 и -59 мм.
 

lev

Модератор
20 лет на форуме
Сообщения
2 142
Реакции
2 066
Ответ: Как создать кнопку copy

Sub dup90()
ActiveDocument.Unit = cdrMillimeter
ActiveDocument.Selection.Duplicate 90, 0
End Sub

и т.д. и т.п.
 

Altis

Участник
Топикстартер
Сообщения
7
Реакции
0
Ответ: Как создать кнопку copy

lev сказал(а):
Sub dup90()
ActiveDocument.Unit = cdrMillimeter
ActiveDocument.Selection.Duplicate 90, 0
End Sub

и т.д. и т.п.
Огромное спасибо, все оказывается очень просто, я ведь знал, что истина где-то рядом. Теперь поробую это дело на кнопку повесть. :D (если вспомню как)
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: Как создать кнопку copy

Понятно. То есть, для нескольких фиксированных значений.

В аттаче - зип-файл с gms-файлом. У вас в Кореле должен быть установлен VBA. Если не установлен - установите. После этого скопируйте файл Dup.gms в папку C:\Program Files\Corel\Corel Graphics 11\Draw\GMS Запустите Корел, скомандуйте Tool > Customization, там выберите Commands > Macros, и там вы увидите список макросов которые вы можете включить в интерфейс программы. Среди них будут и нужные вам:

Duplicating.QuickDup.Duplicate90Plus
Duplicating.QuickDup.Duplicate90Minus
Duplicating.QuickDup.Duplicate59Plus
Duplicating.QuickDup.Duplicate59Minus

Теперь вы можете выбрать для них иконки и перетащить эти иконки на какой-нибудь тул-бар, на новый, например.

Но, нафига мучить ж если нужно думать головой - просто назначьте этим макросам шорт-каты, там же, в том же диалоге, и все. И вызывайте их по ним, например Ctrl+9 & Ctrl+Alt+9 - 90 и -90, Ctrl+5 & Ctrl+Alt+5 - 59 и -59.

Исходный текст можете посмотреть в редакторе VBA - Ctrl+F11.

Вот он:

Код:
Option Explicit

Sub Duplicate90Plus()
    Call myDuplicate(90, 0, cdrMillimeter)
End Sub

Sub Duplicate90Minus()
    Call myDuplicate(-90, 0, cdrMillimeter)
End Sub

Sub Duplicate59Plus()
    Call myDuplicate(0, 59, cdrMillimeter)
End Sub

Sub Duplicate59Minus()
    Call myDuplicate(0, -59, cdrMillimeter)
End Sub

Private Sub myDuplicate(dupX As Double, dupY As Double, cUnit As CorelDRAW.cdrUnit)
Dim cdApp As New CorelDRAW.Application
Dim cdDoc As CorelDRAW.Document
Dim sh As CorelDRAW.Shape

If cdApp.Documents.Count > 0 Then
    Set cdDoc = cdApp.ActiveDocument
    cdDoc.Unit = cUnit
    Set sh = cdDoc.Selection
    If sh.Shapes.Count > 0 Then
        sh.Duplicate dupX, dupY
    Else
        MsgBox "At least one object must be selected", vbExclamation
    End If
Else
    MsgBox "At least one document must be", vbExclamation
End If

End Sub

Там где function или sub стоят без private - там они считаются Корелом макросами для внешнего исполнения, а там где private - не считаются таковыми.

Можете редактировать макрос сколько влезет.

В аттаче также снапшут - как оно работает с тулбаром. :)
 

Вложения

  • Dup.zip
    4.8 КБ · Просм.: 477
  • dup.gif
    dup.gif
    53.9 КБ · Просм.: 1 103

Altis

Участник
Топикстартер
Сообщения
7
Реакции
0
Ответ: Как создать кнопку copy

Все супер! Все поставил, понавесил хоткеев, все работает. Большое спасибо, сам бы с макросами не разобрался.
 
Статус
Закрыто для дальнейших ответов.