This doesn’t answer OP’s original question, but I thought I’d elaborate a little on what you can (And can’t do) with local transports.
As @jonathon has mentioned, There are some significant advantages to using a speckle server. Either speckle.xyz, or running one locally.
Concepts like streams, branches, commits (soon to be renamed to projects, models, versions) only exist on the server and server API.
The local transports only understand Objects, and their Ids. However, with a bit of scripting, you can transfer (and convert) this object data between “script” friendly connectors, like Grasshopper, Blender, Unity, and Unreal.
For most users, I wouldn’t recommend doing this, but for any developers, hackers, or tinkerers; a purely local Grasshopper → Blender workflow can be achieved through just using an SQLite transport.
This requires you to send your objects from the Grasshopper connector to the local SQLite transport. (The transport nodes are hidden under the “dev/transports” tab of the speckle window)
Then in Blender, with a simple python script, you can perform a local receive by copy pasting the Object ID from Grasshopper into this script, and running it.
from specklepy.api import operations
from bpy_speckle.convert.to_native import _deep_conversion
# Replace with the ID of the object to receive (it and all its children)
OBJECT_ID = "7b663a0af5108cb70afdcced6eb0c1f8"
# Receive objects from local transport, passing in no transport here will default to using a local SQLite one.
speckle_object = operations.receive(OBJECT_ID)
# Convert objects
converted_objects = {}
_deep_conversion(speckle_object, converted_objects, True)
print(f"Finished receiving {len(converted_objects)} objects")
Just make sure you are using the latest 2.15 version of the blender connector, otherwise this _deep_conversion
function won’t be available.
You’ll need to manually copy the object ids around, and local transports are not really suitable for long-term storage of objects. But if these limitations don’t bother you, this is something that is achievable in the few “script” friendly connectors.
receive_local.py (413 Bytes)
send_local.gh (8.7 KB)