Нужен скрипт

0 голосов
спросил 07 Апр, 09 от S.E. (12,840 баллов) в категории Программные продукты Esri

Есть ли у кого-нибудь простенький скрипт для построения графика по двум параметрам. То есть есть dbf, надо отрисовать график в AV.

Кинуть можно на olha4@mail.ru

17 Ответы

0 голосов
ответил 10 Апр, 09 от Albert1 (10,780 баллов)
GetSelection работает с выборкой, если обрабатывается вся таблица, его убрать надо  :)
0 голосов
ответил 10 Апр, 09 от S.E. (12,840 баллов)

Все, порядок.  Всем спасибо.

 
0 голосов
ответил 10 Апр, 09 от geologic (39,860 баллов)
работает? Киньте тогда окончательный текст с комментариями, будет для FAQ законченная тема.
0 голосов
ответил 11 Апр, 09 от S.E. (12,840 баллов)
Итоговый скрипт такой.
Работает на 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
 
 
 
 
0 голосов
ответил 13 Апр, 09 от geologic (39,860 баллов)
Спасибо, вставил в FAQ.
Эх, надо бы взяться и сшить этот текст сразу с инклинометрией... Но уже задачи не те, нету мотивации :(
0 голосов
ответил 14 Апр, 09 от Albert1 (10,780 баллов)
Спасибо, вставил в FAQ.
Эх, надо бы взяться и сшить этот текст сразу с инклинометрией... Но уже задачи не те, нету мотивации :(

http://dataplus.ru/Root/Scripts/View.asp?ScriptID=90 8)    
0 голосов
ответил 14 Апр, 09 от geologic (39,860 баллов)
Спасибо. А ваша программа строит ПРОСТО 3D трассы скважин - как-то по инструкции это не очевидно. Вроде "скважины отстраиваются по координатам устьев и данным инклинометрии", а как продукт получаются разрезы и "по два файла на выработку – литология и опробование"?
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...