This post was prompted by other recent wishes for changes to the renovation filter which got me thinking about how I wish a CAD/BIM application would handle change. I reckon that implementation of an approach outlined below would be technically taxing and likely too much a leap for now - so perhaps it's more of a dream then a wish.
I think that the current approach is limited in such way that it won't get fixed by adding more Renovation Statuses and the ability to set Show On Renovation Filter to multiple filters. Besides being hard to overlook and manage the fact that the current solution is nothing more than a way to control element visibility and element display leaves it with two crucial limitations:
the inability for one element to have multiple configurations,
the inability to sequence operations.
These limitations forces the creation of additional elements in order to handle change or alternative designs which is inefficient, increases the risk of errors/discrepancies, and at odds with the idea of BIM.
Outline to a new approach
The outlined approach hinges on the introduction of some new abilities:
Ability to set up different 'configuration states' for the model which are fundamentally distinct and across which the configuration of individual element can vary.
Ability to create monadic unidirectional and dynamic linkage between 'configuration states' so that a state can get it's initial configuration from one other state.
Ability to control which 'configuration state' is active for modeling input.
A setup like below could be used to model a project involving an existing building and alternative designs.
In the initial state A the elements of the existing building is modelled.
By creating a new state B and linking it to A its possible to represent changes to the existing building.
By creating additional states C1 and D and linking them both to B it is possible to represent alternative designs.
By creating additional states C2, C3 and link them linearly to C1 is possible to sequence the project into phases.
Each element in the model gets a status based on what is done to it and in which configuration state. So for each element in the model there is a record for its status in each configuration state with entries like: Created in A; Existing in B; Modified in C1; Demolished in D.
Views are created based on these statuses in a way similar to Renovation Filters with the difference that it is set for configuration states. This nullifies the need to set visibility at element level in order to view different phases or alternatives.
Sounds very nice but extremely sofisticated for the vast majority of cases. My solution to multiple options is a simple "save as" in a folder named option 1,2,3..n and the subvariants that may have. I have this habit from a sad history of corrupted files due to the use of inferior software.
These kind of things, that is, being at crossroad, usually happen to me when major desicions are involved, like changing levelso, materials or other things. The rest of the time i just copy the objecta i wanted to change to a set diStance and put it a hidden layer. Most often than not (over 95% of the time) i end up erasing it.
Having said that i would defintely like the ability to set aditional renovation filters (like phase 1, 2, 3, etc) which could then be used for what you propose.
I don't agree with the description of it as extremely sophisticated but rather see it as being on par with the development of BIM methodology. If AC is supposed to be a relevant application from concept design through construction to building management it needs to be able to handle change and alternative designs in a way that doesn't entail multiple elements.
The renovation status is the only reason I chose to work with AC, it avoids having many layers to deal with the issue. I think the above could be solved by expanding the renovation status though, rather than just Existing, Demo, Proposed - allow the user to add as many statuses as they want and apply the visibility/overrides of each. This could then encompass options, phases etc without overcomplicating the software.