AddTextByType method (Layer)

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

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

Layer

Синтаксис:

Visual Basic:

Function AddTextByType(X As Double, Y As Double, Angle As Double, text As String, TypeID As Long, ModeNum As Long) As Long

X, Y - координаты точки привязки объекта

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

text - текст

TypeID- ID типа текстового объекта

ModeNum - номер режима данного типа

Описание:

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

В противном случае метод вернет -1.

Текст привязывается к типу и режиму слоя — узла или участка. Без типа (TypeID равен -1), с несуществующим типом и с пустой строкой метод объект не добавляет. Текст, не привязанный к структуре слоя, добавляется методом AddText.

Пример:

Visual Basic:

Sub Layer_AddTextByType
'Берем активный слой карты
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
MsgBox "Добавлен текст " & L.AddTextByType(R.Xmax + D, R.Ymin, 0, "Новый узел", En.TypeID, En.ModeId)
End Sub

Python:

import zulu

def Macro_Layer_AddTextByType():
    # Берем активный слой карты
    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
    print("Добавлен текст", L.AddTextByType(R.Xmax + d, R.Ymin, 0, "Новый узел", En.TypeID, En.ModeId))