DynamoDS/Dynamo — pull request #2703 by ikeough (2014-10-13 22:35:05+00:00)
Title: Unset force reexecute if watched elements not modified or deleted.

This PR fixes the behavior of selection nodes to un-set the ForceRexecuteOfNode flag when the selected elements that are being "watched" by the nodes are not included in the "deleted" or "modified" sets returned by the updater.

@Steell and I discussed doing this un-set in the OnBuilt method of NodeModel, which would apply it to every node, but I found in the case of Revit references, that modifications in Revit (i.e. move a wall which has one of its faces bound to a Select Faces node), does not cause a recalculation of the geometry. The AST is rebuilt, but function referred to by the AST is never actually called.

Here, the fix only touches selection nodes. If a modification or deletion update happens in Revit, but the element that was modified or deleted is NOT in the collection of things being watched by the selection node, then ForceReexecuteOfNode is set to false. When the modification does contain one or more of the objects being watched, then ForceReexecute is set to true (existing behavior).

This gives us exactly what we want. Running in run auto, you can delete or modify elements and their nodes will update accordingly, and geometry is updated as well. But, when other elements are updated or modified, these nodes are not recalculated.

Require Merge:
- [ ] Revit 2015

PTAL:
@Steell
@lukechurch (FYI)