ConvertToSymbols method (Selection)

Преобразует линейные и площадные объекты группы в символьные.

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

Selection

Синтаксис:

Visual Basic:

Function ConvertToSymbols(Style As ElemStyle, ElemType As Long, ElemMode As Long, flags As Long) As Long

Style - стиль символьных примитивов: символ из библиотеки слоя (SymbolID) и его размер (SymbolSize). В Python значение None не принимается (TypeError): и для типового символа передают объект ElemStyle.

ElemType - ID символьного типа; -1 - примитив.

ElemMode - номер режима символьного типа; -1 - примитив.

flags - зарезервирован, должен быть 0.

Описание:

Каждый линейный и площадной объект группы преобразуется так же, как методом Element.ConvertToSymbol (там описано, куда ставится символ и как действуют тип и режим). Символьные объекты группы не меняются, группа сохраняется. Изменения сразу вносятся в слой.

Метод возвращает 0, если объекты преобразованы (и у пустой группы), и -1, если преобразование невозможно: ElemType задает линейный тип или для примитива в стиле не указан символ.

Пример:

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

Visual Basic:

Sub Selection_ConvertToSymbols
'Берем активный слой карты, его группу и габариты
Set L = Zulu.ActiveMapDoc.Layers.Active
Set S = L.Selection
Set R = L.GetBoundsRectangle
If L.Symbols.Count = 0 Then
  MsgBox "В библиотеке слоя нет символов"
Else
  'Ломаная за краем данных слоя
  D = (R.Xmax - R.Xmin) / 10
  Set PL = CreateObject("ZuluLib.PolyLine")
  PL.AddPoint R.Xmax + D, R.Ymin
  PL.AddPoint R.Xmax + 2 * D, R.Ymin
  Key = L.AddPolyLine(PL, CreateObject("ZuluLib.ElemStyle"), -1, -1)
  S.Clear
  S.AddElem Key
  'Первый символ библиотеки слоя
  Set St = CreateObject("ZuluLib.ElemStyle")
  St.SymbolID = L.Symbols.GetIdByIndex(0)
  St.SymbolSize = 100
  Res = S.ConvertToSymbols(St, -1, -1, 0)
  S.Clear
  MsgBox "Результат " & Res & ", графический тип объекта " & L.Elements.Item(Key).GraphType
End If
End Sub

Python:

import zulu

def Macro_Selection_ConvertToSymbols():
    # Берем активный слой карты, его группу и габариты
    L = zulu.App.ActiveMapDoc.Layers.Active
    S = L.Selection
    R = L.GetBoundsRectangle()
    if L.Symbols.Count == 0:
        print("В библиотеке слоя нет символов")
        return
    # Ломаная за краем данных слоя
    d = (R.Xmax - R.Xmin) / 10
    PL = zulu.PolyLine()
    PL.AddPoint(R.Xmax + d, R.Ymin)
    PL.AddPoint(R.Xmax + 2 * d, R.Ymin)
    key = L.AddPolyLine(PL, zulu.ElemStyle(), -1, -1)
    S.Clear()
    S.AddElem(key)
    # Первый символ библиотеки слоя
    St = zulu.ElemStyle()
    St.SymbolID = L.Symbols.GetIdByIndex(0)
    St.SymbolSize = 100
    res = S.ConvertToSymbols(St, -1, -1, 0)
    S.Clear()
    print("Результат", res, ", графический тип объекта", L.Elements.Item(key).GraphType)