Добавляет в слой составной площадной объект.
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 SubPython:
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))