Итоговый скрипт такой.
Работает на ctrl+click - описание скрипта, click - построение линии по всем значениям таблицы, shift+click - построение линии по выборке
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
if (System.IsControlKeyDown) then
message =
" "+nl+
" Построение графической линии по значениям из файла DBF. "+
"Значения берутся из полей X и Y. При простом клике в обработку запускаются все значния таблицы. Если использовать SHIFT+click - линия строится по выборке. Все таблицы предварительно должны быть загружены в проект. Активный документ - Вид."+nl+
" Автор программы: Альберт Савенко "+nl+
" 20009 г., апрель. "+nl+
" "+nl+
" "+nl
'Title here
msgbox.report(message,"Построение линии из DBF файла")
return nil
end
'===========================================================
if (System.IsShiftKeyDown) then
if (av.GetActiveDoc.Is(view).Not) then
msgBox.Info("Активным документом должен быть Вид","")
return nil
end
theView = av.GetActiveDoc
thegraphics=theview.getgraphics
theTableList={}
for each thedoc in av.GetProject.GetDocs
If (theDoc.Is(Table)) then
theTableList.Add(theDoc)
end
end
TheTable=MsgBox.ListAsString(theTableList,"","")
TheFtab = TheTable.GetVtab
theList={}
fX=TheFTab.FindField("X")
fY=TheFTab.FindField("Y")
For each rec in theFtab.GetSelection
Xtab = TheFTab.ReturnValue(fX,rec)
Ytab = TheFTab.ReturnValue(fY,rec)
thelist = thelist.Add(
Xtab@Ytab)
' создание линии из точечного шейпфайла по точкам для плана
end
theShapeM=GraphicShape.Make(Polyline.Make({theList}))
thegraphics.add(theShapeM)
theView.Invalidate
'end
return nil
end
'===========================================================
if (av.GetActiveDoc.Is(view).Not) then
msgBox.Info("Активным документом должен быть Вид","")
return nil
end
theView = av.GetActiveDoc
thegraphics=theview.getgraphics
theTableList={}
for each thedoc in av.GetProject.GetDocs
If (theDoc.Is(Table)) then
theTableList.Add(theDoc)
end
end
TheTable=MsgBox.ListAsString(theTableList,"","")
TheFtab = TheTable.GetVtab
theList={}
fX=TheFTab.FindField("X")
fY=TheFTab.FindField("Y")
For each rec in theFtab
Xtab = TheFTab.ReturnValue(fX,rec)
Ytab = TheFTab.ReturnValue(fY,rec)
thelist = thelist.Add(
Xtab@Ytab)
' создание линии из точечного шейпфайла по точкам для плана
end
theShapeM=GraphicShape.Make(Polyline.Make({theList}))
thegraphics.add(theShapeM)
theView.Invalidate
'end