> For the complete documentation index, see [llms.txt](https://wiki.mksdtech.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.mksdtech.com/beam/beam-for-revit/ursa.md).

# URSA

Place Autodesk® Revit™ adaptive components and families on Rhino® curves and points

**URSA** places Revit families on points and polylines exported from Rhino with [BEAM](/beam/beam-for-rhinoceros/beam.md).

* With an **adaptive component**, each vertex of a point, line or polyline drives one adaptive point.
* With a **level-based family**, each point places one instance.

Curves and points can carry their own parameter values. URSA writes them to the instance parameters of the placed components.

## Prepare the geometry in Rhino

Match the geometry to the family you will place:

| Adaptive points in the family | Draw in Rhino                      |
| ----------------------------- | ---------------------------------- |
| 1                             | A point                            |
| 2                             | A line                             |
| 3 or more                     | A polyline with that many vertices |

For a level-based family, use points.

Objects that do not match are skipped and counted as **Excluded**. Solids and meshes are skipped too.

{% hint style="info" %}
URSA only uses points, lines and polylines. Run Rhino's `What` command to check an object's type.
{% endhint %}

Group curves and points into sets with the **Family** field, so you can select them with **F**. Set parameter values on the curves and points in the [panel](/beam/beam-for-rhinoceros/using-rhino-beam.md), or with the [Grasshopper](/beam/beam-for-rhinoceros/grasshopper.md#write) **Set Curve Parameters** and **Set Point Parameters** components.

Every curve and point gets a unique **Mark** when you create it. You can edit Marks by hand.

## Place components

Click **URSA** on the [BEAM tab](/beam/beam-for-revit/using-beam-for-revit.md).

<figure><img src="https://1008084047-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M20iL6J8Vf1nWgor7JL%2Fuploads%2Fgit-blob-9657f4eb2774b04c9a8948451c7e3eeb90bab220%2Fmock-revit-ursa.png?alt=media" alt="URSA dialog" width="330"><figcaption></figcaption></figure>

1. In **Select .beam**, pick the file.
2. Pick the family type. Each entry starts with its number of adaptive points. **Adaptive Points** shows the count for the selected type.
3. Leave **Update Parameters** on to write parameter values to components that already exist. New components always get the values.
4. Pick a **Location**.
5. Click **BEAM**.

The list shows adaptive components and level-based families that are loaded in the project.

## Update components

URSA matches Revit instances by **Mark**. Import again after changing the Rhino geometry, and URSA moves the existing components instead of placing duplicates.

For curves inside a block, URSA puts the block's Mark in front of the curve's Mark, so each block instance gets its own components.

{% hint style="success" %}
Round trip: export adaptive components to Rhino with [RAY](/beam/beam-for-revit/ray.md), which keeps their Marks. Edit the polylines in Rhino, then update the components with URSA.
{% endhint %}

## Place families on points

For points, URSA finds the closest Revit level below each point and places the family on it, with the right offset.
