> 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/blocs.md).

# BLOCS

Place Autodesk® Revit™ families from Rhino® blocks

**BLOCS** places family instances in Revit at the position, rotation and mirroring of Rhino block instances. You can import the families from the *.beam* or use families that are already in the project.

Export the file from Rhino with [BLOCS](/beam/beam-for-rhinoceros/blocs.md) or [BEAM](/beam/beam-for-rhinoceros/beam.md).

## Import and place families

Click **BLOCS** on the [BEAM tab](/beam/beam-for-revit/using-beam-for-revit.md) and pick the file in **Select .beam**. Choose **Import Family**.

<figure><img src="https://1008084047-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M20iL6J8Vf1nWgor7JL%2Fuploads%2Fgit-blob-4479274a60de1466259f30dba3d8c788eb6bf401%2Fmock-revit-blocs.png?alt=media" alt="BLOCS dialog with Import Family" width="330"><figcaption></figcaption></figure>

| Option                               | Default  | What it does                                                                                      |
| ------------------------------------ | -------- | ------------------------------------------------------------------------------------------------- |
| **Place Instances**                  | On       | Place an instance for each Rhino block instance. Turn it off to only load or update the families. |
| **Update Parameters**                | On       | Write parameter values from Rhino                                                                 |
| **Workplane Based**                  | On       | Create work-plane-based families                                                                  |
| **Import Curves** / **Import Nurbs** | On / Off | See [Curves & Linework](/beam/beam-for-rhinoceros/linework.md)                                    |

Pick a **Location** and click **BEAM**.

{% hint style="success" %}
To update the family geometry without placing new instances, turn off **Place Instances**.
{% endhint %}

### Workplane-based or not

* **Workplane Based** on: the family accepts every block transformation, including tilt. Use it when geometry needs full freedom.
* **Workplane Based** off: the family is always vertical. Use it when you will move instances between levels by hand later. Only rotation in plan is applied.

## Place an existing family

Choose **Use Existing Family** and pick a family from the list. BLOCS places it at the block transformations in the *.beam*.

<figure><img src="https://1008084047-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M20iL6J8Vf1nWgor7JL%2Fuploads%2Fgit-blob-13de122fa8d997d7930bc837adcbdea48ff9a59f%2Fmock-revit-blocs-existing.png?alt=media" alt="BLOCS dialog with Use Existing Family" width="330"><figcaption></figcaption></figure>

* **\<Automatic>** matches each block to the family with the same name.
* The list shows work-plane-based and level-based families, and adaptive curtain panel families with one adaptive point. Native and BEAM-imported families both work.
* **Always Vertical** and **Workplane Based** show how the chosen family behaves. You cannot change them here.

{% hint style="danger" %}
Families that are always vertical or not work-plane-based only take translation and rotation in plan. Check that your Rhino block transformations suit the family.
{% endhint %}

## How instances are updated

Each Rhino block instance has a **Mark**. On import, BLOCS looks for a Revit instance with the same Mark:

* If it finds one in the same place, it leaves it.
* If the transformation changed, it replaces it.
* If there are duplicates, it removes the extras.

Mirrored blocks are mirrored in Revit.

The level comes from the block's [level](/beam/beam-for-rhinoceros/levels.md#how-beam-picks-the-level), matched by name. If no Revit level has that name, BLOCS uses the closest level below. A **Workset** parameter set in Rhino is applied too.
