Добавляет в слой простой символьный объект.
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 SubPython:
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))