Метод присваивает тип толщины символа объекту LineStyleElement.
Visual Basic:
Sub SetSymbolWidthType(eType As eLinearSizeType)
eType - тип толщины:
0 - постоянные.
1 - пропорциональные.
2 - плюс общая толщина.
Тип решает, как толщина штрихов, которыми нарисован символ, зависит от толщины линии (у метода Draw это его параметр LineWidth). Размер самого символа и шаг от этого не меняются - ими управляет SetSymbolSizeType.
При типе 0 штрихи символа не толстеют вместе с линией, при типе 1 толстеют пропорционально ее толщине, при типе 2 - понемногу, заметно медленнее.
У только что созданного элемента тип равен 0, а у символьных элементов готовых стилей обычно 1. Значение метод не проверяет: число вне набора констант принимается и читается обратно как есть.
Пример собирает стиль, символы которого рисуются одинаково тонко при любой толщине линии.
Visual Basic:
Sub LineStyleElement_SetSymbolWidthType 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active Set lsd = CreateObject("ZuluLib.LineStyleDef") Set lse = CreateObject("ZuluLib.LineStyleElement") lse.SetSymbol L.Symbols.ItemById(9) lse.SetSymbolScale 1 lse.SetSymbolStep 40 'Штрихи символа не толстеют вместе с линией lse.SetSymbolWidthType 0 lsd.AddSymbolElement lse S = "Тип толщины символа: " & lsd.StyleElements.Item(0).GetSymbolWidthType S = S & vbCrLf & "новый стиль получил Id " & L.LineStyles.AddItem(lsd, -1) MsgBox S End SubPython:
import zulu def Macro_LineStyleElement_SetSymbolWidthType(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active lsd = zulu.LineStyleDef() lse = zulu.LineStyleElement() lse.SetSymbol(L.Symbols.ItemById(9)) lse.SetSymbolScale(1) lse.SetSymbolStep(40) # Штрихи символа не толстеют вместе с линией lse.SetSymbolWidthType(0) lsd.AddSymbolElement(lse) # Сам тип в python не прочитать: GetSymbolWidthType возвращает None print("Масштаб символа:", lsd.StyleElements.Item(0).GetSymbolScale()) print("новый стиль получил Id", L.LineStyles.AddItem(lsd, -1))