Метод присваивает символ объекту LineStyleElement.
Visual Basic:
Sub SetSymbol(Symbol As Symbol)
Symbol - символ, который будет повторяться вдоль линии.
Метод принимает сам объект символа, а не его номер. Символ берут из библиотеки символов слоя - коллекции Symbols, например методом ItemById.
В элемент символ переносится копией: символ, прочитанный обратно методом GetSymbol, имеет Id, равный -1, и пустое название.
Одного символа мало, чтобы он появился на линии: у только что созданного элемента масштаб и шаг символа нулевые, а при нулевом масштабе или шаге символ не рисуется. Их задают методами SetSymbolScale и SetSymbolStep. Готовый элемент добавляют в стиль методом AddSymbolElement.
Пример собирает стиль из символа «Задвижка», повторенного вдоль линии.
Visual Basic:
Sub LineStyleElement_SetSymbol 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active Set lsd = CreateObject("ZuluLib.LineStyleDef") Set lse = CreateObject("ZuluLib.LineStyleElement") 'Символ берем из библиотеки символов слоя Set sym = L.Symbols.ItemById(9) lse.SetSymbol sym 'Без масштаба и шага символ не рисуется lse.SetSymbolScale 1 lse.SetSymbolStep 20 lsd.AddSymbolElement lse S = "Символ слоя: Id " & sym.Id & " [" & sym.Name & "]" S = S & vbCrLf & "символ в элементе: Id " & lsd.StyleElements.Item(0).GetSymbol.Id S = S & vbCrLf & "новый стиль получил Id " & L.LineStyles.AddItem(lsd, -1) MsgBox S End SubPython:
import zulu def Macro_LineStyleElement_SetSymbol(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active lsd = zulu.LineStyleDef() lse = zulu.LineStyleElement() # Символ берем из библиотеки символов слоя sym = L.Symbols.ItemById(9) lse.SetSymbol(sym) # Без масштаба и шага символ не рисуется lse.SetSymbolScale(1) lse.SetSymbolStep(20) lsd.AddSymbolElement(lse) print("Символ слоя: Id", sym.Id, repr(sym.Name)) print("символ в элементе: Id", lsd.StyleElements.Item(0).GetSymbol().Id) print("новый стиль получил Id", L.LineStyles.AddItem(lsd, -1))