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

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

Altis

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

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

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

А arrange-transformations-position (alt+f7) юзить не судьба?
 
Ответ: Как создать кнопку copy

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

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

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

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

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

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

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

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

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

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

и т.д. и т.п.
 
Ответ: Как создать кнопку copy

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

и т.д. и т.п.
Огромное спасибо, все оказывается очень просто, я ведь знал, что истина где-то рядом. Теперь поробую это дело на кнопку повесть. :D (если вспомню как)
 
Ответ: Как создать кнопку 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
    Dup.zip
    4.8 КБ · Просм.: 541
  • dup.gif
    dup.gif
    53.9 КБ · Просм.: 1 168
Ответ: Как создать кнопку copy

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