SetSymbol method (LineStyleElement)

Метод присваивает символ объекту LineStyleElement.

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

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 Sub

Python:

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))