priyanka_mehta

Avenue to VBA

Discussion created by priyanka_mehta on Mar 15, 2011
Latest reply on Mar 31, 2011 by priyanka_mehta
Hi all,

I have never used Avenue scripts. In fact when I was going through forum I realized it was about in the year 2000 that the change from .ave to vba had started taking place. That time I was probably in high school :P

Anyways,, is there any documentation that gives information on library changes from avenue to vba.

I basically want to convert the following avenue script to vba.. Can anyone please help me with that :


tView = av.GetActiveDoc

tdisp = av.GetActiveDoc.getdisplay

atheme = tView.GetThemes.get(0)

tGrid = atheme.GetGrid
CellSize = tGrid.GetCellSize
theGridExtent = tGrid.GetExtent

top = thegridextent.gettop
bottom = thegridextent.getbottom
left = thegridextent.getleft
right = thegridextent.getright


userPoint = tdisp.ReturnUserPoint
x = userPoint.GetX
y = userPoint.GetY

userCellValue = tGrid.CellValue(userPoint,Prj.MakeNull)



coordfile = FileDialog.Put("xyz.dbf".AsFileName,"*.*","File")
theVtab = Vtab.MakeNew(coordfile,dbase)
coortable = Table.Make(theVtab)
coortable.SetName("High Points Blocking View")

PntType = Field.Make("Coord Type",#FIELD_CHAR,12,0)
theAzmth = Field.Make("Azimuth",#FIELD_DECIMAL,10,3)
Pntx = Field.Make("x",#FIELD_DECIMAL,25,4)
Pnty = Field.Make("y",#FIELD_DECIMAL,25,4)
theAngle = Field.Make("View Angle",#FIELD_DECIMAL,25,4)
theVtab.AddFields({PntType,theAzmth,Pntx,Pnty,theAngle})

rec = theVtab.AddRecord

theVtab.SetValue(PntType,rec,"User")
theVtab.SetValue(Pntx,rec,x)
theVtab.SetValue(Pnty,rec,y)



av.ShowStopButton

for each azimuth in 0..359
  tmpPoint = Point.MakeNull
  oldCellValue = userCellValue
  distance = CellSize
  azimuthR = azimuth.AsRadians
  x2 = x
  y2 = y
  higherPt = false
  
     While ( (x2 < right) and (x2 > left) and (y2 < top) and (y2 > bottom))
        
        a = distance * azimuthR.sin
        b = distance * azimuthR.cos
        x2 = x + a
        y2 = y + b
                
        if ( (x2 < right) and (x2 > left) and (y2 < top) and (y2 > bottom)) then
          tmpPoint.SetX(x2)
          tmpPoint.SetY(y2)
          NewCellValue = tGrid.CellValue(tmpPoint,Prj.MakeNull)
          x3 = x2
          y3 = y2
          
          if ( NewCellValue > OldCellValue) then
             OldCellValue = NewCellValue
             x4 = x3
             y4 = y3
             higherPt = true
          end
        end
        distance = distance + CellSize
         
        doMore = av.SetWorkingStatus
          if (not doMore) then
            exit
          end
     end
    
    rec = theVtab.AddRecord
    theVtab.SetValue(PntType,rec,"Calculated")
    theVtab.SetValue(theAzmth,rec,azimuth)
        
    if (higherPt = true) then
      HowFar = ( ((x - x4)*(x - x4)) + ((y - y4)*(y-y4))).sqrt
      height = NewCellValue - userCellValue
      hyp = ( (HowFar*HowFar) + (height*height)).sqrt
      theVtab.SetValue(Pntx,rec,x4)
      theVtab.SetValue(Pnty,rec,y4)
      theVtab.SetValue(theAngle,rec,HowFar/hyp)
    else
      theVtab.SetValue(Pntx,rec,x3)
      theVtab.SetValue(Pnty,rec,y3)
      theVtab.SetValue(theAngle,rec,1)
    end
     
end
av.ClearWorkingStatus
total = 0
for each rec in theVtab
  total = total + theVtab.ReturnValue(theAngle,rec)
end
total = (total/360) * 100
Msgbox.Info("The sky seen index is " + total.asString,"INFO")




Thanks !

Priyanka

Outcomes