AddSymbolElement method (LineStyleDef)

Добавляет в описатель стиля линии новый символьный элемент.

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

LineStyleDef

Синтаксис:

Visual Basic:

Sub AddSymbolElement(iElement As LineStyleElement)

iElement - объект, описывающий символ, который повторяется вдоль линии.

Описание:

Сам символ задается элементу методом SetSymbol, а его размещение вдоль линии - методами SetSymbolStep, SetSymbolScale, SetSymbolAngle и сдвигами. Символ берут из библиотеки символов слоя - коллекции Symbols.

В стиль символ переносится копией: у символа, прочитанного обратно методом GetSymbol элемента, Id равен -1, а название пустое, хотя у исходного символа слоя они свои.

Линейные и символьные элементы в одном стиле сочетаются свободно: добавленные подряд AddLineElement и AddSymbolElement дают стиль из двух элементов, а весь набор виден через StyleElements. Готовый стиль попадает в библиотеку стилей слоя методом AddItem.

Пример:

Пример собирает стиль из символа слоя, повторенного вдоль линии.

Visual Basic:

Sub LineStyleDef_AddSymbolElement
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Описатель стиля линии и его символьный элемент
Set lsd = CreateObject("ZuluLib.LineStyleDef")
Set lse = CreateObject("ZuluLib.LineStyleElement")
'Символ берем из библиотеки символов слоя
lse.SetSymbol L.Symbols.ItemById(2)
'Размещение символа вдоль линии
lse.SetSymbolScale 1
lse.SetSymbolStep 25
lsd.AddSymbolElement lse
S = "Элементов в стиле: " & lsd.StyleElements.Count
'Символ в элементе - копия: свой номер он не сохраняет
Set got = lsd.StyleElements.Item(0).GetSymbol
S = S & vbCrLf & "Id символа в элементе: " & got.Id
'Кладем стиль в библиотеку стилей слоя
S = S & vbCrLf & "новый стиль получил Id " & L.LineStyles.AddItem(lsd, -1)
MsgBox S
End Sub

Python:

import zulu

def Macro_LineStyleDef_AddSymbolElement():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Описатель стиля линии и его символьный элемент
    lsd = zulu.LineStyleDef()
    lse = zulu.LineStyleElement()
    # Символ берем из библиотеки символов слоя
    lse.SetSymbol(L.Symbols.ItemById(2))
    # Размещение символа вдоль линии
    lse.SetSymbolScale(1)
    lse.SetSymbolStep(25)
    lsd.AddSymbolElement(lse)
    print("Элементов в стиле:", lsd.StyleElements.Count)
    # Символ в элементе - копия: свой номер он не сохраняет
    got = lsd.StyleElements.Item(0).GetSymbol()
    print("Id символа в элементе:", got.Id)
    # Кладем стиль в библиотеку стилей слоя
    print("новый стиль получил Id", L.LineStyles.AddItem(lsd, -1))