Multi User Input Form with Dynamo

One of the main issues when trying to implement Dynamo into your office workflows is the user interface. Don’t get me wrong, I love it. But not everybody does.

So, I have been seeking ways to create a user interface that would be more conventional, in order to make it easier for a larger number of people to benefit from the power of Dynamo. The recent implementation of Dynamo Player in Revit 2017.1 brought us closer to achieving this, but the user input options are still lean.

These past couple of months, I spent a lot of time getting familiar with the revit API. Unfortunately, the only dialog box it offers is the TaskDialog, which doesn’t allow much. Recently, I saw a post on twitter that showed how winforms could be created via IronPython, I found this pretty exciting. And with John Pierson’s latest addition to his Rhythms package I was convinced that it was possible, and not so complicated.

After reading about winforms, I decided to make a node that would allow the user to create multiple input dialog boxes. So far, it handles :

  • Strings (which can be converted to numbers)
  • Booleans
  • FilePaths
  • DirectoryPaths

Edit: there has been an update with more input types! See more here .  

Here is how it works :

newnode
UI.MultipleInputForm, Data-Shapes package

The node takes three inputs :

  1. A list of input names
  2. A list of input types (see codification below)
  3. A boolean toggle to refresh

The list of input types consists of a list of strings that will define the kind of input shown in the form.

codification
Input Type codification

I aim to replace this by a drop down list node with the input types. It’s going to take zero touch nodes, which I’m not yet very familiar with.

2
Example of multi-user input form creation
form
The created form

UI.MultiInputForm (Data-Shapes package , code at the end of the article) will return the values input by the user in a list:

animation

You can add as many inputs as you want!

3
Unique input form
4
Multiple input form

It all – of course – gets much better when DynamoPlayer is involved:

player

I hope this node is useful in getting more people to accept using dynamo. It’s just trying to fill the gap until the Dev Team or another user comes up with something much better.

Feel free to comment if you have any suggestion for improvement!

Here’s the code:

22 thoughts on “Multi User Input Form with Dynamo

      1. Hi Mostafa,

        Your package is a pearl, but since I upgraded to 2017.02.01, only the title bar of the dialogue box appears, allowing no other action than closing it. Default values are still selected on run.
        I’ve since downgraded to 2017.2.0 and it works like it used to again.

        Like

  1. Hi Mostafa

    I have downloaded the latest version 2017.02.01 however I still have the same issue of the dialog box being truncated on My Hi Res Monitors, I am running one Monitor at 3000 x 2000 with 200% scaling and the other Monitor is running at 3440 x 1440 at 100%

    Like

  2. Hi Mostafa

    I have downloaded the latest version 2017.02.01 however I still have the same issue of the dialog box being truncated on My Hi Res Monitors, I am running one Monitor at 3000 x 2000 with 200% scaling and the other Monitor is running at 3440 x 1440 at 100%

    My main monitor is the 3000 x 2000 200% scaling, If I set the monitor anywhere greater than 150% scaling the dialog box is truncated.

    Like

  3. Hi,
    awsome package, thank you 🙂

    Do you see any way how i could connect the Springs.SelectLinkedElement node to this?

    Actually i am trying to create a *dyn with your UI. Nodes to select a linked Document, an element from that document and then automate the insertion of my own family at the exact same point with the same dimensions. ( the good old Openings workflow with Arch., Struct, and MEP Model)
    I’ll post to dynamobim,org and add the link here.
    thanx
    Jeff

    Liked by 1 person

  4. is it possible to create a second list with mutiple inputs that’s linked to the first list.

    Example: first list contains a count from 1 to 10, let say that 2 is selected.
    the second list contains 4 inputs. I want, depening on the count, to make the same 4 choices for every count.

    Liked by 1 person

    1. Hi Ronald,
      you can achieve that using a sequence of UI.MultipleInputForm++ nodes. The outputs of the first node can be used to alter the inputs of the second form. In order for the sequence to always be run in the same order, you need to use the “was run” output of the first node as a toggle for the second one.

      Like

      1. i was able to link the first form to the next but i can only fill the second form once en not 4 times as i selected in the first form. Whats missing?

        Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s