AddSymbol method (Layer)

Добавляет в слой типовой символьный объект.

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

Layer

Синтаксис:

Visual Basic:

Function AddSymbol(X As Double, Y As Double, ElemType As Long, ElemMode As Long) As Long

X, Y - координаты добавляемого символа

ElemType - ID типа

ElemMode - номер режима (нумерация с единицы)

Описание:

В случае успеха метод возвращает ID добавленного в слой объекта. В противном случае метод возвращает -1; причину отказа сообщает метод GetLastErrorCode.

В точку, где уже стоит другой символ, метод символ не ставит — код -18. Когда символов добавляется много, проверку занятости точек ускоряет метод AddSymbolsStart.

Тип должен быть типом узла: с типом участка метод возвращает -1 и код -4. Несуществующий тип или номер режима вне пределов, заданных типом, дают код -16.

Символ, не привязанный к структуре слоя, этим методом не добавляется; для него служит метод AddSimpleSymbol.

Пример:

Visual Basic:

Sub Layer_AddSymbol
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Тип и режим берем у первого символа слоя
Set En = L.EnumElements
En.MoveFirst
Do While Not En.IsEOF
  If En.GraphType = 2 Then Exit Do
  En.MoveNext
Loop
If En.IsEOF Then
  MsgBox "В слое нет типовых символов"
  Exit Sub
End If
'Ставим символ правее слоя
Set R = L.GetBoundsRectangle
D = (R.Xmax - R.Xmin) / 10
Key = L.AddSymbol(R.Xmax + D, R.Ymin, En.TypeID, En.ModeId)
If Key = -1 Then
  MsgBox "Символ не добавлен, код ошибки " & L.GetLastErrorCode
Else
  MsgBox "Добавлен символ " & Key
End If
End Sub

Python:

import zulu

def Macro_Layer_AddSymbol():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Тип и режим берем у первого символа слоя
    En = L.EnumElements()
    En.MoveFirst()
    while not En.IsEOF() and En.GraphType != 2:
        En.MoveNext()
    if En.IsEOF():
        print("В слое нет типовых символов")
        return
    # Ставим символ правее слоя
    R = L.GetBoundsRectangle()
    d = (R.Xmax - R.Xmin) / 10
    key = L.AddSymbol(R.Xmax + d, R.Ymin, En.TypeID, En.ModeId)
    if key == -1:
        print("Символ не добавлен, код ошибки", L.GetLastErrorCode())
    else:
        print("Добавлен символ", key)