Создает и записывает в слой буферную зону.
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