Hello Speckle!
Lately I’ve been trying to convert a model uploaded via Revit connector to Trimesh instances using Python SDK and I’ve faced some issues.
I’ve read a couple of topics including this one How to covert an Assembly with re-used instances to Speckle?
and official documentation
but it seems that SDK has been updated and some things has changed.
So, currently speckle uses DAG and object instances and definitions to reduce number of duplicates. Such elements as columns, windows and doors are affected the most since they don’t change shape and inside the model tree they’re represented as InstanceProxy and have properties:
- units
- id
- applicationId
- definitionId
- transform
- maxDepth
In the model tree there are revitInstancedObjects which are basically Objects.Geometry.Mesh with faces and vertices.
The problem is that I can’t find a way how Proxies are linked to Meshes. The documentation says that it’s done via “applicationId”, but I didn’t find any links in case of my model. The “definitionId” seems to be the most probable one which is 64 length uppercase string like “4C125527DCB339D21CF34F9B734491AF467DD8907ABD9CDCDBF4D251177D6374” but there is nothing like this in revitInstancedObjects. So I’d appreciate a hint on how are Proxies and Instances are linked for models sent via Revit connector v3.
Here is a link to my model if it helps: