Добавляет в описатель стиля линии новый символьный элемент.
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 SubPython:
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))