Помогите создать несложный макрос

Версия программы: 
14.0.0.701 (sp2)

Дано: произвольный прямоугольник со сторонами X и Y.
Задача: создать внутри него рамку (обычно красного цвета). Отступ рамки от края Y*0,025 мм. Ширина рамки X*0,025 мм

Ну и зачем для этого макрос? Можно же сделать через Blend

одним кликом?

Ой напутал, контур а не бленд.

  1. Включаешь запись нового макроса
  2. Применяешь контур с нужными настройками
  3. Выключаешь запись макроса

Используешь.

Санчо, я бы не обратился за помощью, если бы не попытался сделать что-то сам. С макросом не вышло, так как он запоминает конкретные значения. А нужны значения, зависящие от длины и высоты прямоугольника.

Ну так открой записанный макрос, разберись как он работает, найди нужные значения и подредактируй по типу Shape.SizeWidth * 0.025. Кстати по умолчанию все значения в макросах рассчитываются в pt, если не указать отличную единицу измерения.

Уже всё это я проделал. И рассчитал, что в pt мое значение будет 0,098425. Но застрял на ContourCreate
PS. Вот мы реально больше времени потратим не препирательства

blizzz, можно не рассчитывать а просто указать Units для активного документа. И что там с ContourCreate?

это выходит при попытке выполнить записанный скрипт при измененном размере прямоугольника
А Units указывать в начале скрипта, там, где объявляются переменные?
Короче, вот:

Sub Frame_GOST()
    Dim OrigSelection As ShapeRange
    Set OrigSelection = ActiveSelectionRange
    Dim eff1 As Effect
    Set eff1 = OrigSelection(1).CreateContour(cdrContourInside, 0.11811, 1, cdrDirectFountainFillBlend, CreateCMYKColor(0, 0, 0, 50), CreateFixedColor(cdrPANTONECoated, 362, 33), CreateCMYKColor(0, 0, 0, 100), 0, 0, cdrContourSquareCap, cdrContourCornerMiteredOffsetBevel, 15#)
    eff1.Contour.Offset = 0.082972
    eff1.Contour.ContourGroup.AddToSelection
    ActiveSelection.Separate
    ' Recording of this command is not supported: SplitDualSpotObject
    Dim eff2 As Effect
    Set eff2 = ActiveLayer.Shapes(2).CreateContour(cdrContourInside, 0.143504, 1, cdrDirectFountainFillBlend, CreateCMYKColor(0, 0, 0, 50), CreateFixedColor(cdrPANTONECoated, 362, 33), CreateCMYKColor(0, 0, 0, 100), 0, 0, cdrContourSquareCap, cdrContourCornerMiteredOffsetBevel, 15#)
    ActiveDocument.CreateSelection eff2.Contour.ContourGroup, ActiveLayer.Shapes(2)
    ActiveSelection.Separate
    ' Recording of this command is not supported: SplitDualSpotObject
    ActiveDocument.CreateSelection ActiveShape.Shapes(1).Shapes(2), ActiveShape.Shapes(1).Shapes(1)
    Dim s1 As Shape
    Set s1 = ActiveSelection.Combine
    s1.Fill.UniformColor.CMYKAssign 0, 100, 100, 0
    s1.Outline.SetNoOutline
End Sub

и что за действия в 9 и 14 строках?

Проблема совсем не в ContourCreate, а в том что макрос пытается выделить не существующий объект(ы).
Вместо Shape.Separate лучше использовать Effect.Separate, так как второй возвращает массив объектов, с которым уже дальше и нужно работать.

Units конечно в начало, код же, в отличии от людей, последователен.

в какой строке команда Shape.Separate ?
Блин, Санчо, я в этмо коде барахтаюсь, как слепой щенок, так еще и ты загадками говоришь. Я так только отдаляюсь от решения проблемы

Страницы