Ответ на первый вопрос:
aView = av.GetActiveDoc
theThemes = aView.GetActiveThemes
polTheme = {}
for each t in theThemes
if (t.GetFTab.FindField("Shape").GetType = #FIELD_SHAPEPOLY) then
polTheme.Add(t)
end
end
if (polTheme.Count > 0) then
temChoice = (MsgBox.ChoiceAsString({"Skip","Pen","Fill"},
"Select a legend type", "Symbol Type: Theme"))
for each pt in polTheme
if (temChoice = "Skip") then
elseif (temChoice = "Pen") then
pt.SetLegend(Legend.Make(#SYMBOL_PEN))
pt.UpdateLegend
elseif (temChoice = "Fill") then
end
end
end
ЗЫ: полигональную тему, при этом, придется предварительно продублировать в ТОС-е, однако преобразовывать в линейную не понадобится.
ЗЗы: не помню чей скрипт.. не правил.