помогите с макросом 2 инверсия цвета

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

Linotronic

Топикстартер
12 лет на форуме
Сообщения
490
Реакции
3
Оч. нужен еще один макрос. Пытался что-то состряпать на основе предыдущего (они оч. похожи) не получилось((

Выделяем контур

1. Копирование бъекта (квадрат-круг)
2. Увеличение копии по X и Y на 5 мм.
3. Задание ему черной заливки.
3. Выделение всего что внутри
4. Перевод в кривые
5. Удаление объектов не имеющих обводки и заливки (это вообще не понял как реализовать. А без этого не работает п. 6)
6. Инверсия цвета (того что внутри. Увеличенный объект остается черным).

Вот что наковырял сам.

Код:
Sub res()  Dim Contur As Shape, Dup As Shape
      If Documents.Count = 0 Then Exit Sub
      If ActiveSelection.Shapes.Count <> 1 Then Exit Sub
      ActiveDocument.ReferencePoint = cdrCenter
      ActiveDocument.Unit = cdrMillimeter
      Set Contur = ActiveShape
      Set Dup = Contur.Duplicate
      Dup.SetSize Contur.SizeWidth + 5, Contur.SizeHeight + 5
      3. Задание ему черной заливки.
      ActivePage.SelectShapesFromRectangle Contur.LeftX, Contur.BottomY, Contur.RightX, Contur.TopY, False
      ActivePage.Shapes.All.ConvertToCurves
      5. Удаление объектов не имеющих обводки и заливки (это вообще не понял как реализовать. А без этого не работает п. 6 и в принципе инверсия)
      OrigSelection.ApplyEffectInvert (не работает-()
End Sub

Естественно у увеличенного объекта не получается заливки.
Переводит таки в кривые. И выдает ошибку со строкой инверсии (хотя и невидимых объектов нет) .

Помгите плз.
 

Linotronic

Топикстартер
12 лет на форуме
Сообщения
490
Реакции
3
Ответ: помогите с макросом 2 инверсия цвета

И еще вопрос. Можно ли как-то реализовать рисование произвольного контура на определенном расстоянии/отступе от уже существующего по внешнему его краю. Что-то типа этого.
 

Вложения

  • 8.jpg
    8.jpg
    6.9 КБ · Просм.: 932

ch_alex

Погулять вышел.
15 лет на форуме
Сообщения
8 420
Реакции
2 709
Ответ: помогите с макросом 2 инверсия цвета

Обычно округлые символы (С, О) обычно имеют бОльшую высоту, нежели остальные символы. Если дорисовать обводку макросом автоматически, то разница по высоте моментально станет заметной.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Ответ: помогите с макросом 2 инверсия цвета

Linotronic сказал(а):
И еще вопрос. Можно ли как-то реализовать рисование произвольного контура на определенном расстоянии/отступе от уже существующего по внешнему его краю. Что-то типа этого.

можно, и давно реализовано. Interactive Contour tool называется
 

Linotronic

Топикстартер
12 лет на форуме
Сообщения
490
Реакции
3
Ответ: помогите с макросом 2 инверсия цвета

Skvoznyak сказал(а):
можно, и давно реализовано. Interactive Contour tool называется

Век живи — век учись. :-D
Спасибо.

Эх. Ну чтож с макросом то...(
Asmussen, где же вы...
 

Sanchos

Sancho
15 лет на форуме
Сообщения
806
Реакции
158
Ответ: помогите с макросом 2 инверсия цвета

Не пойму для чего всё это, но вот пробуй (если я тебя правильно понял)...

Код:
Sub res()
 Dim s As Shape, Dup As Shape
 If Documents.Count = 0 Then Exit Sub
 If ActiveSelection.Shapes.Count <> 1 Then Exit Sub
 ActiveDocument.ReferencePoint = cdrCenter
 ActiveDocument.Unit = cdrMillimeter
 Set s = ActiveShape
 Set Dup = s.Duplicate
 Dup.SetSize s.SizeWidth + 5, s.SizeHeight + 5
 Dup.Fill.ApplyUniformFill CreateCMYKColor(0, 0, 0, 100)
 ActivePage.SelectShapesFromRectangle s.LeftX, s.BottomY, s.RightX, s.TopY, False
 ActivePage.Shapes.All.ConvertToCurves
 For Each s In ActivePage.Shapes
 If s.Fill.Type = cdrNoFill And s.Outline.Width = 0 Then s.Delete
 Next
End Sub
 

Asmussen

15 лет на форуме
Сообщения
143
Реакции
47
Ответ: помогите с макросом 2 инверсия цвета

Linotronic сказал(а):
Эх. Ну чтож с макросом то...(
Asmussen, где же вы...
К сожалению не всегда есть время чтобы отвечать на форуме.
Вижу что, Sanchos уже ответил, решил все равно написать.
Вы делали все правильно, только окривлять надо не все объекты на странице, а то что у нас выделено. И чтобы инверсия прошла нормально, не обязательно удалять объекты не имеющие обводки и заливки, в данном случае можно просто проигнорировать ошибку. Вот что получится.
Код:
Sub res2()
Dim Contur As Shape, Dup As Shape
 If Documents.Count = 0 Then Exit Sub
 If ActiveSelection.Shapes.Count <> 1 Then Exit Sub
 ActiveDocument.ReferencePoint = cdrCenter
 ActiveDocument.Unit = cdrMillimeter
 Set Contur = ActiveShape
 Set Dup = Contur.Duplicate
 Dup.SetSize Contur.SizeWidth + 5, Contur.SizeHeight + 5
 Dup.Fill.ApplyUniformFill Color:=CreateCMYKColor(0, 0, 0, 100)
 ActivePage.SelectShapesFromRectangle Contur.LeftX, Contur.BottomY, Contur.RightX, Contur.TopY, False
 ActiveSelection.ConvertToCurves
 On Error Resume Next
 ActiveSelection.ApplyEffectInvert
End Sub
 

Linotronic

Топикстартер
12 лет на форуме
Сообщения
490
Реакции
3
Ответ: помогите с макросом 2 инверсия цвета

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