Equal Scale Replicate Python Script for Vue
This python script can be run to equalise the scaling of replicated objects. First you replicate an object in the usual way in Vue (Using Edit -> Replicate) and then you run this script. If you applied a scale to any of the dimensions it will alter the way they are scaled. Vue’s normal scaling for replicate is to scale each object by applying the scale factor to the previous object created. This script sets the scaling to be uniform from one object to the next. This allows stepped pyramids and other similar structures to be quickly created.
Download: Vue Equal Replicate (2k Zip Archive)
- ######################################################################################################
- # Equally stepped scalling for objects produced using Vue's replicate feature
- #
- # - equalreplicate.py
- # - By Mark Caldwell
- # - Version 0.1.0
- # - 7th January 2008
- # - Copyright Mark Caldwell 2008
- # - Tested with Vue 6 Infinite on a PC
- #
- # How to use in 3 easy steps
- #
- # 1. Download and unzip this file onto your computer
- #
- # 2. Replicate an object in Vue
- #
- # 3. With the replicated objects still selected run this script
- #
- ######################################################################################################
-
- count=CountSelectedObjects() # Count the number of objects selected
-
- if count>2: # Check there are more than 2 objects so the script will do something
-
- # Use 2nd and 3rd objects replicated as scale return from first object can be missleading
-
- object=GetSelectedObjectByIndex(1) # Get the second object
- xyz1=object.GetScale() # Get the scale of the second object
- object=GetSelectedObjectByIndex(2) # Get the third object
- xyz2=object.GetScale() # Get the scale of the third object
-
- sfx=xyz1[0]/xyz2[0] # Scale factor for x to restore to full size
- sfy=xyz1[1]/xyz2[1] # Scale factor for y to restore to full size
- sfz=xyz1[2]/xyz2[2] # Scale factor for z to restore to full size
-
- stepx=1-(1/sfx) # Calculate the step scale for equal steps in x
- stepy=1-(1/sfy) # Calculate the step scale for equal steps in y
- stepz=1-(1/sfz) # Calculate the step scale for equal steps in z
-
- for i in range(1,count): # Loop through the selected objects
- object=GetSelectedObjectByIndex(i) # Get the object
- object.ResizeAxis(sfx**(i+1),sfy**(i+1),sfz**(i+1)) # Scale it to unscaled size
- object.ResizeAxis(1-stepx*i,1-stepy*i,1-stepz*i) # Apply scaling for step
-
- Refresh() # Refresh the display to show the effect of script running


