@MKFreiert wrote:
i understand exactly what you're proposing, and have repeatedly explained why it doesn't work. apparently i'm not doing a good job of communicating that to you.
objects do not have only xyz coordinates. they also have time. revit is 4 dimensional (actually 4D plus, but that's a different discussion)
the room calculation point generates the data about the room by looking at relationships relative to that point within one phase.
The only "time" properties that objects have in the Revit database are phase created and phase demolished. These are stored as "CreatedphaseID" and "DemolishedphaseID".
@MKFreiert wrote:
the room calculation point generates the data about the room by looking at relationships relative to that point within one phase.
if the calc point persists to a new phase, all of the data that it would generate is related to functionally different objects, because those objects have changed time.
Yes, so you store multiple copies of any generated data (such as room volume) with one copy per project phase.
@MKFreiert wrote:
the way walls etc. deal with things cutting/cleaning up with them is coarsely explained as nested boolean interactions. with a room you have a minimum of 6X the number of booleans vs any other object. that gets wicked complex when you add in time shifts as you need to rectify all of those booleans across at least 2 time slots, in addition to dealing with objects that persist in both, but have changed some relative volume. you can't merely recalculate because from a data standpoint you don't know that anything has changed until you do the comparison.
I don't really get what this has to do with anything. Nothing changes in how Revit calculates a room. It just has to do it once per phase and store that information. The only "time shifts" that exist in the database are the different phases.
@MKFreiert wrote:
yes, when you move an hvac unit, you delete it and recreate it.
Yes, and if you were to move a room to a different spot you would demolish it and recreate it, but HVAC units remain as existing if you don't demolish them, as should rooms.
@MKFreiert wrote:
rooms deal with time. they are a snapshot of relationships at one point in time, and time is an axis.
That is not how the Revit database works and I think you misunderstand how sophisticated "time" is in the Revit database. The only thing related to time is the phase created and phase demolished properties. Once again, some of rooms' properties (such as volume) are a snapshot of relationships at "one point in time" which really just means "during one phase". Rooms can exist across phases if they just store multiple snapshots of this information (one snapshot per phase).
@MKFreiert wrote:
you can't move an object relative to the axis you placed it on. "model" elements are on xyz and can persist across time. rooms are on T and can expand across xyz.
That may make hypothetical conceptual sense but that is not how the database works. Rooms inherit the element class the same as every other object. They have XYZ coordinates, volume / boundingbox properties and they even have phase created and phase demolished properties, they're just always set to the same thing.
@MKFreiert wrote:
when you move one wall at a time, revit only needs to recalculate one progression of booleans. calculating multiples that move when you change phases isn't the same as recalculating a "new version" of the room, because then you already have a new room, and calling 2 things the same thing in a database is bad.
no, every time you move a bounding wall revit does a recalculation of the *same* room, which is fine and much less complex.
If you were to move a wall in your New Construction phase, Revit would recalculate just the "New Construction" snapshot of information for your room (including volume). If you were to move an existing wall that gets demolished, then Revit would just calculate the "Existing" snapshot of information for that room. If you were to move an existing wall that doesn't get demolished, then Revit would have to run that calculation once for your Existing phase, and once for your New Construction phase. But those two snapshots of information would both still be stored in the same Room object, there would be no duplication of Room objects in the database.
It adds a little more computation, but only when moving existing walls, and even that scales by a factor equal to your number of phases.