Skip to main content

CAD and BIM models

Turn an architectural or synthetic 3D model into an AR Clip VPS map. Use it for construction, indoor navigation or digital twins.

Prepare the geometry​

  1. Import the CAD or BIM model into Blender, Unity or a similar tool.
  2. Collapse instanced objects, and remove hidden or unneeded geometry.
  3. Reduce the polygon count but keep the key features. Aim for 5 million triangles or fewer.
  4. If you want to preview the model, generate UVs and bake lightweight textures.

Plan anchors​

[
{ "name": "lobby", "position": [0.0, 0.0, 0.0] },
{ "name": "elevator_north", "position": [12.4, 0.0, 28.9] }
]
  • Coordinates are in metres, measured from the model's origin.
  • Use stable names, such as lobby or loading_dock, so your SDK code can use them directly.

Upload with Python​

# upload_cad.py
from pathlib import Path
import json
import os
import requests

API_BASE = "https://api.arclip.app/vps/api/v3"
TOKEN = os.environ["ARCLIP_TOKEN"]
MODEL = Path("exports/mall.glb")
ANCHORS = Path("exports/anchors.json")

headers = {"Authorization": f"Bearer {TOKEN}"}

payload = {
"name": "Mall Digital Twin",
"dataType": "mesh",
"sourceFormat": "glb",
"anchors": json.loads(ANCHORS.read_text()),
"publish": False
}

init = requests.post(f"{API_BASE}/maps/import", json=payload, headers=headers)
init.raise_for_status()
info = init.json()
map_id, upload_url = info["mapId"], info["uploadUrl"]

with MODEL.open("rb") as src:
put = requests.put(upload_url, data=src, headers={"Content-Type": "model/gltf-binary"})
put.raise_for_status()

finalize = requests.post(f"{API_BASE}/maps/{map_id}/finalize", json={}, headers=headers)
finalize.raise_for_status()
print(f"CAD map {map_id} queued → {finalize.json()['status']}")
  • You can include anchors in the first request, or add them later with POST /maps/{id}/anchors.
  • If the model is georeferenced, add coordinate ({"lat": ..., "lon": ..., "alt": ...}).

Check the map​

  • Preview the map in arclip.design, and adjust anchor offsets if needed.
  • Test localization with the Unity SDK. Align virtual objects using the same anchor IDs.
  • When the CAD model changes, import it again. Call POST /maps/{id}/update instead of creating a new map, and the mapId stays the same.