Возвращает состояние отметки пересечения линий в заданной точке перелома линейного объекта.
Visual Basic:
Function GetLineCrossingStatus(SegNum As Long, NodeNum As Long) As Long
SegNum - номер сегмента (нумерация с нуля).
NodeNum - номер точки перелома в сегменте (нумерация с нуля).
Метод парный к SetLineCrossingStatus и читает отметку, поставленную этим методом.
Возвращаемые значения:
0 - отметки нет;
1 - отметка есть;
-1 - элемент не является типовым линейным объектом либо значения SegNum или NodeNum недопустимы.
Отметить и, соответственно, прочитать можно только внутренние точки перелома - концы линии отметить нельзя. Поэтому у линии из N вершин допустимы значения NodeNum от 1 до N - 2, а у линии из двух вершин отмечать нечего.
Visual Basic:
Sub Element_GetLineCrossingStatus Set L = Zulu.ActiveMapDoc.Layers.Active 'в ID записываем ключ текущего объекта ID = L.CurrentID 'получаем элемент по ключу Set obj = L.Elements.GetElement(ID) 'перебираем внутренние точки перелома: нумерация с нуля, 'концы линии отметить нельзя s = "" For n = 1 To obj.PolyLine.NumTops - 2 s = s & "точка " & n & ": " & obj.GetLineCrossingStatus(0, n) & vbCrLf Next MsgBox sPython:
import zulu def Macro_Element_GetLineCrossingStatus(): L = zulu.App.ActiveMapDoc.Layers.Active # в ID записываем ключ текущего объекта ID = L.CurrentID # получаем элемент по ключу obj = L.Elements.GetElement(ID) # перебираем внутренние точки перелома: нумерация с нуля, # концы линии отметить нельзя for n in range(1, obj.PolyLine.NumTops - 1): print("точка %s: %s" % (n, obj.GetLineCrossingStatus(0, n)))