CreateVoronoi method (Layer)

Создает новый слой, состоящий из площадных объектов, являющихся ячейками Вороного, построенными на основе указанных объектов исходного слоя.

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

Layer

Синтаксис:

Visual Basic:

Function CreateVoronoi(Elems, nFlags As Long, Path As String, UserName As String) As Boolean

Elems - список ключей объектов исходного слоя.

nFlags - зарезервирован (должен быть 0).

Path - путь или URL нового слоя.

UserName - пользовательское название слоя.

Описание:

Параметр Elems это переменная типа VARIANT, которая может содержать либо коллекцию ключей слоя ElementKeys, либо массив ключей типа long VT_BYREF|VT_I4, где первый элемент массива содержит количество ключей.

Если объект из списка является символьным, то ячейка Вороного строится для точки привязки объекта. Если объект из списка является площадным или линейным, ячейки строятся для каждой точки перелома составляющих объект ломаных и полигонов.

Ячейки записываются примитивами в новый слой, который метод создаёт сам; структуры типов в нём нет. Слой с таким именем, если он уже есть, заменяется. Метод возвращает True, если слой создан, и False — если создать его не удалось, например когда папки для нового слоя не существует.

Пример:

Visual Basic:

Sub Layer_CreateVoronoi
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Выделяем все типовые символы слоя
L.Selection.Clear
Set En = L.EnumElements
En.MoveFirst
n = 0
Do While Not En.IsEOF
  If En.GraphType = 2 Then
    L.Selection.AddElem En.ElemID
    n = n + 1
  End If
  En.MoveNext
Loop
If n = 0 Then
  MsgBox "В слое нет типовых символов"
  Exit Sub
End If
'Строим по ним зоны близости в новом слое
If L.CreateVoronoi(L.Selection.ElementKeys, 0, "C:\Data\voronoi", "Зоны близости") Then
  Set V = CreateObject("ZuluLib.Layer")
  V.Open "C:\Data\voronoi"
  Set En = V.EnumElements
  En.MoveFirst
  k = 0
  Do While Not En.IsEOF
    k = k + 1
    En.MoveNext
  Loop
  MsgBox "Символов: " & n & vbCrLf & "Ячеек в слое «" & V.UserName & "»: " & k
Else
  MsgBox "Слой с ячейками не создан"
End If
End Sub