Actually, we had a Speckle question related to the Topsolid connector (and all futur parametric software connector) :
How to identify the topological elements of a geometry (vertex, edge, face) to keep track of the modifications in Speckle ?
Our question is more about the identification of topological elements of geometry.
For Example, how to know in a newer version of a Brep what Faces/Edges/Vertices have changed ?
We have a use case in TopSolid (or any design tool parametric software) described here :
We receive a cube using Speckle
We color one face in TopSolid
We receive a new version of the cube and we want to be able to identify the same face so that the color stays
So our question is : Is there an identification mechanism for the topological elements ? Like tokens or ids ?
We added an illustration and some description in the link here : Speckle.TopSolid wiki
Currently, our BREP class does not support per-feature IDs, and it may be a tricky thing to add
The brep is serialised in a monolithic json with all it’s children info converted into flat lists of values (for perfomance reasons), so even if they had IDs in Rhino, those would be lost.
But you use-case is interesting! Maybe Jonathon has some possible ideas?
We have chosen to follow the geometry of sending the identity of each faces, edges and vertices via a listing of IDs (Moniker)
"alias": {
// List of faces with are Moniker* (sorting matters)
"Faces": [
"F142(s132(7),0,1)",
],
// List of edges with are Moniker* (sorting matters
"Edges": [
"E159.1(F142(s132(7),0,1),F159(1),0)",
],
// List of vertices with are Moniker* and a hash containing
// all the Monikers* of the faces and edges that are connected
"Vertices": [
{
"Moniker": "V159(v149(5),2)",
"Hash": "00F54800373471341CF5FE075B3768CD"
},
]
// * A Moniker is the geometry modification history,
// it can be compared to a unique identifier.