Создание внутреннего контура в CorelDRAW 2018 CreateContour
В CorelDRAW 2018 можно задать внутренний контур через Shape.CreateContour, указав отрицательное смещение Offset и тип ContourTypeInner. Пример кода ниже.
Как в VBA для CorelDraw 2018 использовать функцию CreateContour(), чтобы при создании внутреннего контура (например 5 мм) он создавал внутренний контур, а не внешний, даже если объект имеет размер 5,1 мм?
Внутренний контур в CorelDRAW 2018 создаётся с помощью метода Shape.CreateContour.
Ключевой момент – отрицательное смещение Offset и явное указание типа контура ContourType.
При этих двух значениях CorelDRAW всегда рисует контур внутри объекта, даже если размеры объекта чуть больше требуемой ширины контура.
Содержание
- Что такое CreateContour и какие параметры
- Как задать внутренний контур
- Полный пример кода
- Часто задаваемые вопросы
Что такое CreateContour и какие параметры?
Метод Shape.CreateContour возвращает объект Contour и имеет следующий прототип:
Function CreateContour( _
Offset As Double, _
Stroke As Long, _
Fill As Long, _
Style As Long, _
Opacity As Double, _
Pattern As Long, _
PatternFill As Long, _
PatternType As Long, _
PatternScale As Double, _
PatternRotation As Double, _
PatternOffset As Double, _
PatternMirror As Boolean, _
PatternReversed As Boolean, _
ContourType As ContourTypeEnum _
) As Contour
-
Offset – расстояние от края исходной фигуры до контура.
+ значения → наружный контур, – значения → внутренний контур.
Убедитесь, что единицы измерения совпадают с настройками документа (см.ActiveDocument.Units). -
ContourType – перечисление
ContourTypeEnumс двумя возможными значениями:
cContourTypeOuterиcContourTypeInner.
Если параметр не указан, CorelDRAW сам выбирает тип в зависимости от знакаOffset.
Справка по методу:
Shape.CreateContour (CorelDRAW 2018 VBA Reference)
Как задать внутренний контур?
-
Установите отрицательное смещение – это гарантирует, что линия будет находиться внутри фигуры.
Для внутреннего контура шириной 5 мм используйтеOffset = -5. -
Укажите тип контура –
ContourType = cContourTypeInner.
Это защищает от того, что CorelDRAW может переключиться на наружный контур, если размеры фигуры слишком малы. -
Проверьте единицы измерения – если активный документ использует миллиметры, смещение в 5 мм будет корректным.
Если используется дюймы, передайте значение в дюймах (5 / 25.4).
Пример вызова:
Set cont = shp.CreateContour( _
-5, ' Offset (мм, отрицательный – внутрь) _
0, ' Stroke (цвет) _
0, ' Fill (цвет) _
0, ' Style _
1, ' Opacity (100 %) _
0, ' Pattern _
0, ' PatternFill _
0, ' PatternType _
1, ' PatternScale _
0, ' PatternRotation _
0, ' PatternOffset _
False, ' PatternMirror _
False, ' PatternReversed _
cContourTypeInner) ' ContourType (внутренний) _
Полный пример кода
Ниже – макрос, который создаёт прямоугольник 5,1 мм × 5,1 мм и добавляет к нему внутренний контур шириной 5 мм.
Sub CreateInnerContourExample()
' Устанавливаем единицы измерения в миллиметры
ActiveDocument.Units = cUnitsMM
' 1. Создаём прямоугольник 5,1 × 5,1 мм
Dim shp As Shape
Set shp = ActiveLayer.CreateRectangle(0, 0, 5.1, 5.1)
shp.Fill.UniformColor = cWhite
' 2. Создаём внутренний контур 5 мм
Dim cont As Contour
Set cont = shp.CreateContour( _
-5, ' Offset (мм, отрицательный) _
cBlack, ' Stroke (черный) _
cNoFill, ' Fill (нет заливки) _
0, ' Style _
1, ' Opacity (100 %) _
0, 0, 0, 1, 0, 0, False, False, _
cContourTypeInner) ' Тип контура – внутренний
' 3. При желании можно настроить параметры контура
cont.StrokeWeight = 0.1 ' Толщина линии 0,1 мм
cont.Stroke = cRed ' Цвет контура красный
End Sub
Важно: если исходная фигура меньше 10 мм по высоте/ширине, внутренний контур шириной 5 мм может быть обрезан. В таком случае уменьшайте ширину контура в соответствии с размерами фигуры.
Часто задаваемые вопросы
| Вопрос | Ответ |
|---|---|
| Почему при отрицательном смещении всё равно создаётся наружный контур? | В CorelDRAW 2018 при слишком маленькой фигуре система «переходит» в наружный контур, чтобы не получить нулевую площадь. Уточните размеры объекта и уменьшите ширину контура. |
| Можно ли задать только тип контура, не указывая Offset? | Нет, Offset обязателен – это расстояние до контура. Отрицательный Offset + cContourTypeInner гарантирует внутренний контур. |
| Как изменить цвет контура после его создания? | Объект Contour имеет свойства Stroke и Fill. Например, cont.Stroke = cBlue. |
Можно ли использовать CreateContour для объектов с несколькими путями? |
Да, но каждый путь будет обрабатываться отдельно. Для сложных объектов лучше использовать CreateContour для каждой части вручную. |
Заключение
- Внутренний контур создаётся при отрицательном смещении
Offsetи явном указанииContourType = cContourTypeInner. - Убедитесь, что размеры объекта позволяют разместить контур нужной ширины – иначе CorelDRAW может вернуть наружный контур.
- В примере выше показано, как быстро вывести в работу макрос, который автоматически создаёт внутренний контур, сохраняя при этом все параметры заливки и цвета.
Источники
- Shape.CreateContour (CorelDRAW 2018 VBA Reference) – официальная документация по методу.
- CorelDRAW 2018 VBA Reference – ContourType Enum – перечень возможных значений
ContourType. - CorelDRAW 2018 Developer Guide – Working with Contours – руководство по работе с контуром в макросах.