Which objects are, and are not, linked?

 From:  Michael Gibson
8216.2 In reply to 8216.1 
Hi Shaun, whenever you use a command in MoI (with the exception of the array commands), there is a record generated on the output objects that holds all the inputs that were used to generate that object. Then later on if you edit an object it will look if that object has been used as an input for another one and regenerate the other one if history updates are enabled on that object. You can enable or disable history updates on an object by selecting it and using the Edit > History command.

Then there is a difference as you've noticed that some commands make objects with history updating enabled by default, these are: Blend, Extrude, Loft, Revolve, Sweep, and Mirror. These are set to have history updates on just because it's more likely that someone will want to tweak one of these types of objects by editing the input curves. It's not turned on by default for everything because it can sometimes be surprising that editing an object changes another. But you can enable it for Copy for example by selecting the copied objects and then use Edit > History > "Enable updates" button. So if you make a circle and then make some copies of it with Transform > Copy, then select the copied circles and enable history updating on them, if you then turn on control points of the original circle and edit it you'll see the copies update as well.

You can also set up some shortcut keys that will allow you to select an object's history children or parents, see here: http://kyticka.webzdarma.cz/3d/moi/#SelectParents

> It might be useful if there was some graphical representation telling you when
> objects are linked. (I don't know what that would be since colors are already
> used for styles) Or a pop up warning telling you that a link will be broken if
> you go forward with some operation.

These are good ideas, but I haven't invested much time in pursuing stuff like this for the current history system because it has a big limitation in it which is that all the objects in the history chain need to be present in the current model in order for them to be used in the history update. Many operations such as booleans or fillets for example basically delete the existing object and replace it with a new one. When that happens the original object before the boolean or fillet is no longer present and so those operations will break history. So I think it's likely that the current history system is going to be removed in the future and replaced by one that works differently, which will maintain a log of all operations and object states in a history file so that earlier versions of objects will be accessible and history will be able to work better through longer sequences of commands. Then I'll be able to invest more time in UI related to history after that.

- Michael