AddSimpleSymbol method (Layer)

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

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

Layer

Синтаксис:

Visual Basic:

Function AddSimpleSymbol(X As Double, Y As Double, Angle As Double, SymbolID As Long, SymbolSize As Long, Scalable As Long) As Long

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

Angle - угол поворота от трех часов против часовой стрелки в градусах

SymbolID - ID символа из библиотеки символов слоя (посмотреть ID символа можно через вызов окна структуры слоя, где на закладке "Символы" указывается название и ID каждого символа из библиотеки символов)

SymbolSize - размер символа, целое число, задающее тот масштаб карты, при котором символ отображается 1:1

Scalable - признак масштабируемости символа

Описание:

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

Простой символ не привязан к структуре слоя: типа и режима у него нет, а изображение, размер и угол поворота хранятся вместе с объектом.

Библиотека символов слоя доступна из программы через свойство Symbols. Если символа с указанным ID в ней нет, метод возвращает -1, а метод GetLastErrorCode — код -19.

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

Пример:

Visual Basic:

Sub Layer_AddSimpleSymbol
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Берем первый символ из библиотеки символов слоя
Set Syms = L.Symbols
If Syms.Count = 0 Then
  MsgBox "В библиотеке слоя нет символов"
  Exit Sub
End If
SymID = Syms.GetIdByIndex(0)
'Ставим символ правее слоя, без поворота, с масштабированием
Set R = L.GetBoundsRectangle
D = (R.Xmax - R.Xmin) / 10
MsgBox "Символ «" & Syms.ItemById(SymID).Name & "» добавлен с ID " & _
       L.AddSimpleSymbol(R.Xmax + D, R.Ymin, 0, SymID, 1000, 1)
End Sub

Python:

import zulu

def Macro_Layer_AddSimpleSymbol():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Берем первый символ из библиотеки символов слоя
    Syms = L.Symbols
    if Syms.Count == 0:
        print("В библиотеке слоя нет символов")
        return
    sym_id = Syms.GetIdByIndex(0)
    # Ставим символ правее слоя, без поворота, с масштабированием
    R = L.GetBoundsRectangle()
    d = (R.Xmax - R.Xmin) / 10
    print("Символ", Syms.ItemById(sym_id).Name, "добавлен с ID",
          L.AddSimpleSymbol(R.Xmax + d, R.Ymin, 0, sym_id, 1000, 1))