> ## Documentation Index
> Fetch the complete documentation index at: https://docs.speckle.systems/llms.txt
> Use this file to discover all available pages before exploring further.

# Revit in 2026.9

> Apply Transform, the placement picker, and how published geometry stays in Revit's internal coordinates.

<Note>
  This is 2026.9 preview documentation. Coverage here is incremental: a page exists only where
  2026.9 differs or is newly documented.
</Note>

In 2026.9, published geometry stays in Revit's internal coordinates. The **Reference Point**
dropdown still selects the datum you want consumers to use. Speckle stores that choice next to the
model as a **model placement**. The viewer and the Revit connector apply it when they load.

This page covers only what changed. For install, sign-in, publish, and load in today's connector,
see [How to use Speckle for Revit](/connectors/revit/revit). For the breaking change and bundle
consumers, see [Upgrade Revit to 2026.9](/next/connectors/revit/migration).

## What changed

One publish can now serve every datum. Collaborators choose their placement on their side instead of
asking you to republish.

The send settings still look the same. What changed is a new **Apply Transform** toggle next to
**Reference Point**, and that the transform is stored separately by default.

A linked model's placement in the host document is never written as the model's reference point.

## Publish

<Steps>
  <Step title="Open publish settings">
    Expand **Settings** at the bottom of the **Select objects** dialog while publishing a new
    version. You should see **Reference Point** and a new **Apply Transform** toggle.
  </Step>

  <Step title="Choose a reference point">
    Set **Reference Point** to **Internal Origin** (default), **Project Base Point**, **Survey
    Point**, or **Shared Coordinates**. Survey Point uses the survey point origin only, with no
    rotation. Shared Coordinates includes True North rotation. Use Shared Coordinates when you need
    to match a survey or civil model's orientation, not just its origin.
  </Step>

  <Step title="Leave Apply Transform off">
    Keep **Apply Transform** off. That is the default, and it is the 2026.9 path: geometry stays in
    internal coordinates, and placement is stored separately. You should see the toggle remain off
    when you publish.
  </Step>
</Steps>

<Warning>
  Turn **Apply Transform** on only if a downstream tool that does not understand model placements
  needs the geometry pre-positioned. Once it is on, one publish cannot serve every datum for that
  model.
</Warning>

<Note>
  If the selected base point cannot be found in the document, the connector falls back to Internal
  Origin. The viewer then shows **Internal Origin (fallback)**.
</Note>

## Load

The **Reference Point** receive setting is unchanged: **Source** (default), **Internal Origin**,
**Project Base Point**, **Survey Point**, or **Shared Coordinates**. Models published from a 2026.9
connector land in the right place regardless of the sender's **Apply Transform** choice. If the
sender baked the transform, Revit inverts it automatically.

For the receive-setting steps in today's connector, see
[How to use Speckle for Revit](/connectors/revit/revit).

Re-publish once from a 2026.9 connector to unlock the picker and datum switching for an existing
model.

## Placement record

Scripts and SDK consumers read `modelPlacement.*` from `eav.model`, not `referencePointTransform` on
the root object. Apply the placement yourself unless the sender turned **Apply Transform** on.

* `modelPlacement.transform` — Internal Origin to the datum selected on publish. The value is 16
  row-major doubles. Translation is in `modelPlacement.units`.
* `modelPlacement.default` — which datum that is (`internalOrigin`, `projectBasePoint`,
  `surveyPoint`, `sharedCoordinates`).
* `modelPlacement.options.*` — the transform for every available datum, so a consumer can switch.
* `modelPlacement.appliedToGeometry` — `false` by default. `true` only if the sender turned **Apply
  Transform** on. If it is `true`, invert the transform before you place the model.
* `referencePoints.*`, `projectLocation.trueNorthAngle` — raw base-point positions, True North, and
  site location.

The viewer applies `modelPlacement.transform` at load time. The placement picker swaps in any of the
`options.*` transforms.

### Source (default)

* 2026.9, Apply Transform off: nothing applied. Geometry is already in internal coordinates.
* 2026.9, Apply Transform on: sender's transform inverted automatically.
* v3 / migrated model: sender's root transform inverted, as before.

### Named receive datums

For **Internal Origin**, **Project Base Point**, **Survey Point**, or **Shared Coordinates**:

* 2026.9, Apply Transform off: your chosen datum transform applied.
* 2026.9, Apply Transform on: sender's transform inverted, then your datum applied.
* v3 / migrated model: as before.

For the numbered consumer steps and the re-publish path, see [Upgrade Revit to
2026.9](/next/connectors/revit/migration).

## View

After you publish, the web viewer lands the model using that placement. A **placement picker** lets
you inspect the same model from any other datum without republishing. The datum you published with
is marked **(published)**.

## FAQ

<AccordionGroup>
  <Accordion title="I published with Survey Point and the model shows at the internal origin in the viewer. What happened?">
    Check the placement picker. The published datum is marked **(published)**. If it shows
    **Internal Origin (fallback)**, the survey point could not be resolved in your document.
  </Accordion>

  <Accordion title="Do I still need to coordinate base points with collaborators?">
    Yes. The placement record describes the datums in your document. Collaborators still need
    matching shared coordinates for models to overlay. What you no longer need to do in 2026.9 is
    republish to change datums.
  </Accordion>

  <Accordion title="I need the same rotation as a survey or civil model, not just the same origin. What should I pick?">
    Publish with **Shared Coordinates**. **Survey Point** uses the survey point origin only, with no
    rotation.
  </Accordion>
</AccordionGroup>
