Understanding list levels in Dynamo!

Поділитися
Вставка
  • Опубліковано 23 сер 2024
  • This is challenging but essential trick to master in Dynamo. In this video I share some tips and tricks I often use when teaching the concept to others.
    I hope you enjoy the session and learn something new! Feel free to comment any feedback/questions below, or follow my channel if you enjoyed this.
    Learn more about Dynamo at;
    primer.dynamob...
    Software used;
    Autodesk Revit 2020: www.autodesk.c...
    Dynamo: dynamobim.org/
    DaVinci Resolve: www.blackmagic...
    OBS: obsproject.com/
    Hardware used;
    Webcam: support.logite...
    Laptop: www.msi.com/Wo...
    Microphone: www.jbhifi.com...
    Audio interface: focusrite.com/...
    #revit #dynamo #bim

КОМЕНТАРІ • 57

  • @yeyeshua
    @yeyeshua 4 дні тому

    Thanks for the explanation about data structures in Dynamo!
    In Grasshopper you would simply "graft" the list of elements to put each element in its own list. In this way, "all parameters" are assigned to each "element list" and the appropriate "value list" is also assigned to the respective "element list" (for all element lists). The procedure in Dynamo seems a bit more complicated to me, but understandable. But once I have more experience in Dynamo, I might find the approach in Dynamo better. We'll see :D
    In Grasshopper there are also separate components like "Graft". I also saw a "Flatten" component in Dynamo, like in Grasshopper. This way we can inspect the changed list structure and see if it is compatible before using it as input.

    • @yeyeshua
      @yeyeshua 4 дні тому

      Ah, now I understand. L1 at input "element" is the counterpart to "Graft" in Grasshopper. Then we set L2 at "parameterName" to use the entire list and L2 at "value" to use the individual associated lists. The display below the lists is very helpful for this, showing which lists are on which levels (@L3 @L2 @L1). At first I didn't know whether L1 starts at the beginning or at the end of the data tree.
      A little different than in Grasshopper, because in Grasshopper you can change the list structure and make it compatible and inspect it before using it as input, but this is now understandable in Dynamo. Now it's fun to work with!

  • @kirkm4079
    @kirkm4079 2 роки тому +2

    Great idea, like you said, for adding a header row to excel, I've been using add item to front for each column individually, this would be so much easier!

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому +1

      Thanks! Yep I use this technique all the time, but I did begin with simpler/longer methods as well.

  • @klasrobertsson3943
    @klasrobertsson3943 2 роки тому

    The best and most useful of all your dynamo tutorials in my opinion. Often return to this one...

  • @Akira-xr2zb
    @Akira-xr2zb 5 місяців тому +1

    Great explaination about List, thank you!

  • @MR0MYSTERY87
    @MR0MYSTERY87 Рік тому +1

    Really love your Dynamo tutorial videos, cheers !

  • @Negotium2
    @Negotium2 2 роки тому +1

    Gavin, thanks for your work,
    Greetigs from Poland!
    cheers:)

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому

      Glad you like it, and great to know I have viewers in Poland :)

  • @TheGlennovitS
    @TheGlennovitS 2 роки тому +1

    Nice demo. The walls example really helped 💪🏼 thanks 😄

  • @borun67
    @borun67 4 місяці тому +1

    very helpful for list and list level. Thank you very much.

  • @manuelcoletto8766
    @manuelcoletto8766 Рік тому +1

    Thats great! Thanks for sharing!

  • @christopherhanson9351
    @christopherhanson9351 2 роки тому

    A bit delayed but I just saw this. Your discussion was very helpful and this video has been too, thank you!

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому

      You're welcome Christopher! Thanks for the query.

  • @harilalmn
    @harilalmn 2 роки тому +1

    Very good demonstration.!

  • @jeffclassics
    @jeffclassics 2 роки тому +1

    That's a wonderful example of an inefficient serparameter scenario. Btw, @L2 in element then the rest is default I believe also works the same, I'll check later. But Having used dynamo for maybe thousands of times I still trial and error in a scaled down list to be sure I get it right before publishing it to the team. Nested For loops and zip is easier or direct tbh.

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому

      Thanks! Yes I think you're right, there's a few levels combinations that could work in these scenarios. I use Python loops a lot now too, but I guess a lot of users don't know that side of Dynamo as well. I find frustration with levels is why most users move to Python.

    • @alleskaese
      @alleskaese Рік тому +1

      @@AussieBIMGurumy problem is that i don't really know python (find it more complicated than c#) and i wish there was a c# node in dynamo like in grasshopper, also it would be great if dynamo could use grasshopper as a example for the lists

    • @AussieBIMGuru
      @AussieBIMGuru  Рік тому

      @@alleskaese maybe look into zero touch node development which supports C#. I doubt Dynamo will go down the path of data trees as other programming languages tend to also be list based like dynamo is.

  • @muratovbim
    @muratovbim 2 роки тому

    Hi!
    It seems we can make it in easier way. We don't need to make a long lacing in the Set parameter node. We can turn on L1 for element list, don't change level on second input with list of parameter names, and turn on L2 on third input with data. In this case we take each element and each sublist of data and write the data in parameters list. We have similar lengths of lists with parameter names and data, so it'll work.
    I test it in my script now and it works. I can't add here a screeshot unfirtunately.

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому

      Thanks! Yes various combinations of lacing and levels can usuallt achieve the same outcome. I try to use parallel levels for list structures where possible, but other approaches are certainly viable.

  • @DesignTechUnraveled
    @DesignTechUnraveled 2 роки тому +1

    Wanted to give you a heads up. The audio from 01:19 - 11:26 is only in the left audio channel. Not a huge deal when on desktop audio, but fairly difficult to listen to with headphones on.

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому +1

      Yeah thanks I recwntly struggled across an issue with my audio interface and OBS. Should hopefylly be addeessed in future videos.

  • @bittor735
    @bittor735 2 роки тому +1

    Very clear example! Although I think that you mixed up your final video hahaha

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому

      Indeed I did *facepalm*.
      Good to know someone made it to the end!

  • @andriyborysov4469
    @andriyborysov4469 2 роки тому +2

    Thanks for the video! Really helpful. But something wrong with the sound. I heard your voice only in one ear using my headphones. Of course, it is not a big problem for short videos, but it would be great if you will fix it!

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому +1

      Yes it's a recording setting I forgot to fix in post production, thanks for letting me know. My recording device is mono so I usually have to mirror the sound in my editor, every now and then I forgot - whoops!

    • @dykodesigns
      @dykodesigns 2 роки тому

      @@AussieBIMGuru I think the XLR mic is plugged in the first input of the audio interface, which would be the left channel. What you can do is use a mixer in conjunction with an audio interface, I have the stereo output of the mixer go into inputs 1 and 2 of the interface. Allthough a mixer will generally keep the two mic channels separated. I recently switched from a USB mic to and XLR condensor mic so it’s an issue I have to keep in mind as well. As far as I’m aware OBS might be able to double the mono channels so that the left channel is also mirrored to the right channel.

    • @dykodesigns
      @dykodesigns 2 роки тому +1

      Edit / Addendum: I have the mic (which is mono) plugged into the first input of the mixer. The two mic inputs are also mono. However, the “Pan” knob is set to the centre position, so the mixer puts this mono channel on both the left and the right equally on the main mix. If you turn the pan knob fully to left, if will only be heard on the left channel. When you turn fully to the right, it will only be on the right channel. By turning the pan knob, you can control how strong the signal is on the left or right channel. When it’s in the centre, it’s balanced equally. A mixer gives you a lot of flexibility in that regard.

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому

      @@dykodesigns ah that was very helpful, I managed to get my mono channel going through L/R equally using these tips! Thanks so much mate.

  • @vrbaac1641
    @vrbaac1641 2 роки тому

    hi, very nice topic but i am not sure why there is no sound after your introduction... i need to review this tutorial ^^ i hope the audio can be fixed ^^ thank you

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому +1

      Ah sometimes my sound settings are off and headphones or mono speakers miss the right sound channel.

    • @vrbaac1641
      @vrbaac1641 2 роки тому +1

      @@AussieBIMGuru ahh yes... I think will try another headphone... my headphone as of now have a defective left ear piece..

  • @Hygio
    @Hygio Рік тому

    Do you have a good method of practicing this with uneven sublists? Such as deleting only curves of a polycurve that have a certain condition?

    • @AussieBIMGuru
      @AussieBIMGuru  Рік тому

      Generally I would use nodes like take items @L2 set to shortest lacing to trim sublists down to shortest depth. Typically uneven sublists are a good case to investigate how the lists became uneven, as in many cases they might be due to an error or a better way of managing data upstream.

    • @Hygio
      @Hygio Рік тому

      @@AussieBIMGuru Today's script I was able to filter out unwanted elements not by removal but by replacing them. THEN apply the List.FilterByBooleanMask to get them out.
      It concerned deleting Gridline segments that were evaluated based on a shuffled list.
      So Polycurves were each evaluated by a list that was in a transposed order. So transposing them back would wrongly align them if items were dropped.
      If this makes any sense haha.

    • @AussieBIMGuru
      @AussieBIMGuru  Рік тому +1

      @@Hygio ah yes transpose only works for equal lists generally. I mostly use it when working with matrices of data like excel/csv.

  • @ningzhou8397
    @ningzhou8397 Рік тому +1

    one of the reasons that confusing me is that "reversed" order, L1 should be always 1st level which is outmost, in fact, it's innermost

    • @AussieBIMGuru
      @AussieBIMGuru  Рік тому +1

      Yes levels at first feel like they should work in vs outward, but over time you'll find more often than not you usually will want to access sublists this way due to not always knowing the depth of incoming list structures. I believe reversing @L1 would generally not achiece a lot as it would work at object level. Generally level 2+ would have more desired results.

    • @ningzhou8397
      @ningzhou8397 Рік тому

      @@AussieBIMGuru right, that makes sense

  • @mostafamagdy7995
    @mostafamagdy7995 2 роки тому

    I have a problem if you can help me I want to copy dimensions between revit files same views same geometry but when i bind the dimensions disappear

    • @AussieBIMGuru
      @AussieBIMGuru  2 роки тому +1

      It sounds like they may be struggling to find valid refefences. When dimensions are copied they usually search for new references and sometimes this doesn't succeed. Usually i suggest copying elements across with dimensions where possible, but otherwise it isn't going to be as reliable. Cross check the model coordoninates match also, other than that not sure if there's anything else that can be done.

    • @mostafamagdy7995
      @mostafamagdy7995 2 роки тому +1

      @@AussieBIMGuru thank you it's the a multiple binded but still same model so i guess the problem happens when binding take a place

  • @tikytak21
    @tikytak21 Рік тому

    How does one remove redundant list levels?

    • @AussieBIMGuru
      @AussieBIMGuru  Рік тому

      A combination of list levels and the list.flatten node works best for that.

  • @aethylwulfeiii6502
    @aethylwulfeiii6502 Рік тому

    Just tell me how to get multiple outputs from one node!

    • @aethylwulfeiii6502
      @aethylwulfeiii6502 Рік тому

      So that I can use them as multiple inputs for another node.

    • @AussieBIMGuru
      @AussieBIMGuru  Рік тому

      Make a code block and type data[x], where x is the index of the item or sublist in your data. You can use the ; character to make a new line im the same code block to get multiple outputs.