There are several workflows that may benefit from calculating the volume between a surface and multiple Z values. For example, when determining the elevation which would result in minimal backfil to level a field. The sample script below calculates the volume and area of a grid file, loops through multiple Z values as the other constant surface value (with user-specified min, max and increment) and writes the results to the worksheet.
To run this script:
- Copy the script below, or download the attached BAS file: GridVolume_MultipleZ.bas.
- In a Windows Explorer window, navigate to C:\Program Files\Golden Software\Surfer.
- Double click on Scripter.exe to launch Scripter.
- Press Ctrl+A to select all of the existing lines then press Delete.
- If you copied this script, press Ctrl+V to paste it into Scripter. If you downloaded it, click File | Open, select the BAS file from your downloads directory, and click Open.
- Click Script | Run to run the script.
*********
'Calculates the volume and area of a grid file, looping through multiple Z values 'as the other constant surface value (with user-specified min, max and increment) 'and writes the results to the worksheet 'Edit "User Input" section to define the upper surface grid file and the Z value iterations Sub Main Dim SurferApp As Object Set SurferApp = CreateObject("Surfer.Application") SurferApp.Visible = True '-------------User Input ------------------------ Path = SurferApp.Path+"\samples\" UpperSurfaceGrid = "demogrid.grd" Min = 0 Max = 50 Increment = 10 '------------------------------------------------------ 'Create a new worksheet window Set Wks = SurferApp.Documents.Add(srfDocWks) For i =Min To Max Step Increment UpperSurface =Path+UpperSurfaceGrid LowerSurface = i Dim Results() As Double SurferApp.GridVolume(upper:=UpperSurface,lower:=LowerSurface, presults:=Results, showreport:=False) Iteration= ((Format(i)-Min)/Increment)+1 Wks.Cells("A1").Value = "Z Value:" Wks.Cells(Iteration, 1).Value = i Wks.Cells("B1").Value = "Positive Volume [Cut]:" Wks.Cells(Iteration, 2).Value = Results(srfGVPosVol) Wks.Cells("C1").Value = "Negative Volume [Fill]:" Wks.Cells(Iteration, 3).Value = Results(srfGVNegVol) Wks.Cells("D1").Value = "Net Volume [Cut minus Fill]:" Wks.Cells(Iteration, 4).Value = Results(srfGVPosVol) - Results(srfGVNegVol) Wks.Cells("E1").Value = "Positive Planar Area:" Wks.Cells(Iteration, 5).Value = Results(srfGVPosPlanarArea) Wks.Cells("F1").Value = "Positive Surface Area:" Wks.Cells(Iteration, 6).Value = Results(srfGVPosArea) Next i 'Saves the worksheet Wks.SaveAs(Path+"VolumeReport.dat") End Sub
Updated November 2021
Comments
Please sign in to leave a comment.