- #******************************************************
- # 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
- #--------------------------------------------------------------------------
Python Code – ecotoobject.py
- #******************************************************
- # 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
- #--------------------------------------------------------------------------