Terrain CSV

Here are two scripts that allow you to work with a terrain by exporting it as a CSV file that can be edited in a spreadsheet and then importing it back into Vue.

Select a terrain and then run terraintocsv.py. A file called terraindata.csv will be saved in the directory you put the script in.

Edit the CSV file in your prefered spreadsheet or text editor. Save a CSV file over the original terraindata.csv

Go back to Vue. With the original terrain selected run the csvtoterrain.py and the altered CSV file will be loaded and used to set the terrains altitudes.

Save Terrain

[codesyntax lang=”python”]

#******************************************************
# Generate a CSV file from a Terrain
#
# - terraintocsv.py
# - By Mark Caldwell
# - Version 0.1
# - 29th August 2006
# - Tested with Vue 5 Infinite 5.10 and Vue 6 Pre Release
#
# How to use in 4 easy steps
#
# 1. Download this file onto your computer
#
# 2. Edit file to set where the file will be saved
#
# 3. Select a Terrain Object
#
# 4. Then run script and wait for it to work
#    To run it go to Python -> Run Python Script
#    Then locate the file on your computer
#
#******************************************************

#----------------------------------------------
# Configuration: Set these to alter end result
#----------------------------------------------

file='terraindata.csv'          # Full Path to where you want the CSV data saved

#--------------------------------------------------------------------------
# Test the user has a scene loaded
#--------------------------------------------------------------------------

if TestLoaded():

#--------------------------------------------------------------------------
# Test the user has 1 object selected and it is a terrain
#--------------------------------------------------------------------------

    numselected=CountSelectedObjects()

    if numselected>1:
        message="Please select only one object."
    elif numselected<1:
        message="Please select an object."
    else:

#--------------------------------------------------------------------------
# Read the terrain and generate a CSV file from it
#--------------------------------------------------------------------------

        bObject=GetSelectedObjectByIndex(0)     # Get first selected object

        if bObject.IsTerrain()==False:
            message="Please select a terrain."
        elif bObject.IsLocked():                # Check object isn't locked
            message="Please select an object that isn't locked."
        else:
            TerrainObj=bObject.ToTerrain()      # Get Terrain Object

            height= TerrainObj.Height()         # Get Terrain Objects Height
            width= TerrainObj.Width()           # Get Terrain Objects Width

            altitudes=TerrainObj.TerrainAltitudes () # Get the Terrain Objects Altitude Array
            output=open (file,'w')
            for i in range (0,height):
                line=""
                for j in range (0,width):
                    line=line+str(altitudes[i][j])
                    if j<(width-1):
                        line=line+','
                output.write(line)
                output.write('\n')
            output.close()
            message="Terrain to CSV Successful"
else:
    message="No Scene Loaded"

Message(message)    # Display message

#--------------------------------------------------------------------------
# End of Script
#--------------------------------------------------------------------------

[/codesyntax]

Load Terrain

[codesyntax lang=”python”]

#******************************************************
# Generate a CSV file from an ecosystem
#
# - terraintoeco.py
# - By Mark Caldwell
# - Version 0.1
# - 29th August 2006
# - Tested with Vue 5 Infinite 5.10 and Vue 6 Pre Release
#
# How to use in 4 easy steps
#
# 1. Download this file onto your computer
#
# 2. Edit the configuration variable file to set where the file was saved
#
# 3. Select an object with a populated EcoSystem applied
#
# 4. Then run script and wait for it to work
#    To run it go to Python -> Run Python Script
#    Then locate the file on your computer
#
#******************************************************

#----------------------------------------------
# Configuration: Set these to alter end result
#----------------------------------------------

file='terraindata.csv' # Full Path to where you saved the CSV file

#--------------------------------------------------------------------------
# Test the user has a scene loaded
#--------------------------------------------------------------------------

if TestLoaded():

#--------------------------------------------------------------------------
# Test the user has 1 object and that it is a terrain
#--------------------------------------------------------------------------

    numselected=CountSelectedObjects()

    if numselected>1:
        message="Please select only one object."
    elif numselected<1:
        message="Please select an object."
    else:
        bObject=GetSelectedObjectByIndex(0)     # Get first selected object

        if bObject.IsTerrain()==False:
            message="Please select a terrain."
        elif bObject.IsLocked():                # Check object isn't locked
            message="Please select an object that isn't locked."
        else:

#--------------------------------------------------------------------------
# Apply terrain data to terrain
#--------------------------------------------------------------------------

            altitudes=[]
            TerrainObj=bObject.ToTerrain()

            file=open(file,'r')

            while 1:
                line = file.readline()
                if not(line):
                    break

                bits=line.split(',')

                alt=[]
                for x in bits:
                    alt.append(float(x))
                altitudes.append(alt)

            TerrainObj.SetTerrainAltitudes (altitudes)  # Set terrain heights

            message="CSV to Eco Successful"

else:
    message="No Scene Loaded"

Refresh()

Message(message)    # Display message

#--------------------------------------------------------------------------
# End of Script
#--------------------------------------------------------------------------

[/codesyntax]

impworks © Copyright Mark Caldwell 1996 - 2023