Creating an ASCII Text file for ArcGIS from existing Terrain
What I need is a MAXScript that will sample an existing terrain on a grid
that is n columns by n rows with a specified interval for each. For
example: 10 columns by 10 rows with 10m between each column and 10m
between each row.
All the script needs to do is start with a point in the upper left hand
corner of the array, project a test ray in the negative Z direction, once
that ray intersects with the terrain below write that elevation along
with the point number to a .txt file and then move the point to the next
position to the right (based on the spacing interval), renumber the
point, and repeat the same output process.
Once the point gets to the end of the column it needs to go back to the
far left and begin again on the next row, keeping the numbering
consistent. The numbering for the array would begin with "Point01" in
the upper left hand corner and go from left to right until it reaches the
bottom right of the array. In this example of a 10 x 10 array the last
point number would be "Point100" which would be the last point on the far
right of the last row.
For a small array I could create points in 3dsMax and use the 'Move to
Surface' script, then export the positions myself to a text file but the
arrays I'm dealing with for this particular project are thousands of
columns x thousands of rows. This results in millions of points in the
array. Figured if I could get someone to help me out with a script that
would move, rename, and output one point that traveled around the terrain
in an array fasion, it would be an easier approach to obtaining the
elevation data in a text format.
Comments
Check your email.
Check your email.
Tools and Scripts for Autodesk 3dsMax
I get it now. I looked at
I get it now. I looked at the file again and saw that in the areas where there is no terrain hit, the script still creates the point. Can we get it to print the output for "No data value" like the rest of the points? Print the x value, y value, and then -999 (or whatever is specified in the UI) for the z for those points?
The points are crated just to
The points are crated just to show you where they are in the terrain. I expected that you will remove this line(that creates the points) from the script, because creating all those points slow down the performance. I will add checkbox to allows you to create or not points in both places - terain and "nothing". This covers question 2) In the infoFile all points are written - you can see for example - point234 -999 this ie "no data point" - the point that touching the terrain. Also will include the "no data point" - question 1)
The script do not use those points. It create them after the rayHit is executed. So there is no need of them, but they are a good visual representation of what happens.
[quote] Also, how difficult would it be to still be able to specify the first start point of the array like you could in the first script? [/quote]
In the first script you can't define the starting point. When you look your scene in TOP viewport, the starting point is at top left part of your selection of objects.
[quote] And can we format the data to print as follows: PointNumber,x,y,z [/quote]
Yes. Will add this.
Tools and Scripts for Autodesk 3dsMax
Also, how difficult would it
Also, how difficult would it be to still be able to specify the first start point of the array like you could in the first script?
And can we format the data to print as follows:
PointNumber,x,y,z
with no brackets?
I know I'm asking for a lot and I do appreciate your patience.
Very very cool! This script
Very very cool! This script is really turning out to be amazing! I love the ArcGIS_Exporter_v11.ms....looks like we're getting there. Two things though:
1) When creating the array I need each column & each row to have the same number of points respectively like the image below shows...
http://call21st.com/goofy7012/screenShot.png
Where there are no terrain tiles for the points to be dropped on, there still needs to be points created and just placed at the "No data value" elevation. This way each row and column will have the same number of points.
2) Is it possible to drop a line of code in to not create the points? This way once I get the array set up and have it working like I want, I can push the button to not create the points for the final and larger array. I'd like this feature since originally you said Max could do this function without having to generate actual geometry, points, etc. I think this would be a really cool option.
Looks great so far just these couple of things and I think we'll be there. Let me know what you think.
Thanks A Million!
Todd Davis
Check your email.
Check your email.
Tools and Scripts for Autodesk 3dsMax
well here's a faster version
well here's a faster version of it:
as it's a static object/collection you can use the RayMeshGridIntersect class wich is significantly faster, just something to note for the future :)
Raphael Steves
Many thanks my friend. I'll
Many thanks my friend. I'll be sure that our company makes a donation for your efforts.
I will do it later this
I will do it later this night. :)
Tools and Scripts for Autodesk 3dsMax
I do appreciate all your help
I do appreciate all your help and once my boss returns from a business trip I'm sure I can get him to make a donation on your web page.