OK, here is a Python script to try… Right now limited to closed volumes: meshes or surfaces/polysurfaces. After a reference object is selected, it checks in order:
Mesh or BRep object
- Number of edges
- Total length of edges
- Number of faces
- Number of vertices
If an object does not match one of the criteria, it is excluded. The matching objects are selected at the end. The status bar shows the progress.
For a lot of objects, this can be somewhat time consuming and will vary with the different depths of checking before objects are included or excluded. I tried with 10,000 simple boxes with slightly varying volume, the time varied from about 30 seconds when only a couple of them met the volume criteria, to about 75 seconds when almost all of them did. With the same number of boxes, but half had one split edge (which will trigger a “not the same object”, despite the virtually identical criteria) it took about 60 sec.
All this stuff can be adjusted perhaps and the script could be extended to open objects etc at some point. I’ll throw it up here for testing. In your file it took about 20 seconds to find “identical” stones to a selected reference stone, usually about 7 others found besides the original.
Let me know how it works,
Edit: fixed one bug that could cause the status bar meter to stay on if no objects were found, and a couple of other cleanups.