RUS  ENG 

Тематическая раскраска.

Страницы: 1
RSS
Тематическая раскраска.
 
Можно ли создать тематическую раскраску без условий?
Например нужно увеличить все задвижки на карте в 2 раза для печати. Если я создаю раскраску с условием, то для задвижек, без семантической информации в БД, раскраска не применяется.(
 
Добрый день!

Тематическую раскраску без условий создать нельзя.
При создании тематической раскраски можно увеличить символ задвижки в 2 раза и задать параметры масштабирования (http://politerm.com/zuludoc/theme_example.htm).
Необходимо задать условия в каком то поле и выполнить его занесением информации по всем задвижкам сразу через запрос (http://politerm.com/zuludoc/zb_browser_query.htm).
Так же можно задать условие (*), в этом случае тема будет применяться при наличии любой информации в этом поле.
 
Sokol, Если для задвижки семантическая информация не занесена, то раскраска для неё не работает (
И не особо понятен смысл функции "обновление" для тематической раскраски. Раскраска должна применяться ко всем объектам на карте удовлетворяющим условиям. Зачем еще что-то обновлять?
 
Может меняться фильтр, могут добавляться новые объекты, могут меняться значения полей. Раскраска автоматически на каждый этот чих не реагирует. Обновление вызывает процедуру пересоздания раскраски.
 
Можете скриптом создать свою собственную раскраску с нужными параметрами. Создание по условиям для значений полей таблицы - это всего лишь один из способов.
 
Через скрип, как я понял объект можно менять используя Parameter property (Theme) (http://politerm.com.ru/zuludoc/zuluax/Theme_Parameter.htm)
Но здесь требуется "ElemID - ID объекта слоя;". Да еще и необходимо создание файла на компьютере пользователя - http://politerm.com.ru/zuludoc/zuluax/Theme_Create.htm
Как мне изменить масштаб всех объектов определенного типа через скрипт - непонятно.
Задать отдельные свойства для печати можно только похоже линейным типам.
 
Простой пример создания темы, задающей для символов с типом 3 размер 300:

Sub CreateTheme()

Set T = CreateObject("zululib.Theme")
Set L = CreateObject("zululib.Layer")

L.Open "d:\Termo\teplosam.b00"

Set Elems = L.EnumElements

Elems.MoveFirst

do
if Elems.IsEOF then exit do
if Elems.TypeID = 3 then
'22 - eThemeSymbolSize
T.Parameter (Elems.ElemID, 22) = 300
end if
Elems.MoveNext
loop

T.UserName = "Пример темы"
'Добавляем тему в слой
Id = L.Themes.AddTheme(T)

End Sub
 
Немного переделал скрипт :
Sub ps()
dim Tid, Te
Set Doc = ActiveDocument
Set Map = Doc.NativeDoc
Set Lays = Map.Layers
Set L = Lays.item(1)
Set Th = L.Themes
Tid = Th.ThemeId(1)
Set T = Th.GetTheme(Tid)
Set Elems = L.EnumElements

Elems.MoveFirst

do
if Elems.IsEOF then exit do
if Elems.TypeID = 9 then
'22 - eThemeSymbolSize
T.Parameter (Elems.ElemID, 22) = 300
end if
Elems.MoveNext
loop

T.UserName = "Пример темы"
'Добавляем тему в слой
Th.SetTheme Tid, T
Te = Th.GetEnabled(Tid)
Th.UpdateTheme(Tid)
Th.SetEnabled Tid, Not Te
End Sub

Теперь повесить скрипт на кнопку и по нажатию тема будет вк\выкл
Страницы: 1