[CDR 2022] Скопировать эффект тень

izrukvruki

Топикстартер
15 лет на форуме
Сообщения
1 833
Реакции
302
На странице два объекта.
На первом (красный) наложен эффект тень.
Макрос работает так: выделяю красный объект, нажимаю копировать (копируются размеры и хочу чтоб эффекты скопировались), выделяю зеленый объект и нажимаю вставить (зеленый становится размерами как красный и вставляются на него эффекты).
Помогите, с копированием эффекта... не хватает ума, как это сделать
1684909277225.png
 

eugeny

15 лет на форуме
Сообщения
855
Реакции
210
Ну самый простой способ. Запомнить параметры тени у первого объекта и создать тень с этими параметрами у второго объекта.
 

Hoar

12 лет на форуме
Сообщения
149
Реакции
61
Что-то в этом духе.
 

izrukvruki

Топикстартер
15 лет на форуме
Сообщения
1 833
Реакции
302
Прошу прощения, я неправильно выбрал подветку... Нужно было написать в Автоматизация (если это возможно - перенесите туда)...

Я имел в виду как это сделать макросом?
 

eugeny

15 лет на форуме
Сообщения
855
Реакции
210
Не знаю как у вас макрос устроен. Поэтому общая концепция:
Код:
Dim sh_With_Shadow as shape
Dim sh_naked as shape
Set eff1 as Effect, eff2 as Effect
// здесь вы выбираете обе фигуры (у меня, например, сперва выделяешь фигуру куда скопировать,
// потом появляется курсор, чтобы выделить откуда)

Set eff1 = sh_With_Shadow.Effects.DropShadowEffect

Set eff2 = sh_naked.CreateDropShadow(eff1.DropShadow.Type, eff1.DropShadow.Opacity, eff1.DropShadow.Feather, eff1.DropShadow.OffsetX, eff1.DropShadow.OffsetY, eff1.DropShadow.Color, _
    eff1.DropShadow.FeatherType, eff1.DropShadow.FeatherEdge, eff1.DropShadow.PerspectiveAngle, eff1.DropShadow.PerspectiveStretch, eff1.DropShadow.Fade, eff1.DropShadow.MergeMode)
 

izrukvruki

Топикстартер
15 лет на форуме
Сообщения
1 833
Реакции
302
А как сделать проверку, если на объекте с которого копируешь тень - нету тени?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
  • Спасибо
Реакции: izrukvruki

eugeny

15 лет на форуме
Сообщения
855
Реакции
210
А как сделать проверку, если на объекте с которого копируешь тень - нету тени?
Код:
Set eff1 = sh.Effects.DropShadowEffect
   if checkDS(eff1) =1 then // есть эффект
  
   //функция проверки свойства
Function checkDS(obj)
    Dim res: res = 0
    On Error GoTo ENDIT
    If obj.Type = 5 Then res = 1
ENDIT:
    checkDS = res
End Function
 
  • Спасибо
Реакции: mnemonix и izrukvruki

izrukvruki

Топикстартер
15 лет на форуме
Сообщения
1 833
Реакции
302
сам сделал вот так

Код:
If ActiveDocument.ActiveShape.Effects.Count > 0 Then
            Set eff1 = ActiveDocument.ActiveShape.Effects.DropShadowEffect
            ef = 1
        End If

Код:
If ef = 1 Then
        Set eff2 = ActiveDocument.ActiveShape.CreateDropShadow(eff1.DropShadow.Type, eff1.DropShadow.Opacity, eff1.DropShadow.Feather, eff1.DropShadow.OffsetX, eff1.DropShadow.OffsetY, eff1.DropShadow.Color, eff1.DropShadow.FeatherType, eff1.DropShadow.FeatherEdge, eff1.DropShadow.PerspectiveAngle, eff1.DropShadow.PerspectiveStretch, eff1.DropShadow.Fade, eff1.DropShadow.MergeMode)
    End If
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Ну а если на обьекте не тень а другой эффект?