I have finally started into the realm of creating some of my own Dynamo nodes in vb.net (more familiar with it than c#, and so far have not come across any limitations when creating Revit addins with it), and I’ve hit a snag with my first non-tutorial node I tried to create as a test to ensure I fully understand how it works prior to making more advanced things. I wanted to replicate the List.Join functionality, Variable Inputs and all, but with the added feature of culling duplicate entries. My issue is that I’m not getting the output I would expect. Instead, I’m getting an output more similar to List.Create, where each of the multiple inputs are put into their own child list, when they should really be getting added to a single main list, as long as the inputs are all 1 tier lists or single elements. I have successfully accomplished this in a python node, but I want it to be a “one stop shop” for editing if I need to make a change for some reason, and creating a custom node from a python node takes away the variable inputs (+/- buttons) that I need, since I don’t know how many inputs there could be.
I have tried using Collections, Lists, and HashSets, all (Of Object), as the return value, but I’m getting the same result in all cases. At this point, I’m left with one of two takeaways. Either: 1) I don’t remember how to handle the merging of two lists like I thought I did, which I double because I’ve used my own versions as well as answers from multiple sources like StackOverflow, or 2) I don’t fully understand how Dynamo is handling the node once created, and is running it on each input at a time rather than all inputs at once.
Unfortunately, Variable Input or not, the resources for troubleshooting Zero Touch Nodes seems to be sparse, and especially so for creating a single list out of multiple inputs.
Any help on this topic would be greatly appreciated. My code, for what it’s worth in its current state, has been something akin to:
Public Shared Function MergeNoDups(ParamArray lists() As Object) As List(Of Object) Dim _list As New List(Of Object) For Each l In lists _list.Add(l) //I've used .Add, .Append, and .AddRange where possible for the different above return types Next Return _list.Distinct.ToList //I used the function calls here, but the website formatting does wierd things when I include () in this line. End Function