﻿'GridVolume.bas calculates the volume and area of a grid file.
'The results are written to the worksheet and saved in a DAT file.

'=======================================

Sub Main

'Declare SurferApp as an object
	Dim SurferApp As Object
	Set SurferApp = CreateObject("Surfer.Application")
	SurferApp.Visible = True

'-------------User Input Required------------------------
'Specifies the upper and lower surfaces. They can be a grid file or a constant Z value.

	UpperSurface = SurferApp.Path+"\samples\demogrid.grd"
	LowerSurface = 0

'------------------------------------------------------

'Calculates the volume and area. This method does not display the report window
	Dim Results() As Double
	SurferApp.GridVolume(upper:=UpperSurface,lower:=LowerSurface, presults:=Results, showreport:=False)
	
'Create a new worksheet window
	Set Wks = SurferApp.Documents.Add(srfDocWks)

'Put the contents of pResults (the Grid Volume report) in the worksheet cells

	Wks.Cells("A1").Value = "Upper Surface:"
	Wks.Cells("B1").Value =	UpperSurface

	Wks.Cells("A2").Value = "Lower Surface"
	Wks.Cells("B2").Value =	LowerSurface

	Wks.Cells("A4").Value = "VOLUMES"

	Wks.Cells("A5").Value = "Trapezoidal Rule:"
	Wks.Cells("B5").Value =	Results(srfGVTrapVol)

	Wks.Cells("A6").Value = "Simpson's Rule:"
	Wks.Cells("B6").Value = Results(srfGVSimpVol)

	Wks.Cells("A7").Value = "Simpson's 3/8 Rule:"
	Wks.Cells("B7").Value = Results(srfGVSimp38Vol)

	Wks.Cells("A9").Value = "CUT & FILL VOLUMES"

	Wks.Cells("A10").Value = "Positive Volume [Cut]:"
	Wks.Cells("B10").Value = Results(srfGVPosVol)

	Wks.Cells("A11").Value = "Negative Volume [Fill]:"
	Wks.Cells("B11").Value = Results(srfGVNegVol)

	Wks.Cells("A12").Value = "Cut minus Fill:"
	Wks.Cells("B12").Value = Results(srfGVPosVol) - Results(srfGVNegVol)

	Wks.Cells("A14").Value = "AREAS"

	Wks.Cells("A15").Value = "Positive Planar Area:"
	Wks.Cells("B15").Value = Results(srfGVPosPlanarArea)

	Wks.Cells("A16").Value = "Negative Planar Area:"
	Wks.Cells("B16").Value = Results(srfGVNegPlanarArea)

	Wks.Cells("A17").Value = "Blanked Planar Area:"
	Wks.Cells("B17").Value = Results(srfGVBlankedArea)

	Wks.Cells("A18").Value = "Total Planar Area"
	Wks.Cells("B18").Value = Results(srfGVPosPlanarArea)+ Results(srfGVNegPlanarArea) + Results(srfGVBlankedArea)

	Wks.Cells("A20").Value = "Positive Surface Area:"
	Wks.Cells("B20").Value = Results(srfGVPosArea)

	Wks.Cells("A21").Value = "Negative Surface Area:"
	Wks.Cells("B21").Value = Results(srfGVNegArea)

'Saves the worksheet
	Wks.SaveAs("C:\temp\VolumeReport.dat")

End Sub
