Возвращает суммарную длину линейных объектов группы в метрах, вычисленную в указанной системе координат указанным способом.
Visual Basic:
Function CalcLength(inCRS As CRS, eMeasure As eMeasureType) As Double
inCRS - система координат, в которой вычисляется длина.
eMeasure - способ вычисления: eMeasureTypeCartesian (0) - на плоскости, eMeasureTypeSpherical (1) - на сфероиде, eMeasureTypeRaw (2) - по координатам слоя без пересчета.
Складываются длины линейных объектов группы, вычисленные так же, как методом Element.CalcLength (там описано, как действует каждый способ), но результат - в метрах, а не в сантиметрах. Площадные, символьные и текстовые объекты в сумму не входят; у пустой группы метод возвращает 0. Длину в системе координат слоя без выбора способа дает метод Length.
Пример сообщает суммарную длину линий активного слоя на плоскости и на сфероиде в системе координат слоя.
Visual Basic:
Sub Selection_CalcLength Const eMeasureTypeCartesian = 0 Const eMeasureTypeSpherical = 1 'Берем активный слой карты и его группу Set L = Zulu.ActiveMapDoc.Layers.Active Set S = L.Selection S.SelectAll Set C = L.GetCRS MsgBox "На плоскости: " & S.CalcLength(C, eMeasureTypeCartesian) & " м" & vbCrLf & _ "На сфероиде: " & S.CalcLength(C, eMeasureTypeSpherical) & " м" S.Clear End SubPython:
import zulu eMeasureTypeCartesian = 0 eMeasureTypeSpherical = 1 def Macro_Selection_CalcLength(): # Берем активный слой карты и его группу L = zulu.App.ActiveMapDoc.Layers.Active S = L.Selection S.SelectAll() C = L.GetCRS() print("На плоскости:", S.CalcLength(C, eMeasureTypeCartesian), "м, на сфероиде:", S.CalcLength(C, eMeasureTypeSpherical), "м") S.Clear()