Автоматическое занесение наименований узлов (VBScript)
В данном примере решается задача по автоматическому заполнению поля базы данных по узловым объектам - Наименование.
Наименование объекта состоит из 2-х частей.
- Статичного префикса "узел - ", который заносится по всем объектам.
- Порядкового номера, который генерируется автоматически, начиная с 1. Нумерация производится на основании ID (sys) объекта, от меньшего к большему.
Sub set_name_uzel
'type_uz - тип объекта
'preff - префикс
type_uz = 4
preff= ""
'На момент запуска макроса необходимо открыть карту, активировать слой
Set L = Zulu.ActiveMapDoc.Layers.Active
' Создали объект объект базы данных Zulu
Set Db = CreateObject("Zb.ZbDatabase")
' открывает существующую семантическую базу данных типа 4
Db.Open L.ObjectTypes.Item(type_uz).BaseName
' Keys - список ключей объектов с типом 4
Set Keys = L.ElementKeys.SelectByType(type_uz,0)
' счетчик узлов
n = 1
' Перебираем все объекты типа 4 в цикле
For i = 1 To Keys.Count
' создаем наименование узла, состоящее из префикса "узел -" и счетчика
text = preff & n
'Записываем значение в соответствующие поля
Db.UpdateBaseRecord Keys.Item(i), "Name" , text, 0
' Добавляем к счетчику 1
n = n + 1
Next
' по завершению процедуры, выдаем сообщение с количеством переименованных узлов
MsgBox "Пронумеровано " & n-1 &" узлов"
End Sub
См. также: Создание группы объектов на основании топологической связанности (VBScript)
Последнее обновление — 26.11.2023 23:11:18