How it works

Rhino2Blender is two programs that talk over a TCP socket.

The Blender add-on is the server. It opens a port and waits. The Rhino plugin is the client. It connects out, indexes the open document, sends it once in full, and then streams every subsequent document change as an incremental update.

```
RHINO 8 BLENDER 4.0+
┌────────────────────────┐ ┌────────────────────────┐
│ Rhino2Blender plugin │ │ Rhino2Blender add-on │
│ (dockable panel) │ │ (View3D sidebar) │
│ │ 1. handshake ──────► │ │
│ document watcher │ ◄── version_info ─── │ approval prompt │
│ ↓ │ ◄── known textures ─ │ │
│ tessellate (threaded) │ │ │
│ ↓ │ 2. full sync ──────► │ builds collections, │
│ fingerprint │ │ meshes, materials, │
│ ↓ │ 3. incremental ────► │ lights, cameras │
│ zlib + binary buffers │ updates │ │
│ │ ◄── push messages ── │ "Send to Rhino" │
└────────────────────────┘ └────────────────────────┘
CLIENT SERVER
```

Both applications must be running. There is no intermediate file, and nothing is written to disk except a texture cache.

The connection carries a source_name, taken from the Rhino document filename. Everything the add-on builds is namespaced by that name, which is what allows several Rhino documents to share one Blender scene without colliding.