Устанавливает максимальный масштаб отображения для всех объектов загруженного в карту слоя.
Visual Basic:
Sub SetMaxScale(Scale As Double)
Scale - максимальный масштаб отображения.
Метод задает геодезический масштаб M (1:M) в отличии от свойства MaxScale (см/пиксел).
Это один и тот же предел, записанный по-разному: свойство MaxScale равно знаменателю M, деленному на 37,7952755905512 - число пикселов в сантиметре при 96 dpi. Прочитать заданное в том же виде позволяет метод GetMaxScale.
Значения 0 и -1 означают, что ограничения нет; у слоя, которому предел не задавали, MaxScale равен -1. В файле слоя предел не сохраняется: слой, открытый заново, снова показывает -1.
Visual Basic:
Sub Layer_SetMaxScale 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active Prev = L.GetMaxScale S = "Было: 1:" & Prev & " (" & L.MaxScale & " см/пиксел)" 'Показывать слой, пока знаменатель масштаба не меньше 5000 L.SetMaxScale 5000 S = S & vbCrLf & "стало: 1:" & L.GetMaxScale & " (" & L.MaxScale & " см/пиксел)" 'Возвращаем как было L.SetMaxScale Prev S = S & vbCrLf & "вернули: 1:" & L.GetMaxScale MsgBox S End SubPython:
import zulu def Macro_Layer_SetMaxScale(): # Берем активный слой карты L = zulu.App.ActiveMapDoc.Layers.Active prev = L.GetMaxScale() print("Было: 1:", prev, "(", L.MaxScale, "см/пиксел)") # Показывать слой, пока знаменатель масштаба не меньше 5000 L.SetMaxScale(5000) print("стало: 1:", L.GetMaxScale(), "(", L.MaxScale, "см/пиксел)") # Возвращаем как было L.SetMaxScale(prev) print("вернули: 1:", L.GetMaxScale())