[CDR 2017-2021] Макрос изменить масштаб объекта без смещения положения

Nameless950

Участник
Топикстартер
Сообщения
30
Реакции
0
Приветствую. Подскажите, пожалуйста, как можно комплексно уменьшить группу объектов в 2 раза без смещения положения? Иными словами подскажите макрос, который будет поочередно выделять объект, менять его масштаб в 2 раза и так по кругу все объекты в группе из выбранных. Ибо если применять изменение масштаба к группе, то изменяется масштаб всей группы. Решение без макросов в голову не идет.
 

densen

15 лет на форуме
Сообщения
753
Реакции
642
Приветствую. Подскажите, пожалуйста, как можно комплексно уменьшить группу объектов в 2 раза без смещения положения? Иными словами подскажите макрос, который будет поочередно выделять объект, менять его масштаб в 2 раза и так по кругу все объекты в группе из выбранных. Ибо если применять изменение масштаба к группе, то изменяется масштаб всей группы. Решение без макросов в голову не идет.
Отсюда

Код:
Sub Scale_Centered_X_and_Y()
Dim sr As ShapeRange, s As Shape, xc#, yc#, sc#
Set sr = ActiveSelectionRange
sr.SetOutlineProperties ScaleWithShape:=cdrTrue
ActiveDocument.BeginCommandGroup "Scale centered X and Y"
On Error GoTo ErrHandler
sc = InputBox("scale (%)") / 100
For Each s In sr
    xc = s.CenterX
    yc = s.CenterY
    s.SetSize s.SizeWidth * sc, s.SizeHeight * sc
    s.CenterX = xc
    s.CenterY = yc
Next s
ExitSub:
ActiveDocument.EndCommandGroup
Exit Sub
ErrHandler:
MsgBox "Error occured: " & Err.Description
Resume ExitSub
End Sub
 
  • Спасибо
Реакции: Nameless950

Nameless950

Участник
Топикстартер
Сообщения
30
Реакции
0
Отсюда

Код:
Sub Scale_Centered_X_and_Y()
Dim sr As ShapeRange, s As Shape, xc#, yc#, sc#
Set sr = ActiveSelectionRange
sr.SetOutlineProperties ScaleWithShape:=cdrTrue
ActiveDocument.BeginCommandGroup "Scale centered X and Y"
On Error GoTo ErrHandler
sc = InputBox("scale (%)") / 100
For Each s In sr
    xc = s.CenterX
    yc = s.CenterY
    s.SetSize s.SizeWidth * sc, s.SizeHeight * sc
    s.CenterX = xc
    s.CenterY = yc
Next s
ExitSub:
ActiveDocument.EndCommandGroup
Exit Sub
ErrHandler:
MsgBox "Error occured: " & Err.Description
Resume ExitSub
End Sub
Спасибо, изучу.
 

mnemonix

ॐ मणि पद्मे हूँ
Сообщения
579
Реакции
175
Макрос добавляет обводку объектам.
 

Nameless950

Участник
Топикстартер
Сообщения
30
Реакции
0
Upd. Объекты смещаются, если были сгруппированы, если разгруппировать, то всё ок. С обводкой еще борюсь.
 

mnemonix

ॐ मणि पद्मे हूँ
Сообщения
579
Реакции
175
закомментировать эту строку:

sr.SetOutlineProperties ScaleWithShape:=cdrTrue
 

Nameless950

Участник
Топикстартер
Сообщения
30
Реакции
0
закомментировать эту строку:

sr.SetOutlineProperties ScaleWithShape:=cdrTrue
Sub Scale_Centered_X_and_Y()
Dim sr As ShapeRange, s As Shape, xc#, yc#, sc#
Set sr = ActiveSelectionRange
sr.SetOutlineProperties ScaleWithShape:=cdrTrue
ActiveDocument.BeginCommandGroup "Scale centered X and Y"
On Error GoTo ErrHandler
sc = InputBox("scale (%)") / 100
For Each s In sr
xc = s.CenterX
yc = s.CenterY
s.SetSize s.SizeWidth * sc, s.SizeHeight * sc
s.CenterX = xc
s.CenterY = yc
Next s
ExitSub:
ActiveDocument.EndCommandGroup
Exit Sub
ErrHandler:
MsgBox "Error occured: " & Err.Description
Resume ExitSub
End Sub


Это пишу, а всё равно обводит
 

mnemonix

ॐ मणि पद्मे हूँ
Сообщения
579
Реакции
175
или удалить, т.к. это команда масштабирования обводки
 
  • Спасибо
Реакции: Nameless950