Macro clone explicit

Description
This macro creates a copy of each selected object and sets its properties to an expression linked to the original object, making it an explicit and editable clone.

This clone is a copy of the original object, as in the command, but its properties are defined by expressions.

How does this 'explicit and editable clone' differ from a Clone object?
'Explicit' because all of the original object properties are visible. In a Clone object of a Cube, can you see its Height for example? When you use an expression for a Clone object, can you easily access its parent properties?

'Editable' because, contrary to a Clone object, you can edit the expression of any property. So it is possible to have the object only clone certain properties of its parent, while you modify the others.

Usage

 * 1) Select at least one object.
 * 2) Select the  from the list.
 * 3) Press the  button.
 * 1) Press the  button.

Script
ToolBar Icon

Macro_clone_explicit.FCMacro

Options
A  option was planned. It's not yet implemented. It now seems much more complex than initially thought, maybe too complex for me to implement.

The idea is that one might prefer one of two behaviors:
 * the clone keeps mimicking its parent even if the parent properties expressions change. It's the  mode,
 * the clone keeps the properties expressions the parent had when the clone was created. It's the  mode.

Note the emphasis on the word "expressions". An expression is one abstraction layer over a value.

Here's an example. Imagine the parent object (the one you select before running the macro), has its  property set to the expression.
 * When run in  mode:
 * changes in  value would affect both the parent and the clone objects,
 * changes in  expression would also affect both objects:
 * and
 * still.
 * When run in  mode:
 * changes in  value would affect both the parent and the clone objects,
 * changes in  expression would only affect the parent object:
 * and
 * still.
 * and
 * still.

For now, the macro is run with the mode parameter set to  and no choice is proposed to the user.

Limitations

 * Works well only with Cubes at the moment. To expand to many types I need to:
 * find how to identify an object type to deal with its different properties accordingly;
 * find how to catch the  error.

Version history

 * 0.1: first public release