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