Hello All,

As is seemingly common, I've had an awkward time getting used to Revit coordinate systems. After reading many explanations each of which provided some useful information amongst a lot that was confusing, I gave in and spent an afternoon experimenting to try to get to the bottom of the matter. I've made notes for my own reference, by am providing them here too in case they're of use to others on the same path:

--

Chris.

As is seemingly common, I've had an awkward time getting used to Revit coordinate systems. After reading many explanations each of which provided some useful information amongst a lot that was confusing, I gave in and spent an afternoon experimenting to try to get to the bottom of the matter. I've made notes for my own reference, by am providing them here too in case they're of use to others on the same path:

- Within a project, Revit maintains three simultaneously active coordinate systems: Internal, Project, Shared
- Revit-Internal coordinate system:
- Reported by spot coordinates and elevations with "Origin" set to "Relative"
- Origin is the location of "Project Origin" Lat/Long/Elev
- Can be precisely located found by importing CAD with a cross at it's origin
- (Implementation detail: used internally for the location of all project elements)

- Project coordinate system
- Axes parallel to Revit-internal coordinate system
- Reported by spot coordinates and elevations with "Origin" set to "Project Base Point"
- In a newly created project, the project coordinate system is aligned with the internal coordinate system

- Shared coordinate system
- Z axis parallel to Z axes of Revit-internal and project coordinate systems
- X and Y axes not parallel to X and Y axes of Revit-internal and project coordinate systems
- Reported by spot coordinates and elevations with "Origin" set to "Project Base Point"
- A project can have multiple shared coordinate systems defined. Only one is active/current at one time.
- In a newly created project:
- There's one shared coordinate system
- It's labelled "Internal", but don't confuse with the *Revit-internal* coordinte system
- It's aligned with the Revit-internal coordinate system

- Revit-Internal coordinate system:
- Within a project, Revit maintains two points tightly integrated with coordinate systems:
- Project Base Point
- This point defines the origin of the project coordinate system
- by definition at 0,0,0 in the project coordinate system

- Revit reports its location within the shared coordinate system

- This point defines the origin of the project coordinate system
- Survey Point
- Revit reports its location within the shared coordinate system
- In a newly created project, it starts located at 0,0,0 (in all coordinate systems given that they all start aligned)

- Project Base Point
- Within a project with linked projects:
- The shared coordinate system within the linked project is aligned with the shared coordinate system in the host project
- Where there are multiple shared coordinate systems within the linked project, the shared coordinate system to use can be chosen per instance of the linked project.
- Where the are multiple shared coordinate systems within the host project, the current/active one is used.

- The shared coordinate system within the linked project is aligned with the shared coordinate system in the host project
- UI: Manipulating coordinate systems (incomplete)
- Project Base Point
- Coordinates shown against this are in the current shared coordinate system
- Dragging the PBP:
- Moves the PBP (and this the project coordinate system) with respect to the Revit-internal coordinate system
- Does not move any of the Shared coordinate systems (with respect to the Revit-internal coordinate system)
- Whilst clipped:
- Maintains the location of project elements (TBD: which elements?) within the project coordinate system
- Thus, moves those elements with respect to the Revit-internal coordinate system
- Probably a bad idea

- Whilst unclipped:
- Leaves project elements fixed with respect to the Revit-internal coordinate system
- Harmless

- Thus, project element will move with respect to the project coordinate system

- Leaves project elements fixed with respect to the Revit-internal coordinate system

- Survey Point
- Coordinates shown against this are in the current shared coordinate system
- Dragging the Survey Point:
- Moves the survey point with respect to the Revit-internal coordinate system
- Does not move the project coordinate system (with respect to the Revit-internal coordinate system)
- Whilst clipped
- Maintains the location of the Survey Point within the current shared coordinate system
- Thus, moves the current shared coordinate system with it
- This also moves anything aligned to the current shared coordinate system (e.g. linked models)

- Whilst unclipped
- Does not move the current shared coordinate system
- Thus, moves the survey point with respect to the stated coordinate system instead

- Shared Coordinate Systems
- Manage -> Location -> Site
- Also accessed by selecting the Survey Point, then clicking on "Survey Point - {current shared coordinate system}"
- Can Duplicate, Rename, Delete shared coordinate systems
- Can also "Make Current"
- Makes one of the shared coordinate systems "Current"
- Anything aligned to the current shared coordinate system (e.g. linked projects) will move (with respect to the Revit-internal coordinate system) accordingly
- Specifically, their coordinates in the newly current shared coordinate system with be the same as their coordinates in the previously current shared coordinate system

- If the Survey Point is clipped, it is considered aligned to the current shared coordinate system and will move as above
- If the Survey Point is unclipped, it maintains its position with respect to the Revit-internal coordinate system

- Manage -> Location -> Site
- TODO: importing, exporting, moving linked models (but hopefully the above should make it obvious what's going on).

- Project Base Point

--

Chris.