Отмечает пересечение линий в заданной точке перелома линейного объекта.
Visual Basic:
Function SetLineCrossingStatus(SegNum As Long, NodeNum As Long, bStatus As Boolean) As Long
SegNum - номер сегмента (нумерация с нуля).
NodeNum - номер точки перелома в сегменте (нумерация с нуля).
bStatus - признак отметки.
Метод отмечает место пересечения типовых линейных объектов, обозначаемое дугой. Центром обозначения служит точка перелома, поэтому отметить можно только внутренние точки перелома сегмента - концы линии отметить нельзя. Радиус и масштаб обозначения задаются методом SetLineCrossingStyle объекта ObjectMode.
При небольшом радиусе дуга на карте выглядит как короткий разрыв линии, поэтому отметку легко не заметить.
Отметка задается параметром bStatus: значение True ставит ее, False - снимает. Прочитать текущее состояние отметки можно методом GetLineCrossingStatus.
Метод возвращает 0, если отметка установлена или снята, и -1, если элемент не является типовым линейным объектом либо значения SegNum или NodeNum недопустимы.
Обратите внимание, что нумерация точек перелома в этом методе начинается с нуля, тогда как в методах GetX и GetY объекта PolyLine вершины нумеруются с единицы.
Visual Basic:
Sub Element_SetLineCrossingStatus Set L = Zulu.ActiveMapDoc.Layers.Active 'в ID записываем ключ текущего объекта ID = L.CurrentID 'получаем элемент по ключу Set obj = L.Elements.GetElement(ID) 'отмечаем пересечение во второй точке перелома сегмента 0 'False на том же месте снимет отметку MsgBox "Код возврата: " & obj.SetLineCrossingStatus(0, 1, True) & vbCrLf & _ "Состояние отметки: " & obj.GetLineCrossingStatus(0, 1) End SubPython:
import zulu def Macro_Element_SetLineCrossingStatus(): L = zulu.App.ActiveMapDoc.Layers.Active # в ID записываем ключ текущего объекта ID = L.CurrentID # получаем элемент по ключу obj = L.Elements.GetElement(ID) # отмечаем пересечение во второй точке перелома сегмента 0 # False на том же месте снимет отметку print("Код возврата:", obj.SetLineCrossingStatus(0, 1, True)) print("Состояние отметки:", obj.GetLineCrossingStatus(0, 1))