AddBufferZoneEx method (Layer)

Создает и записывает в слой буферную зону.

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

Layer

Синтаксис:

Visual Basic:

Function AddBufferZoneEx(SourceLayer As Layer, ElemIDs, Style As ElemStyle, Value As Double, BaseID As Long, Reserved As String, FieldName As String, koeff As Double, Flags As Long) As ElementKeys

SourceLayer - слой источник

ElemIDs - объект, содержащий список ключей объектов, для которых строится зона. На данный момент это только объект типа ElementKeys

Style - стиль контурных объектов буферной зоны

Value - ширина буфера (в см)

BaseID, FieldName  - ID базы данных и название поля из этой базы, откуда берутся значения ширины буфера

Если ID базы равно -1, значения для ширины буфера будут всегда браться из переменной Value

Reserved - значение зарезервировано, должно быть нулём.

koeff - определяет единицы измерения значений в выбранном поле

Flags - битовые флаги

0x1 устанавливается, если необходимо, чтобы значения буфера брались из таблицы, а при отсутствии этих данных брались из переменнойбит

0x2 устанавливается, если необходимо чтобы буферная зона создавалась для каждого объекта отдельно, без объединения в единую зону.

0x4 устанавливается, если необходимо чтобы из буферной зоны вырезались сами площадные объекты, по которым она создается.

0x8 прямое окончание линий.

0x16 квадратное окончание линий.

Описание:

Построение буферной зоны заключается в очерчивании вокруг заданного набора объектов указанного слоя контура (или нескольких контуров), все точки которого отстоят от объектов группы на заданную величину. Расстояние для построения буферной зоны либо задается постоянным для всего набора объектов, либо берется из указанного числового поля подключенной в данный момент к слою таблицы.

Метод возвращает коллекцию ключей созданных в слое буферных объектов.

Пример:

Для запуска примера на форме необходимо разместить элемент управления MapCtrl с именем MapCtrl1.

Dim tools As ZuluTools
Dim st As ElemStyleDim
Dim Ln As ZuluLib.PolyLine
Dim Id As Long

Set st = New ElemStyleSet
Set tools = New ZuluTools
Set Ln = New ZuluLib.PolyLine

'установка стиля элемента
st.BorderColor = 0
st.BorderStyle = 0
st.BorderWidth = 2
st.PatColor = 255
st.FillStyle = 2
st.LineColor = RGB(0, 0, 255)
st.LineWidth = 3

'создание линейного объекта
Ln.AddPoint 0, 0
Ln.AddPoint 30000, 20000
Ln.AddPoint 10000, 70000

'создания слоя Линии
tools.LayerCreate "e:\temp\bbb", "Линии", eMixedLayer

'создания слоя Буферные зоны
tools.LayerCreate "e:\temp\aaa", "Буферные зоны", eMixedLayer

'Слой Линии добавляется в список загруженных в карту слоев
MapCtrl1.Map.Layers.Add "e:\temp\bbb"

'в  активный слой добавляется линия с установленными координатами узлов и стилем
Id = MapCtrl1.Map.Layers.Active.AddPolyLine(Ln, st, -1, -1)
'слой Буферные зоны добавляется в список загруженных в карту слоев
MapCtrl1.Map.Layers.Add "e:\temp\aaa"
'Создаем буферные зоны для каждого объекта слоя
MapCtrl1.Map.Layers.Item(MapCtrl1.Map.Layers.Count).AddBufferZoneEx MapCtrl1.Map.Layers.Active, MapCtrl1.Map.Layers.Active.ElementKeys, st, 2000, -1, "", "", 1, 2
'слой Буферные зоны перемещается вперед
MapCtrl1.Map.Layers.Move MapCtrl1.Map.Layers.Count, eMoveBackOne
'карта рисуется по размерам слоя
MapCtrl1.DrawInMapExtents