[codesyntax lang=”python”]
#******************************************************
# Place an object at the position of each instance
# in an ecosystem
#
# - ecotoobject.py
# - By Mark Caldwell
# - Version 0.4
# - 24th April 2007
# - Tested with Vue 6 Infinite
#
# How to use in 4 easy steps
#
# 1. Download this file onto your computer
#
# 2. Select an object with a populated EcoSystem applied
#
# 3. Then run script
# To run it go to Python -> Run Python Script
# Then locate the file on your computer
#
# 4. Respond to the scripts options and then wait for
# it to work
#
#******************************************************
#----------------------------------------------
# Collect the user's input
#----------------------------------------------
group=Prompt('Group Objects?\n 1: Group\n 2: Metablob \n3: No','1',true,'')
form=Prompt('Object Type?\n 1: Cube\n 2: Sphere \n3: Cylinder \n4: Pyramid\n5: Cone\n 6: Torus','1',true,'')
maximum_objects=int(Prompt('Maximum number of objects to create?','1000',true,''))
scale_factor=float(Prompt('Scale Factor for Objects','0.1',true,''))
#--------------------------------------------------------------------------
# Test the user has a scene loaded
#--------------------------------------------------------------------------
if TestLoaded():
#--------------------------------------------------------------------------
# Test the user has 1 object selected with an Eco System on it
#--------------------------------------------------------------------------
numselected=CountSelectedObjects()
if numselected>1:
message="Please select only one object."
elif numselected<1:
message="Please select an object."
else:
#--------------------------------------------------------------------------
#Set Up a Few Variables
#--------------------------------------------------------------------------
bObject=GetSelectedObjectByIndex(0) # Get first selected object
Eco = GetEcosystemOnObject(bObject) # Get EcoSystem on first selected
if Eco==None:
message="Please select an object with an EcoSystem material applied to it."
elif bObject.IsLocked(): # Check object isn't locked
message="Please select an object that isn't locked."
else:
ecocount=Eco.GetInstanceCount () # Count number of instances in EcoSystem
if ecocount>maximum_objects: # If this is greater than maximum_objects restrict it to maximum objects
ecocount=maximum_objects
if ecocount==0:
message="Please select an EcoSystem that has been populated."
else:
#--------------------------------------------------------------------------
# Create Objects
#--------------------------------------------------------------------------
for i in range(0,ecocount):
pos=Eco.GetInstancePosition (i) # Get instance position
rot=Eco.GetInstanceRotation (i) # Get instance rotation
sca=Eco.GetInstanceScale (i) # Get instance scale
if form=='2':
obj=AddSphere()
elif form=='3':
obj=AddCylinder()
elif form=='4':
obj=AddPyramid()
elif form=='5':
obj=AddCone()
elif form=='6':
obj=AddTorus()
else:
obj=AddCube() # Create Object
obj.SetPosition(pos[0],pos[1],pos[2]) # Set object's position
obj.Rotate(rot[0],rot[1],rot[2]) # Set object's rotation
obj.ResizeAxis(sca[0]*scale_factor,sca[1]*scale_factor,sca[2]*scale_factor) # Set object's size
if group=='1' or group=='2':
if i>0:
obj.SetName(name)
else:
name=obj.Name()
DeselectAll()
if group=='1':
SelectByName(name)
Group()
elif group=='2':
SelectByName(name)
MetaBlob()
DeselectAll()
Select(bObject)
message="Eco to Object Successful"
else:
message="No Scene Loaded"
Message(message) # Display message
#--------------------------------------------------------------------------
# End of Script
#--------------------------------------------------------------------------
[/codesyntax]
Python Code – ecotoobject.py
[codesyntax lang=”python”]
#******************************************************
# Place a cube at the position of each instance of an
# object in an ecosystem
#
# - ecotoobject.py
# - By Mark Caldwell
# - Version 0.1
# - 29th June 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 maximum_objects below
# if you want to risk more that 1000 objects
#
# 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
#----------------------------------------------
maximum_objects=1000 # maximum_objects sets the maximum number of instances that the script will replace with objects
# this stops it running away and crashing Vue by trying to add 1 million cubes
#--------------------------------------------------------------------------
# Test the user has a scene loaded
#--------------------------------------------------------------------------
if TestLoaded():
#--------------------------------------------------------------------------
# Test the user has 1 object selected with an Eco System on it
#--------------------------------------------------------------------------
numselected=CountSelectedObjects()
if numselected>1:
message="Please select only one object."
elif numselected<1:
message="Please select an object."
else:
#--------------------------------------------------------------------------
#Set Up a Few Variables
#--------------------------------------------------------------------------
bObject=GetSelectedObjectByIndex(0) # Get first selected object
Eco = GetEcosystemOnObject(bObject) # Get EcoSystem on first selected
objlist=[bObject]
if Eco==None:
message="Please select an object with an EcoSystem material applied to it."
elif bObject.IsLocked(): # Check object isn't locked
message="Please select an object that isn't locked."
else:
ecocount=Eco.GetInstanceCount () # Count number of instances in EcoSystem
if ecocount>maximum_objects: # If this is greater than maximum_objects restrict it to maximum objects
ecocount=maximum_objects
if ecocount==0:
message="Please select an EcoSystem that has been populated."
else:
#--------------------------------------------------------------------------
# Create Objects
#--------------------------------------------------------------------------
for i in range(0,ecocount):
pos=Eco.GetInstancePosition (i) # Get instance position
rot=Eco.GetInstanceRotation (i) # Get instance rotation
sca=Eco.GetInstanceScale (i) # Get instance scale
object=AddCube() # Create Object
object.SetPosition(pos[0],pos[1],pos[2]) # Set object's position
object.Rotate(rot[0],rot[1],rot[2]) # Set object's rotation
object.ResizeAxis(sca[0],sca[1],sca[2]) # Set object's size
message="Eco to Object Successful"
else:
message="No Scene Loaded"
Message(message) # Display message
#--------------------------------------------------------------------------
# End of Script
#--------------------------------------------------------------------------
[/codesyntax]

