Изменяет ID (ключ) объекта.
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 SubPython:
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, "не изменен")