Shows how one can take some custom data types (here implemented within Rhino, convert them to "base" speckle objects and then reconvert them back to their original types.
For example:
BeamBase myBeam = new BeamBase();
myBeam.TopLeftCurve = (new Line(0, 0, 0, 0, 0, 2)).ToNurbsCurve();
myBeam.MainVolume = (new Box(Plane.WorldXY, new Interval(0, 1), new Interval(0, 10), new Interval(0, 1))).ToBrep();
//...
// Convert a BeamBase to a Speckle object that can be stored in the database
SpeckleBrep convertedObject = myBeam.ToSpeckle();
// Then cast it back to a BeamBase type :)
BeamBase recastObject = BeamBase.FromSpeckle(convertedObject);
Where BeamBase
is a dummy class, defined here. It converts to a SpeckleBrep
with a set of custom properties, the most important one being the custom_type_discriminator
, which essentially can be manually set or gotten using object.GetType().ToString();
.
Like this you can easily define serialisation logic to-and-from Custom SpeckleObjects. There's some basic automation in BeamConverter
class for taking a bunch of objects and casting them back and forth without thinking too much, with a graceful fail to basic speckle objects.