Draw a circle around a point at a defined radius via Surfer automation

Surfer's range ring and buffer features can be used to create shapes with a defined radius.  The RangeRing help page provides a sample script for use of this feature via automation.  Alternatively, the script below creates a circle centered around the XY coordinates defined in a data file.

To run this script:

  1. Copy the script below.
  2. In a Windows Explorer window, navigate to C:\Program Files\Golden Software\Surfer\Scripter.
  3. Double click on Scripter.exe to launch Scripter.
  4. Press Ctrl+A to select all of the existing lines then press Delete.
  5. Press Ctrl+V to paste it into Scripter. 
  6. Change the Buffer value to the desired radius on line 21.
  7. Click Script | Run to run the script.
Sub Main
    Dim SurferApp, Plot, Shapes, Location, Wks, Ellipse As Object
    Set SurferApp = CreateObject("Surfer.Application")
    SurferApp.Visible = True
    Set Plot = SurferApp.Documents.Add(srfDocPlot)
    Set Shapes = Plot.Shapes

    'Specify location of point
    Set Location = Shapes.AddSymbol(x:=4, y:=3)

    'Select which point you want to draw the circle around, export to BLN and view the coordinates of the point
    Plot.Export("c:\temp\testpoint.bln", True)
    Set Wks = SurferApp.Documents.Open(FileName:="c:\temp\testpoint.bln")
    Xcoord = Wks.Cells(Row:=2, Col:=1)
    Ycoord = Wks.Cells(Row:=2, Col:=2)

    'Add or subtract your buffer value from the point coordinates to create the circle
    Set Ellipse = Shapes.AddEllipse(Left:=Xcoord-Buffer, Top:=Ycoord+Buffer, Right:=Xcoord+Buffer, Bottom:=Ycoord-Buffer)
End Sub


Updated November 2021

Was this article helpful?
0 out of 1 found this helpful



Please sign in to leave a comment.