Wall Outlet & Light Point Families
Place wall outlets and light points in the viewer, and upload the .rfa families used to render them in Revit
Wall Outlet & Light Point Families
Buyers place wall outlets (Dutch: wandcontactdoos) and light points (Dutch: lichtpunt) directly in the 3D viewer while configuring their house. The geometry that ends up in the exported Revit model comes from two .rfa family files uploaded per-tenant by an admin, so each organization can ship its own standardized components.
This page covers both sides:
- For buyers: how to place and remove outlets and light points in the configurator.
- For admins: how to upload the per-tenant
.rfatemplates.
Placing in the viewer
While configuring a house, two extra buttons sit on the viewer toolbar (right of the camera-mode controls). They are only shown when the project allows additional placements:
| Icon | Tooltip (Dutch) | Places |
|---|---|---|
| 🔌 plug | Wandcontactdoos plaatsen | A wall outlet |
| 💡 bulb | Lichtpunt plaatsen | A light point |
Placing an item
- Click the toolbar button: it turns blue to show placement mode is active. The cursor switches to a crosshair and a ghost marker follows the mouse over surfaces.
- Hover to preview the position on a wall, ceiling, or floor.
- Left-click to confirm. The marker snaps onto the surface and the item is added to the order summary.
- Keep clicking to drop more of the same type, or click the button again (its tooltip flips to Plaatsen annuleren) to exit placement mode.
Keyboard / mouse extras:
- Esc: cancel placement mode without dropping anything.
- Scroll wheel: adjust depth from the camera when the cursor isn't hitting a surface (useful for free-floating placements).
Where placed items show up
Placed outlets and light points appear in the order summary / receipt panel on the right of the viewer, grouped by type:
- A heading per group: Wandcontactdoos or Lichtpunt.
- Below each heading, one row per placement showing its coordinates as
x=… y=… z=…. - A small × button at the end of each row removes that single placement from the viewer and the receipt.
The placements are persisted with the configuration, so when the Revit add-in runs the configuration it knows exactly where to put each instance of the uploaded family.
Admin: Where to find it
- Open the web app at alpha.asrr.nl.
- Go to Settings → Tenant → Configurator.
- Scroll to the Revit families section at the bottom of the tab.
You need the TENANT_ADMIN permission to see and modify these fields.
The two slots
| Slot | Used for | Example filename |
|---|---|---|
| Wall outlet family | Each wall outlet (wandcontactdoos) placed by the configurator | WCD_Standard.rfa |
| Light point family | Each light point (lichtpunt) placed by the configurator | Lichtpunt_Standard.rfa |
Each slot accepts a single .rfa file up to 50 MB. Uploading a new file replaces the previous one; the old blob is deleted from storage automatically.
Uploading
Drop a .rfa file onto the slot, or click to pick one. The file uploads immediately; once it lands you see the filename and size next to a Remove button. There is no separate "save"; the configurator settings save button does not touch these fields.
Removing
Click Remove next to a filename to clear that slot. The file is deleted from blob storage and the slot returns to its empty drop-zone state.
If a slot is empty when the Revit add-in tries to fetch it, the add-in surfaces an error asking the admin to upload a family first.
How the Revit add-in places them
When the add-in runs a configuration, it places every buyer-placed item after all model groups are in the document, so the host walls and ceilings exist to snap to:
- It downloads the tenant's uploaded
.rfafor that slot (cached locally onblobId) and loads it into the document. - It converts the click point from the viewer's coordinates (metres, Y-up) into Revit's (millimetres, Z-up) and casts a ray back along the stored surface normal to find the host face.
- It places the instance and corrects it onto the clicked point: Revit's level-based placement otherwise reads the height as an offset above the nearest level.
Two fallbacks keep a run from failing over a missing family: with no upload for that slot, the add-in reuses a family already loaded in the model (Electrical Fixtures for an outlet, Lighting Fixtures for a light point; Whoon-style models ship these inside the model groups). With neither, it places a DirectShape placeholder in the same category: an 85 × 85 mm plate for an outlet, a Ø120 mm disc for a light point.
The run log records each placement, including the converted coordinates and the host element, e.g.:
Using tenant family 'NLRS_61_EF_wandcontactdoos dubbel inbouw.rfa' for WANDCONTACTDOOS
Placing WANDCONTACTDOOS 92c8…: viewer (m) (5.700,0.277,-1.212) → Revit (mm) (5700,1212,277) …
Host face for WANDCONTACTDOOS 92c8…: Walls 503230844 (NLRS_22_WA_kalkzandsteen 120mm)
Placed WANDCONTACTDOOS 92c8… as FamilyInstance 503297465 at (mm) (5700,1212,277)In block models
A block built in ASSIGNED mode also carries each house's placed outlets and light points: the calculation returns them per house, and the add-in applies the same block/house transform it applies to that house's model groups (including the mirror flip). BASE and PRESET blocks have no buyer configuration to read them from, so they place nothing.
API endpoints
For completeness, all require TENANT_ADMIN:
| Method | Path | Body |
|---|---|---|
POST | /tenants/configurator/wall-outlet-family | multipart/form-data, field file |
DELETE | /tenants/configurator/wall-outlet-family | — |
POST | /tenants/configurator/light-point-family | multipart/form-data, field file |
DELETE | /tenants/configurator/light-point-family | — |
All four return the updated tenant object.