@JohannesLindner thanks a lot for the script. I gave it a whirl, but it took 1hr 40mins to create a point array at the size I needed. However, I persisted with my previous approach (creating rasters) and it's only taken 10mins for the same area. Here's the interim script:
import arcpy
from arcpy import env
from arcpy.sa import *
inputPolygon = arcpy.GetParameterAsText(0)
outputPoint = arcpy.GetParameterAsText(1)
cellsize = arcpy.GetParameterAsText(2)
maxDepth = arcpy.GetParameterAsText(3)
arcpy.env.workspace = r"INSERT"
#create base raster
rasterBase = "memory\\rasterBase"
arcpy.conversion.PolygonToRaster(inputPolygon, 'OBJECTID', rasterBase, '', '', cellsize, 'TRUE')
#reclassify base raster to match depth values and convert to point2D then point3D
depthRange = list(range(0,int(maxDepth)+1))
outRaster = "memory\outRaster"
for depth in depthRange:
MyRemapRange = RemapRange([[0,9999,depth]])
outRas = Reclassify(rasterBase, 'Value', MyRemapRange, 'NODATA')
outRas.save(outRaster)
outPoint2D = "memory\outPoint2D"
arcpy.conversion.RasterToPoint(outRaster, outPoint2D, 'Value')
outPoint3D = outputPoint+"_"+str(depth)+"m"
arcpy.ddd.FeatureTo3DByAttribute(outPoint2D, outPoint3D, 'grid_code')
arcpy.AddMessage("Saved 3D Point_"+str(depth)+"m")
arcpy.AddMessage("Finished...")
with the added advantage that I can defined the extent of the point array with a polygon, and control the depth and resolution via parameters.
David
..Maps with no limits..