Создает буферную зону и записывает в слой.
Visual Basic:
Function AddBufferZone(SourceLayer As Layer,Style As ElemStyle,Value As Double,ZbName As String,FieldName As String,koeff As Double, UseDefault As Boolean) As Boolean
SourceLayer - слой источник
Style - стиль контурных объектов буферной зоны
Value - ширина буфера (в см)
ZbName, FieldName - имя базы данных и название поля из этой базы, откуда берутся значения ширины буфера
koeff - определяет единицы измерения значений в выбранном поле
UseDefault - устанавливается в значение True, если необходимо, чтобы значения буфера брались из таблицы, а при отсутствии этих данных брались из переменной Value
Построение буферной зоны заключается в очерчивании вокруг группы объектов слоя контура (или нескольких контуров), все точки которого отстоят от объектов группы на заданную величину. Расстояние для построения буферной зоны либо задается постоянным для всех объектов группы, либо берется из указанного числового поля подключенной в данный момент к слою таблицы.
Создание буферной зоны ведется по выделенным объектам, поэтому перед созданием необходимо выделить объекты, по которым создается буферная зона.
Для запуска примера на форме необходимо разместить элемент управления 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.Active.Selection.Modify eSelCreate, 1, Id 'слой Буферные зоны добавляется в список загруженных в карту слоев MapCtrl1.Map.Layers.Add "e:\temp\aaa" MapCtrl1.Map.Layers.Item(MapCtrl1.Map.Layers.Count).AddBufferZone MapCtrl1.Map.Layers.Active, st, 2000, "", "", 1, True MapCtrl1.Map.Layers.Active.Selection.Clear 'слой Буферные зоны перемещается вперед MapCtrl1.Map.Layers.Move MapCtrl1.Map.Layers.Count, eMoveBackOne 'карта рисуется по размерам слоя MapCtrl1.DrawInMapExtents