"Deleting" hosted elements (e.g., doors, windows) in Revit via Speckle

Hello Community,

lately I’ve been trying to understand Speckle, especially how it realizes data curation with Autodesk Revit.
So far, I have tested the fundamental operations of inserting, moving and deleting an object in my Revit project by receiving commits that I have previously pushed from the same project. Inserting and moving work fine, but when trying to delete a hosted object like a door, I encounter a problem. I understand that in order to “delete” a hosted object on the Speckle server, you can’t just push a “delete this” commit. Instead you have to remove the hosted object in your Revit file and then include the former host object in your next commit. When receiving this commit in an earlier version of the project, the applicationId (in Revit: UniqueId) of the host object should be recognized and the hosted object should be “deleted”.
This works fine as long as the commit containing the former host object contains more than just the host object. I wonder if this is intended and if so why it works this way.

  • Objective: “Deleting” a hosted element (door) by pushing only its host element (wall) as a selection to the Speckle server
  • Issue: When receiving the commit back into an older version of the Revit project the door isn’t deleted.
  • Example:
  1. creating a Revit model:

  2. pushing the walls, the floor and the door as a selction to the server:

  3. removing the door in the Revit model and pushing only its former host wall:

  1. receiving the initial commit with all the objects → (a new) door (with new Id and UniqueId) is inserted again:

  2. receiving the commit containing only the empty wall → door still exists in the Revit model:

If I push “Everything” instead of a selection, or if I add another element to the selection (e.g., the former host wall and the wall opposite to it) in step 3, deleting the door in step 5 works just fine:


But right after receiving the commit containing only the former host wall (and not deleting the door), even when receiving the “right” commit, the door is not deleted. After receiving only the former host wall, the door seems to be “stuck”. Even after receiving the original project commit, the door can’t be removed by a Speckle commit. Only after I have manually removed it and received the initial project commit again, can a commit like the one containing the host wall and the opposite wall remove the door from the Revit project.

I’ve encountered the same problem with windows.

I’ve been using:

  • this Speckle_branch
  • Revit 2024.1
  • Revit Connector 2.17.0
  • Revit database explorer 2024 - v2.2.2

Thanks in advance!

Hello Community,

I’m sorry if my question is unclear. Unfortunately, this problem occurs in all my test projects. I wonder if the problem might be with my PC. Does anyone else in the community have similar difficulties with deleting a hosted object or is it just me?

Warm regards
Kai

Hey @Kai ,

Sorry for the late reply. This must have slipped through the cracks. I believe this is not the expected behaviour. Can you share the Revit file with me? You can send a DM if you don’t want to share it publicly.

Hi @gokermu ,

No worries, thanks for the reply!
Sorry, I forgot to share the Revit file in my initial question. Here it is:
Revit24.rvt (5.5 MB)

1 Like

Hi,

I noticed that this phenomenon is not limited to Hosted Objects. I created a new test project in Revit and inserted a long wall and a short wall into it:

Now I manually removed the short wall from the model and attempted to delete the long wall by receiving a Revit commit. Here are the results I obtained:

  • First, I tried to delete the long wall by uploading and then receiving only the short wall. This resulted in the short wall being inserted into the model, and the long wall was not removed. :x:
  • After that, I created a commit that included another short wall alongside the existing short wall. I then received this commit, which resulted in both short walls being inserted and the long wall being removed. :white_check_mark:

It seems that a commit containing only one object is not suitable for deleting objects from a Revit model.
I have been using this branch and the following Revit file: Test_Wand_03_kleiner.rvt (5.3 MB)

PS: I have also tested the AutoCAD connector and wonder if it is even possible to delete objects in AutoCAD via a Speckle commit. So far, I have not been successful with it.

In your experiments, are you always using the same Revit file or making receives into different files?

Hi @jonathon ,

Mainly I have been using the same Revit file, but I have also made receives into differnt files. For example, I created a Revit file with three walls and uploaded all three of them. Then, I received these three walls in another Revit file and uploaded a commit containing only one wall and another one containing two of the walls. When I receive these two commits in the original Revit file, the same issue occurs as described above.