# How to create a User interface in revit

**URL:** <https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122>\
**Category:** Uncategorized\
**Created:** [October 14, 2024, 4:59am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122 "2024-10-14T04:59:32Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![smrema](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@smrema](https://forum.dynamobim.com/u/smrema)\
**Post date:** [October 14, 2024, 4:59am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/1 "2024-10-14T04:59:32Z")

</div>

Hello Everyone,

I have my dynamo script ready and I want to create a user interface. I want my user interface to look like pic below. Any ideas on how to do so?

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/b/f/bf1724dd5820ffccb92e274a614424f3dd3290ff.png)

---

<div class="post-metadata">

**Author:** ![GavinNicholls](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/gavinnicholls/32/190442_2.png) [@GavinNicholls](https://forum.dynamobim.com/u/GavinNicholls)\
**Post date:** [October 14, 2024, 5:21am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/2 "2024-10-14T05:21:37Z")

</div>

Dynamo on its own cant achieve this.

You can either look into writing addins in C# or use a third party tool that can run scripts from buttons such as:

[Pyrevit](https://discourse.pyrevitlabs.io/):

> **[GitHub - pyrevitlabs/pyRevit: Rapid Application Development (RAD) Environment...](https://github.com/pyrevitlabs/pyRevit)**
>
> Rapid Application Development (RAD) Environment for Autodesk Revit®

Nonica:

> **[NonicaTab FREE. All-In-One Flexible Revit® Toolbar | Revit | Autodesk App Store](https://apps.autodesk.com/RVT/en/Detail/Index?id=2476142006549788030&appLang=en&os=Win64)**
>
> +10 Popular Tools (Room Finishing, Color Splasher, Align Tags / Views, Rename , Duplicate Sheets, Coins Section Box, ElementRenumbering, Productivity DWG OnboxApp Tiny Dynamo Scripts Tab Magic Join )

Relay:

> **[GitHub - johnpierson/Relay: Relay allows for you to add Dynamo graphs to your...](https://github.com/johnpierson/Relay)**
>
> Relay allows for you to add Dynamo graphs to your Revit ribbon.

If one of your goals here is to protect your code as well, generally not possible with dynamo scripts.

---

<div class="post-metadata">

**Author:** ![sovitek](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/sovitek/32/116237_2.png) [@sovitek](https://forum.dynamobim.com/u/sovitek)\
**Post date:** [October 14, 2024, 6:30am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/3 "2024-10-14T06:30:13Z")

</div>

Hi @smrema I like [Orkestra](https://forum.orkestra.online/) and free as well for that feature…

 ![Skærmbillede 2024-10-14 082855](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/6/2/621822b2cfda381f8d5cb4a104d441122e88c021.png)

---

<div class="post-metadata">

**Author:** ![smrema](https://avatars.discourse-cdn.com/v4/letter/s/b782af/32.png) [@smrema](https://forum.dynamobim.com/u/smrema)\
**Post date:** [October 15, 2024, 8:34am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/4 "2024-10-15T08:34:04Z")

</div>

Thanks for your reply @GavinNicholls.

What third party tool do u recommend for someone with no coding experience but knows dynamo. I watched your old video on this issue, and you recommended dynamo browser for making a toolbar. Is it still a good option compared to these u listed?

---

<div class="post-metadata">

**Author:** ![GavinNicholls](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/gavinnicholls/32/190442_2.png) [@GavinNicholls](https://forum.dynamobim.com/u/GavinNicholls)\
**Post date:** [October 15, 2024, 10:35am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/5 "2024-10-15T10:35:08Z")

</div>

Dyno has been phased out. I recommend [pyRevit](https://discourse.pyrevitlabs.io/), personally.

[![](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/5/a/5a3d18e3973310af777bb07ef1907190bbf8abbb.jpeg "Run Dynamo scripts using pyRevit!") ](https://www.youtube.com/watch?v=dn2nWN24Fo8)

---

<div class="post-metadata">

**Author:** ![jacob.small](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jacob.small/32/161030_2.png) [@jacob.small](https://forum.dynamobim.com/u/jacob.small)\
**Post date:** [October 15, 2024, 11:26am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/6 "2024-10-15T11:26:55Z")

</div>

I recommend building your own add-in if you want your users to have an add-in feel. Leverage Dynamo Player if not.

There is a reason these are separate tools, in my experience times when you try using a hammer to drive a screw it leads to things falling apart.

---

<div class="post-metadata">

**Author:** ![sovitek](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/sovitek/32/116237_2.png) [@sovitek](https://forum.dynamobim.com/u/sovitek)\
**Post date:** [October 15, 2024, 11:45am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/7 "2024-10-15T11:45:59Z")

</div>

yeah agree on that one…no matter what when its dynamo graph you will run…it need close open every time and take time vs C …there are pros and cons with everything…IMO

---

<div class="post-metadata">

**Author:** ![staylor](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/staylor/32/94307_2.png) [@staylor](https://forum.dynamobim.com/u/staylor)\
**Post date:** [October 15, 2024, 1:11pm UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/8 "2024-10-15T13:11:50Z")

</div>

Even though Dyno Browser is no longer supported, it does work up through 2024 anyway. I don’t know about 2025. I am creating my own add-in with C#, so probably won’t ever test it in 2025.

One limitation with all avenues listed herein is, you can’t separate the scripts per the version of Revit. So if you have a script that only runs in 2021, you can’t just have that script show up in the toolbar for 2021. It will show up in every version of Revit, that you are loading your custom toolbar into. At least it was that way at one point, but I haven’t looked into those packages lately to see if that has changed. So you have to be methodical on how you set up your menu dropdowns and toolbars.

Also, keep deployment in mind when considering which avenue to take.

---

<div class="post-metadata">

**Author:** ![sovitek](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/sovitek/32/116237_2.png) [@sovitek](https://forum.dynamobim.com/u/sovitek)\
**Post date:** [October 16, 2024, 4:53am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/9 "2024-10-16T04:53:43Z")

</div>

Hi @staylor i guess with [orkestra](https://forum.orkestra.online/) you can choice which version…but anyway it will open-close after every run…i guess its faster with player, in my experience…a really nice featurein [orkestra](https://forum.orkestra.online/) is the “mediplayer” for loop multiple graph…

 ![Skærmbillede 2024-10-16 065138](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/2/b/2ba9f1299bec704405a09e1da108a03a3251c9a7.png)

---

<div class="post-metadata">

**Author:** ![JMCiller](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jmciller/32/180272_2.png) [@JMCiller](https://forum.dynamobim.com/u/JMCiller)\
**Post date:** [October 16, 2024, 5:17am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/10 "2024-10-16T05:17:00Z")

</div>

Depending on your programming skills, I´d pick either C# or Python.

The only reason I would keep my scripts in Dynamo is if you are performing many geometrical operations that can be hard to calculate with the Revit API. Dynamo offers you the possibility to debug operations while you insert nodes with a user-friendly background preview. However, when coding with [pyRevit](https://discourse.pyrevitlabs.io/) and C#, you do not have that geometry preview available.

Among C# and Python, I would choose C# over Python. In the end, Revit add-ins are created under C# by default, and [pyRevit](https://discourse.pyrevitlabs.io/) is a tool developed by a third party.

If you end up keeping your scripts in Dynamo, you should go definitely with [Orkestra](https://forum.orkestra.online/).

---

<div class="post-metadata">

**Author:** ![sovitek](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/sovitek/32/116237_2.png) [@sovitek](https://forum.dynamobim.com/u/sovitek)\
**Post date:** [October 16, 2024, 5:31am UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/11 "2024-10-16T05:31:51Z")

</div>

Hi @JMCiller yeah agree…havent tried with [pyrevit](https://discourse.pyrevitlabs.io/), but guess its slow as well so long its a dynamo graph you will execute…

---

<div class="post-metadata">

**Author:** ![staylor](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/staylor/32/94307_2.png) [@staylor](https://forum.dynamobim.com/u/staylor)\
**Post date:** [October 16, 2024, 1:31pm UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/12 "2024-10-16T13:31:18Z")

</div>

Thanks @sovitek. I never looked at [Orkestra](https://forum.orkestra.online/), so thank you for clarifying. I’m well on my way with C#, so no going back now, for me! 🤣

---

<div class="post-metadata">

**Author:** ![GavinNicholls](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/gavinnicholls/32/190442_2.png) [@GavinNicholls](https://forum.dynamobim.com/u/GavinNicholls)\
**Post date:** [October 16, 2024, 10:15pm UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/13 "2024-10-16T22:15:26Z")

</div>

It’s about as fast as running via a Python node, better than you’d expect but nowhere near the efficiency of C# (as well as lacking the ability to take casting shortcuts etc.).

The main benefit to [pyrevit](https://discourse.pyrevitlabs.io/) is flow control for me vs Dynamo. Being able to exit a script partway in, use builtin forms and loading bars makes for a safer experience for a user. Buttons on toolbars and a quick development experience are a plus too.

As many mentioned its a third party tool and the 2025 development has been shakey, but it’s a robust platform otherwise between dynamo and C#. I’m learning C# currently and some things are a major drag (building wpf forms is not fun…) whilst others are a dream vs [pyrevit](https://discourse.pyrevitlabs.io/).

---

<div class="post-metadata">

**Author:** ![jacob.small](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jacob.small/32/161030_2.png) [@jacob.small](https://forum.dynamobim.com/u/jacob.small)\
**Post date:** [October 16, 2024, 10:34pm UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/14 "2024-10-16T22:34:07Z")

</div>

> [@GavinNicholls](#):
>
> building wpf forms is not fun…

The UI is much of the effort in development in any platform, but once you learn the framework it gets better. I don’t recommend jumping between Revit UI forms, winforms, and wpf in a day though. That’s been my experience last week and this - it really gets old quick.

A good IDE is a must though, and expertise with that IDE certainly helps.

As a tip you can also load the functions you need to test directly into Dynamo as zero touch nodes - which can allow function testing (including with the debugger) before you develop the full UI. Just be sure to set things to ‘public’ before you build.

---

<div class="post-metadata">

**Author:** ![staylor](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/staylor/32/94307_2.png) [@staylor](https://forum.dynamobim.com/u/staylor)\
**Post date:** [October 17, 2024, 6:54pm UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/15 "2024-10-17T18:54:13Z")

</div>

> [@GavinNicholls](#):
>
> (building wpf forms is not fun…)

I actually am okay with the method of creating the wpf forms in C#. Once you have a couple under your belt, it’s not that bad, really. The fact that you can see the form as you are developing and having the controllability with naming and formatting of each element in the form separately helps greatly! I have converted about (13) of my scripts now and from the standpoint of controlling the sequence of data and not having to deal with levels and lacing…sooooo much better!!

Granted, debugging is a pain. I may need to look into @jacob.small suggestion with zero touch.

---

<div class="post-metadata">

**Author:** ![jacob.small](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jacob.small/32/161030_2.png) [@jacob.small](https://forum.dynamobim.com/u/jacob.small)\
**Post date:** [October 17, 2024, 7:44pm UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/16 "2024-10-17T19:44:59Z")

</div>

The form is always going to be debugged as you are now, but the functions underneath it… 🏆

---

<div class="post-metadata">

**Author:** ![staylor](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/staylor/32/94307_2.png) [@staylor](https://forum.dynamobim.com/u/staylor)\
**Post date:** [October 17, 2024, 7:48pm UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/17 "2024-10-17T19:48:48Z")

</div>

Oh okay. Thanks for clarifying!

Luckily, other than the form code, there are certain parts of the other code that you can change and add to without having to stop and restart the debugger. If it wasn’t for that, would definitely be a nightmare for sure. Thank goodness for Hot Reload!!

---

<div class="post-metadata">

**Author:** ![GavinNicholls](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/gavinnicholls/32/190442_2.png) [@GavinNicholls](https://forum.dynamobim.com/u/GavinNicholls)\
**Post date:** [October 17, 2024, 10:41pm UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/18 "2024-10-17T22:41:38Z")

</div>

My main bugbear is that other forms spoilt me for ages. When I realized you have to literally program things like shift select it was a reality check. Without GPT I can frankly say I would have probably given up by now.

Fallen back on winforms for now to help focus on C# syntax, got buried in wpf quirks.

---

<div class="post-metadata">

**Author:** ![staylor](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/staylor/32/94307_2.png) [@staylor](https://forum.dynamobim.com/u/staylor)\
**Post date:** [October 18, 2024, 12:38pm UTC](https://forum.dynamobim.com/t/how-to-create-a-user-interface-in-revit/105122/19 "2024-10-18T12:38:12Z")

</div>

Yeah, between GPT and searching to see how others have handled certain things, I would be lost also. Especially with how to set up multiple selection checkbox list. Would have never figured that out on my own. However, even GPT gets some stuff wrong. But it does get you in the ballpark at least.

I relied on the Data-shapes package for my forms and never really got into using the others in my Dynamo scripts. So I guess, it’s a good thing that I don’t have a comparison to the wpf forms. 🤣

Guess we are using this post as a podium, so I will digress now.
