AddPolyContour method (Layer)

Добавляет в слой составной площадной объект.

Применяется к:

Layer

Синтаксис:

Visual Basic:

Function AddPolyContour(Region As PolyContour, Style As ElemStyle,ElemType As Long,ElemMode As Long) As Long

Region - комбинированный контурный объект с установленными параметрами.

Style - объект, задающий стиль отображения объекта.

ElemType - ID типа

ElemMode - номер режима (нумерация с единицы)

Описание:

В случае успеха метод возвращает ID добавленного в слой объекта. В противном случае метод возвращает -1.

Чтобы добавить непривязанный к структуре слоя объект (примитив), ElemType и ElemMode задают равными -1.

Объект собирается из контуров заранее: каждый контур добавляется в PolyContour методом AddContour. Контур, лежащий внутри другого, образует в нём вырез — площадь составного объекта на площадь выреза уменьшается.

Объект без контуров метод не добавляет и возвращает -1.

Пример:

Visual Basic:

Sub Layer_AddPolyContour
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
Set R = L.GetBoundsRectangle
D = (R.Xmax - R.Xmin) / 10
X = R.Xmax + D
Y = R.Ymin
'Внешний контур - квадрат правее слоя
Set C1 = CreateObject("ZuluLib.Contour")
C1.AddPoint X, Y
C1.AddPoint X + D, Y
C1.AddPoint X + D, Y + D
C1.AddPoint X, Y + D
'Внутренний контур - вырез в нем
Set C2 = CreateObject("ZuluLib.Contour")
C2.AddPoint X + D / 4, Y + D / 4
C2.AddPoint X + D / 2, Y + D / 4
C2.AddPoint X + D / 2, Y + D / 2
C2.AddPoint X + D / 4, Y + D / 2
'Собираем составной объект
Set PC = CreateObject("ZuluLib.PolyContour")
PC.AddContour C1
PC.AddContour C2
'Красная заливка стилем 2 из библиотеки слоя, тонкая граница
Set St = CreateObject("ZuluLib.ElemStyle")
St.FillStyle = 2
St.PatColor = RGB(255, 0, 0)
St.BorderWidth = 1
'Тип и режим -1: добавляем примитив
MsgBox "Добавлен объект " & L.AddPolyContour(PC, St, -1, -1) & vbCrLf & _
       "Контуров: " & PC.Count & ", площадь: " & Round(PC.Square, 1)
End Sub

Python:

import zulu

def Macro_Layer_AddPolyContour():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    R = L.GetBoundsRectangle()
    d = (R.Xmax - R.Xmin) / 10
    x = R.Xmax + d
    y = R.Ymin
    # Внешний контур - квадрат правее слоя
    C1 = zulu.Contour()
    for px, py in ((x, y), (x + d, y), (x + d, y + d), (x, y + d)):
        C1.AddPoint(px, py)
    # Внутренний контур - вырез в нем
    C2 = zulu.Contour()
    for px, py in ((x + d / 4, y + d / 4), (x + d / 2, y + d / 4),
                   (x + d / 2, y + d / 2), (x + d / 4, y + d / 2)):
        C2.AddPoint(px, py)
    # Собираем составной объект
    PC = zulu.PolyContour()
    PC.AddContour(C1)
    PC.AddContour(C2)
    # Красная заливка стилем 2 из библиотеки слоя, тонкая граница
    St = zulu.ElemStyle()
    St.FillStyle = 2
    St.PatColor = 255
    St.BorderWidth = 1
    # Тип и режим -1: добавляем примитив
    print("Добавлен объект", L.AddPolyContour(PC, St, -1, -1))
    print("Контуров:", PC.Count, ", площадь:", round(PC.Square, 1))