Great question @feitiandacao and welcome to Speckle Community.
I’ll start with a truism:
-
Any two objects that are 100% identical will be understood by Speckle to be a single Element:
- same data AND
- same geometry
The opposite position makes sense in this regard. If any property is different, either data or geometry, then the two objects will be considered as different.
To bring that back to your question, how would two different objects be determined by Speckle to be one object that is changed.
When sending to Speckle, many softwares have internal IDs separate from the ones they may display to the user to track exactly this issue; in conversion, Speckle adds this internal property to the Speckle objects as applicationId
. For this reason if you send an element from Rhino to Speckle, receive in Blender and then send again, it may end up with a completely new applicationId
In this case our diffing tools will consider the original Element deleted and replaced and not changed.
If the Speckle Viewer team has an even cleverer logic id love for them to add details. @alex ?
You can see for yourself if you are code savvy: https://github.com/specklesystems/speckle-server/blob/ffb96eaf5593aa7943a4d60449cce4fd9aceb8a9/packages/viewer/src/modules/Differ.ts
Id love to know more what you are thinking in this regard @feitiandacao and feel free to introduce yourself if you want: Introduce yourself 🙆