OVERVIEW

- ParametricCopy can be used to make multiple copies of an object, and control their properties using parametric formulas.
- Separate formulas may be independently applied to position, scale, and rotation on the X, Y, and Z axis.
- You can use predefined formulas, such as Fibonacci and Exponential, or write your own formulas as freeform expressions.
- You can also use the output of another program or process, expressed as a list of numbers.
- Since translation, scaling, and rotation do not break component linkage, all copies of a component object remain linked and editable.
- ParametricCopy is a generalization of the Grow2 plugin, and duplicates and expands on its functionality.

DOWNLOAD LINK:

INSTRUCTIONS

- Select an object
- Choose ParametricCopy from the plugins pull-down menu
- Choose a point which will be used as the center of rotations, and the reference for scaling operations
- At the top of the main dialog, enter the number of copies to be made, and select the order of operations (translation,scaling,rotation), and the order of rotation operations (along the X, Y, and Z axis).
- In the rest of the main dialog, select the formulas which will be applied to each operation.
- For each selected formula, a dialog box will appear allowing you to specify the formula's parameters

FORMULAS

Freeform Expressions

- Freeform expressions are defined in terms of the variable, i, which iterates from 0 to the number of copies that are made (the 0-th object is the original object). When entering a freeform expression, type only the portion after "f(i)=" -- Example: f(i)= 6*i will generate values 0, 6, 12, 18, ...
- Freeform expressions may use all of the functions and constants of the Ruby Math module. Examples include the constants E and PI, and the trigonmetric functions sin and cos. Example: f(i)= sin(PI*i/2) will generate values 0,1,0,-1,0,1,0,-1,...
- Freeform expressions may use ruby constructs, such as the x ? y : z construct (if x then y else z). Example f(i)= i%2==0 ? 0 : 1 will generate values 0,1,0,1,0,...
- Freeform expressions may refer to previous iterations using f(i) notation. Example: f(i)= i<2 ? i : f(i-1) + f(i-2) will generate the Fibonacci series: 0, 1, 1, 2, 3, 5, 8, 13, ...

Repeated Value List

- Repeated Value List is a convenient way to use the output of an external program or process, as long as it can be expressed as a space-delimited list of values.
- If the list of values is shorter than the number of copies, it will be repeated.
- Example: 0 1 2 3 will generate values 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3,...

Predefined Parametric Formulas

- Predefined formulas contain one or more constants whose values may be input by the user.
- These formulas are predefined as a convenience, and may alternatively be expressed as freeform expressions -- whenever the inputbox for a predefined formula is onscreen, the status line at the bottom of the sketchup window will display the equivalent freeform expression.
- Current predefined formulas are Constant-Step, Linear-Step-Delta, Exponential, Fibonacci, and Step+Sine.

EXAMPLES

Example 1: Stretched Spiral Staircase

Each step is higher than the previous step by 0.25 feet.

- z-translate = linear-step-delta: step=1', delta=0.25'
- z-rotate = constant-step: step=15 degrees
- z-scale: freeform expression: i==0 ? 1.0 : f(i-1) + 0.25

Example 2: Copying Over a Surface

By using the % (MOD) and / (DIV) operators, copies can be distributed across a surface.

- Copies = 99
- x-translate = freeform expression: i%10
- y-translate = freeform expression: i/10
- z-translate = freeform expression: sin( (i%10) + (i/10)*0.2*pi)

Example 3: Using Random Numbers

Interesting forms can be created using functions such as rand().

- Copies = 300
- Order = Scale Rotate Move
- z-scale = freeform expression: 1.0 + (3.0 * rand())
- x-rotate = freeform expression: rand()*360
- y-rotate = freeform expression: rand()*360

------------

VERSION LIST

- 1.0 2011_10_23:
- First issue.

- 1.01 2011_10_30:
- Fixed bug in Windows with pull-down menus
- Added "Initial_Val" parameter to Step+Sine and Linear-Step-Delta
- Added exception capturing in all entry boxes