Revit → Speckle coordinate metadata: where to read “truth” origins?

Hi all,

I’m building a Revit-side QA/QC tool that, before publish, checks:

“Do my Revit shared coordinates match a chosen Speckle reference model? If not, fix them.”

To do this robustly, I need to understand exactly how/where Speckle exposes coordinate “truth” for Revit models.

Could you help clarify the following?

  1. Where to read origins:
    For a Revit model sent to Speckle, is there a stable, documented place to read:
  • shared / survey origin (E/N/Z),
  • project base origin (if exposed),
  • angle to True North?

Is this stored as explicit metadata (e.g. on the commit/model/project info), or only implicit in transforms?

  1. Units & frame of reference:
    In what units and frame are those origin values expressed?
  • Revit internal units (feet)? meters?
  • Local cartesian project coords or geodetic (lat/long + CRS)?

Is there a field that tells me the units / CRS, or is it implicitly “whatever Revit uses”?

  1. Reference Point setting visibility:
    When the Revit connector sends a model with Reference Point = InternalOrigin / ProjectBase / Survey, is that choice visible anywhere in the Speckle data or metadata?

Or should we assume a team convention like “coordination reference model is always sent with Survey Point” and document that as a hard requirement?

  1. Lightweight access:
    Is there a recommended way (REST/GraphQL/.NET SDK) to fetch just this coordinate/geolocation info without downloading the entire model geometry payload?

  2. Best-practice pattern:
    From Speckle’s perspective, what’s the recommended pattern for defining a “coordination reference model” whose coordinates everyone else should align to (branch/model naming, reference point choice, etc.)?

If you can point me to a current example commit / object schema for a Revit model with origins exposed, that would be perfect.

Thanks in advance — I want to align our QC tooling with Speckle’s intended geolocation/coordinate story rather than reinvent it.

Following up on my earlier post about reading coordinate “truth” from Speckle Revit commits.

We’ve built a prototype that decodes referencePointTransform.transform to extract PBP coordinates and angle to true north. Our current interpretation:

  • Column-major 4×4 matrix
  • Translation: East = -m[12], North = -m[13], Elev = -m[14] (feet)
  • Rotation: AngleToTrueNorth ≈ 360° - atan2(-m[1], m[0]) (degrees)

This seems to hold across our test files when publishing with Survey Point or Project Base Point as the reference setting. Internal Origin gives identity matrix as expected.

Before we go further, hoping to confirm:

  1. Are these transform semantics stable across connector versions, or implementation detail subject to change?
  2. Is there a field that indicates which Reference Point setting was used at publish time? (We haven’t found one — currently inferring from matrix values.)
  3. Any known edge cases (linked models, workshared files, etc.) where this breaks down?

Happy to share the tool once it’s validated — the goal is one-click alignment to a “golden” Speckle commit before publish.