| Here's some code which may be of use to you. 
 
 
Global G_grid_cell_size# = 1.0
Graphics3D 800, 600, 0, 2
Global G_camera = CreateCamera()
CameraZoom G_camera, 1.6
TurnEntity G_camera, 90.0, 0.0, 0.0
MoveEntity G_camera, 0.0, 0.0, -20.0
Global G_light = CreateLight()
Global G_cube = CreateCube()
ScaleMesh G_cube, 0.5, 0.5, 0.5
PositionMesh G_cube, 0.5, 0.5, 0.5
UpdateNormals G_cube
Global G_grid = CreateGrid()
EntityPickMode G_grid, 2
Global G_picked_entity
SetBuffer BackBuffer()
Repeat
	G_picked_entity = CameraPick( G_camera, MouseX(), MouseY() )
	
	If G_picked_entity
	
		x# = Floor( PickedX() / G_grid_cell_size# ) * G_grid_cell_size#
		z# = Floor( PickedZ() / G_grid_cell_size# ) * G_grid_cell_size#		
		PositionEntity G_cube, x#, PickedY(), z#
	
	EndIf
	
	UpdateWorld
	RenderWorld
	Flip
	Delay( 1 )
Until KeyHit( 1 )
End
Function CreateGrid()
	; -- Create grid texture.
	Local i, x, y
	Local grid_2d_tex = CreateTexture ( 256, 256, 11 )
	SetBuffer TextureBuffer ( grid_2d_tex )
	For i = 0 To 4
		Rect i, i, 256 - i - i, 256 - i - i, False
	Next
	For y = 5 To 250
		For x = 5 To 250
			WritePixel x, y, 0
		Next
	Next
	;^^^^^^
	; -- Create 2D grid.
	Local grid_2D = CreatePlane ()
	EntityTexture grid_2D, grid_2d_tex
	EntityFX grid_2D, 9
	;^^^^^^
	Return grid_2D
End Function
 
 
 |