Skip to content

Instantly share code, notes, and snippets.

@zeffii
Forked from anonymous/lidar2.py
Created December 21, 2014 12:36
Show Gist options
  • Select an option

  • Save zeffii/54d65b86a460605c3d15 to your computer and use it in GitHub Desktop.

Select an option

Save zeffii/54d65b86a460605c3d15 to your computer and use it in GitHub Desktop.
import bpy
import time
import csv
A = time.time()
dfile = r"C:\Users\dealga\Desktop\Archive\SU8606_DSM_1M.asc"
getval = lambda i: int(next(i).split()[1])
with open(dfile) as ofile:
ncols = getval(ofile)
nrows = getval(ofile)
xllcorner = getval(ofile)
yllcorner = getval(ofile)
cellsize = getval(ofile)
NODATA_value = getval(ofile)
print(ncols, nrows, xllcorner, yllcorner, cellsize, NODATA_value)
# this will read the rest
verts = []
add_vert = verts.append
asc_reader = csv.reader(ofile, delimiter=' ')
# ni = nrows #? +1 -1
# nj = ncols #? +1 -1
ni = 1000
nj = 1000
for i, row in enumerate(asc_reader):
if i >= ni:
break
for j in range(int(ncols)):
if j >= nj:
break
z = (float(row[j]) / 60)
x = j * 0.01 # cell x width
y = i * 0.01 # cell y width
add_vert((x,y,z))
print('done')
print('last vertex:', verts[-1])
B = time.time()
total_time = B-A
print('total_time:', total_time)
faces = []
add_face = faces.append
# generate_edges, i = verts y, j = verts x
total_range = ((ni-1) * (nj))
indices = []
for i in range(total_range):
if not ((i+1) % nj == 0):
add_face([i, i+nj, i+nj+1, i+1])
# do your own error handling
mesh_data = bpy.data.meshes.new("LIDAR_mesh_data3")
mesh_data.from_pydata(verts, [], faces)
mesh_data.update()
LIDAR_object = bpy.data.objects.new("LIDAR_Object3", mesh_data)
scene = bpy.context.scene
scene.objects.link(LIDAR_object)
LIDAR_object.select = True
@nebadon2025
Copy link

Just wanted to say this still works 11 years later in Blender 4.5.3 and it works great! Thanks!

@zeffii
Copy link
Author

zeffii commented Nov 19, 2025

Just wanted to say this still works 11 years later in Blender 4.5.3 and it works great! Thanks!

I'm surprised, but glad to hear it!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment