LineStyleElement object

Объект, содержащий описание и методы работы по созданию стиля одиночной линии или символа для добавления в объект LineStyleDef.

Входит в состав библиотеки ZuluGIS 2021 Library.

Регистрационная информация:

PROGID:

ZuluLib.LineStyleElement

CLSID:

{1250748F-11DD-4DDC-AFDA-3007DB025F4D}

Методы:

Описание:

Свойств у объекта нет: все значения читаются и задаются парами методов Get и Set. Одна половина методов описывает одиночную линию, другая - символ, повторяющийся вдоль линии; в стиль элемент добавляют методом AddLineElement или AddSymbolElement в зависимости от того, что он описывает.

У только что созданного элемента тип линии равен 1, толщина - 0,0265 миллиметра, то есть тончайшая линия в одну точку, а цвет, шаг, штрих, сдвиги, окончание, а также все величины символа - нули; символ не задан, и GetSymbol возвращает Nothing. Незаданная половина так и остается нулевой: у линейного элемента величины символа - нули, у символьного - величины линии.

Заданные значения читаются обратно теми же числами. В стиль элемент попадает копией: элемент, взятый из StyleElements, - уже другой объект, а значения у него те же.

Пример:

Пример собирает стиль из двух элементов - красной линии и символа вдоль нее - и читает обратно то, что получилось.

Visual Basic:

Sub LineStyleElement_cls
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
Set lsd = CreateObject("ZuluLib.LineStyleDef")
'Элемент-линия: красная, толщиной 2, штриховая
Set line = CreateObject("ZuluLib.LineStyleElement")
line.SetLineColor RGB(255, 0, 0)
line.SetLineWidth 2
line.SetLineStep 10
line.SetLineDash 4
lsd.AddLineElement line
'Элемент-символ: символ слоя через каждые 30 единиц
Set sym = CreateObject("ZuluLib.LineStyleElement")
sym.SetSymbol L.Symbols.ItemById(2)
sym.SetSymbolScale 1
sym.SetSymbolStep 30
lsd.AddSymbolElement sym
'Читаем обратно то, что легло в стиль
Set els = lsd.StyleElements
S = "Элементов в стиле: " & els.Count
S = S & vbCrLf & "линия: цвет " & els.Item(0).GetLineColor & ", толщина " & els.Item(0).GetLineWidth & _
    ", шаг " & els.Item(0).GetLineStep & ", штрих " & els.Item(0).GetLineDash
S = S & vbCrLf & "символ: масштаб " & els.Item(1).GetSymbolScale & ", шаг " & els.Item(1).GetSymbolStep
'Кладем стиль в библиотеку стилей слоя
S = S & vbCrLf & "новый стиль получил Id " & L.LineStyles.AddItem(lsd, -1)
MsgBox S
End Sub

Python:

import zulu

def Macro_LineStyleElement_cls():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    lsd = zulu.LineStyleDef()
    # Элемент-линия: красная, толщиной 2, штриховая
    line = zulu.LineStyleElement()
    line.SetLineColor(255)
    line.SetLineWidth(2)
    line.SetLineStep(10)
    line.SetLineDash(4)
    lsd.AddLineElement(line)
    # Элемент-символ: символ слоя через каждые 30 единиц
    sym = zulu.LineStyleElement()
    sym.SetSymbol(L.Symbols.ItemById(2))
    sym.SetSymbolScale(1)
    sym.SetSymbolStep(30)
    lsd.AddSymbolElement(sym)
    # Читаем обратно то, что легло в стиль
    els = lsd.StyleElements
    print("Элементов в стиле:", els.Count)
    print("линия: цвет", els.Item(0).GetLineColor(), ", толщина", els.Item(0).GetLineWidth(),
          ", шаг", els.Item(0).GetLineStep(), ", штрих", els.Item(0).GetLineDash())
    print("символ: масштаб", els.Item(1).GetSymbolScale(), ", шаг", els.Item(1).GetSymbolStep())
    # Кладем стиль в библиотеку стилей слоя
    print("новый стиль получил Id", L.LineStyles.AddItem(lsd, -1))