What I'm using for an upcoming project is the for each (ordered). I put each object that needs to be stacked in a container with its "shadow," which always stays at the floor level. Then I put these shadows in a family, let's call it "Stackers." Then, I use...
System: For Each Stackers order by Stackers.Y ascending => Stackers: Move to top of layer
and then move each object to above its shadow (e.g. move the player above the player shadow, move a wall on top of its footprint...)
This might not work if you have more than one floor level. If you do have multiple floor levels, please tell me; I would like to find out how.