NetworkWeightSets property (Layer)

Возвращает коллекцию NetworkWeightSets весовых коэффициентов графа сети данного слоя.

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

Layer

Синтаксис:

Visual Basic:

Property NetworkWeightSets As NetworkWeightSets

read-only

Описание:

Набор весов - это отдельный файл слоя (с расширением .w00 и далее), в котором для объектов сети хранятся два числа: вес в прямом и в обратном направлении. Если наборов у слоя нет, Count равен 0, а Active - -1, то есть активного набора нет.

Набор заводится методом AddItem(название) - он возвращает ID нового набора (у первого это 0). Дальше веса пишутся методом SetItem(ID объекта, прямой вес, обратный) и читаются методом GetItem: он возвращает объект NetworkWeight со свойствами Forward и Reverse. Набор удаляется методом RemoveItem(ID).

У самого набора (NetworkWeightSet) UserName - название, заданное при создании, а Name - путь к файлу. Нумерация в Item идет с нуля, а по ID набор берется свойством ItemById.

Пример:

Пример заводит свой набор весов, пишет в него вес одного объекта, читает его обратно и удаляет набор.

Visual Basic:

Sub Layer_NetworkWeightSets
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
Set WS = L.NetworkWeightSets
S = "Наборов весов: " & WS.Count & ", активный: " & WS.Active
'Заводим свой набор и пишем вес первого объекта слоя
Id = WS.AddItem("Проба весов")
Set W = WS.ItemById(Id)
Key = L.ElementKeys.Item(1)
W.SetItem Key, 10, 20
S = S & vbCrLf & "новый набор " & Id & ": " & W.UserName
S = S & vbCrLf & "объект " & Key & ": вперед " & W.GetItem(Key).Forward & _
    ", назад " & W.GetItem(Key).Reverse
'Убираем за собой
WS.RemoveItem Id
S = S & vbCrLf & "после удаления наборов: " & WS.Count
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_NetworkWeightSets():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    ws = L.NetworkWeightSets
    print("Наборов весов:", ws.Count, ", активный:", ws.Active)
    # Заводим свой набор и пишем вес первого объекта слоя
    ident = ws.AddItem("Проба весов")
    w = ws.ItemById(ident)
    key = L.ElementKeys.Item(1)
    w.SetItem(key, 10, 20)
    print("новый набор", ident, ":", w.UserName)
    print("объект", key, ": вперед", w.GetItem(key).Forward,
          ", назад", w.GetItem(key).Reverse)
    # Убираем за собой
    ws.RemoveItem(ident)
    print("после удаления наборов:", ws.Count)