Macro clone explicit

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

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

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

Editable because all of the original object properties are here to edit. Contrary to a Clone object, you can edit the expression of any property. So the clone would actually only clone interesting properties of its parent, while you have fun modifying the others.

How to use

 * 1) Select at least one object.
 * 2)  →  → 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
Many docs to read!
 * 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

Other
Version of FreeCAD used to create the macro: