This is one big repo containing the following libraries:
- Speckle Client (folder
AbstractSpeckle
). - Speckle Popup
- Speckle Grasshopper & Speckle GhRh Converter
- Speckle Grasshopper User Data Utils
It's forthcoming. Do you want to help?
This is the base library that provides two classes that you should really care about:
Exposes a series of events that get triggered when the sender emits data.
myReceiver = new SpeckleReceiver(API_URL, API_TOKEN, STREAM_TO_LISTEN_TO, GEOMETRY_CONVERTER);
// Events:
// triggered when errors are pooped in the pipes
myReceiver.OnError += OnError;
// triggered when component init is ready
myReceiver.OnReady += OnReady;
// you've got metadata
myReceiver.OnMetadata += OnMetadata;
// you've got both metadata and data
myReceiver.OnData += OnData;
// stream history was updated
myReceiver.OnHistory += OnHistory;
// direct message from another client.
myReceiver.OnMessage += OnVolatileMessage;
// broadcasted message from another client.
myReceiver.OnBroadcast += OnBroadcast;
Exposes a series of methods that allow you to send data (metadata + geometry) as well as just metadata (layer names, etc).
mySender = new SpeckleSender(API_URL, API_TOKEN, GEOMETRY_CONVERTER);
// Events:
mySender.OnError += OnError;
mySender.OnReady += OnReady;
mySender.OnDataSent += OnDataSent;
// direct message from another client.
myReceiver.OnMessage += OnVolatileMessage;
// broadcasted message from another client.
myReceiver.OnBroadcast += OnBroadcast;
// Methods:
// when sending geometry:
mySender.sendDataUpdate(DATA, LAYERS, NAME);
// when sending cosmetic changes:
mySender.sendMetadataUpdate(LAYERS, NAME);
Also exposed is a virtual class Speckle Converter
. You need to implement this class if you want to be able to send data back and forth. It translates geometry from application_x format to a speckle intermediary format.
Look for an example implementation in the Speckle Grasshopper components.
A nifty little dialog that asks you which Speckle Account to use or allows you to register a new Speckle Account with a server of your choosing. It keeps track of all the accounts you use in C:\Users\[YOUR USERNAME]\AppData\Local\SpeckleSettings
as txt files.
It is used internally by the grasshopper components as a dialog whenever a new receiver or sender component is created:
var myForm = new SpecklePopup.MainWindow();
myForm.ShowDialog();
Exposes three components:
Sends data. Uses ZUI.
Receives data.
Shows how you can derive from the comopnents and implement your own behaviour for events, etc.
Attaches a Dictionary created with the component below to objects that support it. It's slightly aggressive, as it makes the following conversions in order to set the dictionaries:
- Polyline, Circle, Rectangle => NurbsCurve
- Box => Brep
Takes as inputs an object and a variable list of other keys.
ZUI based. Creates a custom ArchivableDictionary based on the given inputs (either double
, string
or a another ArchivableDictionary
). Can be used to create nested properties.
Spits out an object's user dictionary (if any).
Expands a dictionary into its component keys (non-recursive). Recurse it yourself, yo!
Does what it says on the label, but recursively. Nested properties are handled: rootProp.childProp1.childProp2
. If a dictionary does not have the respective key, null
is placed.
Right click and Save to file
to save the output to a text file.
Spits out a json string of the dictionary array provided. Easy peasy. Use pretty formating if needing a human readable file.
Right click and Save to file
to save the output to a text file.
Developed by Dimitrie A. Stefanescu @idid / UCL The Bartlett / InnoChain
This project has received funding from the European Union’s Horizon 2020 research and innovation programme under the Marie Sklodowska-Curie grant agreement No 642877.
MIT.