@Sebastian_Seweryn , thanks for the reply. A few comments:
"If I understood you well (please correct me if not) my thinking was wrong - Compute All doesn't check/update any dependencies, it just somehow redraw the model.
That means that the all dependent features should be updated at some other moment, when the master feature is edited for instance. In the example I gave it didn't happen, as you noticed."
That statement is partially true and partially false. Compute All does not update any dependencies, but it does more than just "redraw the model". It computes every feature in the timeline. Yes, the dependencies are updated when a feature is edited (because that is the only time when they can change). If we tried to check/update dependencies at compute time, it would unnecessarily slow down compute.
"The situation I showed is just an example. I made it so simple to show clearly what I mean. That made it reproducible but less likely to happen in real life. However it shows the root problem - outdated dependences.
Moreover the problem happens in real life with features other than Delete Face and causes very sad results."
If you have examples of edits to features that do not update dependencies, please report them to us. I'm not aware of very many of these, but yes, those are defects and should be fixed.
"
- Is there a way to update dependencies of all features in the timeline on request?
- What should I do when I meet such situation with outdated dependencies?
- What does Compute All exactly do? What's the purpose of the function?
"
No, there is no way to update all dependencies of all features in one go. This would be a pretty expensive operation on any large design. Usually, Edit Feature is the way to update dependencies if they are incorrect. As above, any that do not get updated are defects and should be fixed. Compute All does what its name implies, I guess. It runs through the timeline and computes every feature, one by one. As for its purpose, in theory it should really never be needed. It was originally put in as a debug tool for us developers, as a way to exercise the compute machinery. We decided it might be useful for customers, so we just left it in. Some people use it to make sure that their design does not have any feature failures at points in the design process.
"BTW In the example above the uncommon situation of editing Delete Face feature turned out to be probable in real life, but just because of my workaround. If you have a better solution for such cases please let me know."
Not quite sure I understand this point, but my comment about editing a Delete Face (especially an edit that changes the dependencies) being uncommon was only to say that I have just never heard of anyone doing that before. I agree it should work, but it is just surprising. Delete Face itself is not all that commonly used, I think, and users tend to be pretty certain about what faces they want to delete, so the need for edit just does not come up often. When it does, I suspect the workflow is mostly: "oh, dang, I forgot a face I wanted to get rid of", not "I want to not delete all the faces I selected before, and switch to entirely new faces", which is what your example showed. My instinct, if that ever came up, would be to delete the Delete Faces feature, and make a new one.
Jeff Strater
Engineering Director