Add a Revit phase-parameter with ExtendSpeckleObject in GH

Dear Speckle community,
I would like to refer to an old post of mine, as there is now a new feauture in the Speckle Revit Connector - to add a phase parameter to a Revit Object.
(old post of mine: Send Model variants from GH to Revit)

now that this awesome feature I was most expecting has been implented in Revit Connector, for which I am really very grateful to you, I would very much like to ask for your help. :slight_smile:

I am trying to attach a phase parameter to my speckle object via the Grasshopper Connector using the Extend Speckle Object. The goal is that when I subsequently import the object sent from Grasshopper into Revit by using the Revit Connector, the object will be imported with the correct phase parameter.

Enclosed is a short digression about my problem:

I have created an automated load-bearing structure in Grasshopper using Karamba3D. Subsequently, I converted the construction into speckle elements. The columns in Revit-Column, the beams in Revit-Beam, and so on. Then, using a Merge-Node in Revit, I send all the objects to the GrasshopperConnector so that I can import the objects in their final form into Revit using the RevitConnector. In Grasshopper it looks like this:

In Revit it comes as follows (this is really great):

My goal is to have the following parameter (highlighted in yellow in the next pic) filled in automatically. For this I was informed in an old post from @teocomi that i can do that in GH with an Extend Speckle Object. :slight_smile:

I would now add this phase parameter as follows with Grasshopper, which unfortunately does not work for me…

I use “phase_created” as the key, since it is a built-in parameter. As value I take the phase that I have already predefined/created in Revit.

Unfortunately, it doesn’t work for me. Would be very happy if someone can help me with this.

As info: I am using Speckle Grasshopper Connector V2.7.3 and Revit Connector V2.9.3.

I thank you in advance and look forward to any help.
Kind regards from Vienna :slight_smile:


Unfortunately, I still haven’t been able to achieve any success. Can anyone give me a tip on how I can progress or whether I am working in the right direction at all? I would be very happy for help :slight_smile:

Hey @Philippo ,

Thanks for bearing with us, we’re in the middle of a release :slight_smile:
Can you please try using phaseCreated instead of phase_created?

Hey @teocomi ,

thank you for the reply, this specification of the key was the trick and it worked. The setting for the phase parameter in Revit works. Thank you very much for your help. The tool is amazing.

Unfortunately I still had a small problem. If I send two different model variants to Revit, for example the first variant with phase parameter Variant1 and the second variant with phase parameter Variant2, it happens that elements, which are the same in the Variant2 phase as in the Variant1 phase, that those elements from the Variant1 phase get “deleted”.

Below are pictures for better understanding:

  1. In the first step I defined and set the phase parameter Variant1. Everything arrives wonderfully in Revit.

  1. Model in Revit

  1. Now, for the supporting structure, I have set my primary beam in Grasshopper to precast. This model defines my variant 2 and this I add to the phase parameter variant2.

  1. In Revit, it arrives as follows (Variant2):

As can be seen, the foundations are missing here. These were somehow not transferred. If I now look again at variant 1 in Revit, then all components are missing, which were also the same in variant 2. Only the primary beam is still here, which however is exactly the difference between variant 2. Strangely enough, the foundations are still here.

Is it possible that Revit simply changes the phase parameter for elements that have already been loaded? This would make sense that exactly these components, which are the same in variant 1 and 2, are now only visible in variant 2.

Is there a possibility to assign an identification number to the elements already in the course of the Grasshopper processing, so that really all elements are preserved in the course of the import?

I would be very happy to receive a short feedback. Thanks in advance :slight_smile:

Kind Regards,

1 Like

Hi @Philippo,

Thanks for the detailed explanation! When receiving multiple times from the Revit connector, it tries to be smart and automatically only update the elements that have changed.

You can get around this in 2 simple ways:

  • using multiple “saved streams”: create 2 receivers for the same stream, but one pointing to the variant1 branch and the other to variant2 branch. In this way, data pulled from either will not conflict with the other.

  • OR use a different receive mode: by switching to the create receive mode, you can keep using only one “receiver”, and the connector will not attempt modifying or updating previously received elements. You can read more about receive modes here.

This is actually a third option! You can indeed do that, by setting the applicationId property, see a similar thread here: Update behavior Rhino to Revit


1 Like

Thank you very much for the help. This looks good, I will test it in a timely manner and get back to you. :slight_smile: