ChangeElemID method (Layer)

Изменяет ID (ключ) объекта.

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

Layer

Синтаксис:

Visual Basic:

Function ChangeElemID(CurrentID As Long, NewID As Long, KeyViolationCheck As Boolean) As Boolean

CurrentID - текущий ID объекта.

NewID - новый ID объекта.

KeyViolationCheck - признак проверки, не занят ли новый ID другим объектом.

Описание:

Метод возвращает True, если операция прошла успешно, в противном случае метод возвращает False.

Если KeyViolationCheck равен True, а новый ID уже занят, метод ключ не меняет и возвращает False. При False занятость не проверяется, и ключ меняется даже на занятый: в слое оказываются два объекта с одинаковым ID.

Метод возвращает False и тогда, когда объекта с ID CurrentID нет, новый ID отрицателен или слой находится в режиме буферизованной записи.

Пример:

Visual Basic:

Sub Layer_ChangeElemID
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Первый объект слоя получает ключ на единицу больше наибольшего занятого
Set En = L.EnumElements
En.MoveFirst
OldID = En.ElemID
NewID = L.GetLargestID + 1
If L.ChangeElemID(OldID, NewID, True) Then
  MsgBox "Ключ объекта изменен: " & OldID & " -> " & NewID
Else
  MsgBox "Ключ объекта " & OldID & " не изменен"
End If
End Sub

Python:

import zulu

def Macro_Layer_ChangeElemID():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Первый объект слоя получает ключ на единицу больше наибольшего занятого
    En = L.EnumElements()
    En.MoveFirst()
    old_id = En.ElemID
    new_id = L.GetLargestID() + 1
    if L.ChangeElemID(old_id, new_id, True):
        print("Ключ объекта изменен:", old_id, "->", new_id)
    else:
        print("Ключ объекта", old_id, "не изменен")