Exercises for beginners

if they are not used to code and/or script it would probebly be a good idea to explain how computer handles strings,floats/double and integers diffrent seams obvious to us who work with it. but for someone new its very strange.

also might be good to have some sort of lesson how you can manipulate data for instance spliting strings, chop list etc.

maybe mention a little bit about index (List.GetItemAtIndex)

1 Like

Thanks for your replies. There is a little handout to the exercises, where the most important nodes, concepts and the difference between string/number/etc. is explained (with the recommendation to only use codeblocks from the start on).

This leads to another exercise:

Understanding node error messages and solve the errors.

would avoid getting into things such as crop views, generating a lot of graphics and basically anything that involves a lot of cordinate points/vector points, Bounding boxes etc. also avoid things like family manipulation inside families and getting information from nested families, or get host elements.

These things are either of limited use or involve alot of cordinate/vector points. your students are going to have enought to do figuring out the basics as it is.

if you later on, make advanced excercises this would fall in there.

1 Like

@gerhard.p , also good videos here:
Free Dynamo Courses | Basic & Advanced Courses :heavy_check_mark: DiRoots Elearning

1 Like

To lend in on all the great points here, I find it is best to begin with basic lists of objects followed by get/adjust/set parameter values. The emphasis isn’t on working with lists here, but just that you can do one>many operations on a list of objects, or many>many across objects and their data - teaching the user the limitless economy of scale that programming offers. Show them both ‘select model element’ options, as well as a basic introduction to categories and ‘get all elements of category’ so that they can see both explicit and collecting methods of accessing objects in Revit. Usually people will be able to better see the value of Dynamo if it can be related immediately to tasks they waste time on currently, of which data entry is almost guaranteed to be one.

During the Covid days, my example was literally getting all rooms and their area, dividing it by 4, rounding it down and writing it back to the Occupancy parameter. That covered most basics quite well, whilst using a relatable design constraint.

I avoid geometry initially unless they have a background in geometry (e.g. Grasshopper user), computer science/graphics or advanced mathematics. Best that they discover this side of Dynamo over time, as it is difficult to directly relate back to Revit I think - geometry is often abstract in practical application (for example, numbering objects by spline). Be mindful to manage and quell expectations for Grasshopper users given that Dynamo is usually most powerfully applied as a data management tool initially versus a geometry environment for beginners - they can sometimes miss the point of Dynamo if their journey begins (and often ends) with geometry.

Whilst I don’t disallow the use of custom packages, I teach users to avoid installing ‘all the packages’, and pick one or two they can benefit from most. Data Shapes I hold off until they’re comfortable with Dynamo Player, as I find usually you can do a lot without complex UI’s as a beginner. Such beginner suitable packages I show users are Clockwork, Genius Loci, Rhythm and Crumple (mine). All of them have fairly clear and concise nodes that a beginner can grasp the use case for at face value. I make sure to reinforce to them that many custom nodes are shortcuts the user is best off learning step by step to undertake versus just looking for a custom node, so start with simple problems where custom nodes are not as necessary.

Once a beginner/user ‘gets’ the point of Dynamo and wants to learn properly, it’s back to basics. Dynamo Primer, and a focus on data types and list/index management followed by filtering and finally laces and the dreaded list levels.

Beyond those steps most users I find can begin to engage with the forums to troubleshoot, or find their way through Dynamo. By that point the average user is likely 3-6 months in already. Everyone is different, and some people will want a gentle hand to guide them whilst others will want to learn ‘all the stuff’ from anyone around them. Don’t hesitate to also encourage users to brush up on their Revit skills if they need this first, as usually the better you know Revit the better you will identify use cases for Dynamo (and appreciate Revit’s ‘can’t do that’ barriers).


My best advice its just practice so most you can goin through all ootb nodes and build from there and just be in here :wink: that the way i try to learn and im not clever :wink: :wink:


It really is not an easy task to make someone understand the benefits of dynamo in the beginning. I agree that it is essential to let users do some work they know from revit (parameters, etc) pretty soon. But some small exercises before, to get used to dynamo, do not hurt.

This is the draft of the little handout that i provide (I wish i had this on my first day).

  1. String/Number/Bool/CodeBLock
  2. Select Model Elements
  3. List Create, Filter By BoolMask, compare and search Lists
  4. Get and Set Parameters


Not really happy with that one :confused: Maybe i have to add something to it?

Exercise 3 Intersect Element Geometry
Match intersecting pipes with their corresponding wall.

  1. In Revit, create 3 Walls and a bunch of pipes that intersect.
    Make sure each pipe intersects with only one wall.
  2. In Dynamo, get elements, get their geometry and test for intersections.
    Filter the pipe Solids by Boolmask, the goal is to get a list of pipes with 3 substlists
    representing the 3 walls. Use FirstItem, LastItem and ItemAtIndex nodes to get each
    of the 3 sublists. By selecting these nodes you can check if your result is right.

First sheet is ready.

I found everyone at my work got really scared with lists.

I’ve just started another training session… and I’m leaving lists until about week 8 :laughing:

1 Like

Still scared after 3 Years :sweat_smile:

1 Like

What really helped me teaching, was to make it light and playful.
You make up some funny tests and everybody likes it


And you tell us this without giving examples? :smiley:

Here are some examples at a higher level, which you have to adjust of coarse:



when it comes to make them understand the benifits. get a script that solves something really boring they have to do everyday or just do it more efficiently.
automatic creation of views,
create view and assign view template for several floors at once.
move a ton of views to diffrent sheets


Yes that´s what i did :slight_smile:
view templates will be another nice exercise.

You might want to check out episodes 4-6 of the Dynamo Office Hours for some list examples: Dynamo Office Hours - YouTube


The main problem I’ve discovered why people are not interested in automation with dynamo aka this topic (which is totally nuts for me) is, they lack total interest in CS (computer science).

But on the other hand you can spot people who are interested very early on with one question.
I always ask if computers are deterministic (by a programming language), how comes we can generate random numbers in an pre-defined system.
This tells you a lot about the thought process of a person and their interests, even if they had no contact to CS.

1 Like

To be fair I’m not all that interested in computer science at a deep level vs task automation. Don’t get me wrong, computers fascinate me - but I’m generally happy to view my PC as a lightning rock unless it needs my attention. The programmers I come across that are obsessed with CS generally I find struggle to bring up other programmers, as they start technical/fully abstract from a beginner’s perspective.

I think it’s moreso a general interest in programming concepts and systematic approaches that good programmers I meet have in common, as well as an appetite for continuous learning and self development (vs. ‘my company must teach me everything, otherwise I do not progress’). It’s no coincidence that the people who built Revit family libraries all found their way into Dynamo sooner or later - it and programming talk to the systematic pursuits we already applied here, albeit slightly more manually.

讲讲我自己的历程,我是18年有一个复杂的体育馆项目需要用到参数化设计,一开始是在犀牛的Grasshopper里做的,后面还是要建一个BIM的模型,开始时我是导入进去的,不能编辑,只能看,后来我发现Revit也有一个类似的工具叫Dynamo,尽管当时并不强大,单还是引起了我的兴趣,于是我尝试着复刻了一遍。查了很多资料,一边查一边学,但是发现dynamo实现grasshopper同样的功能需要的节点更过,而且更复杂,而且不知道怎么导入到revit里面,直到我在youtube发现了一个英国子弹头楼(The Gherkin)的案例视频,发现通过构造定位点,然后使用自适应构件实现。
后来很长时间我没有用了,因为和其它同事合作的大部分项目还是基于CAD的,直到后来我有一个异形项目,于是自己重拾dynamo,然后建了出来,加上公司开始推广revit了,加上我自己对自己生涯的一些观念转变,以及刚好COVID-19隔离在家,而且发现Revit更新了2023,于是我遍历学习了Revit2023所有的自带节点,然后尝试把很多第三方节点包的功能也去摸了一遍,不是都成功。后来我还发现了Youtube上AussieBimGuru的频道,觉得讲的很好,跟着学,还学习了Python,但是在开发自定义节点以及接触庞杂的Revit API,我决定还是用自带的节点和第三方的软件包来实现我日常的功能,而且我发现通过目的性去学比之前一个一个节点查看功能要强。
我还看了一些论文,发现在中国用的最多的还是set parameter value by name以及部分的参数化设计,(就是把犀牛的那一套移植到Revit上),而且我发现很多桥梁建设与设计公司用的很多。
我讲我的经历主要是建议,一开始给他们展示你会的,展示一些很酷炫的dynamo能实现的功能,比如参数化设计,比如设计流程自动化,然后从一些最基本的节点开始,比如在中国很多论文提到的set parameter value by name,可以批量的设置一些东西,当他们有兴趣后提供一些学习资源,比如Dynmao Dictionary,Dynamo Premier还有YouTube上的很多视频。

Translate by Google:

English is not my native language, and my speed of typing English is not as fast as my speed of typing Chinese characters, so please read it with Google Translate.
Let me tell you about my own experience. I had a complex gymnasium project in 2018 that required parametric design. At the beginning, I did it in Grasshopper of Rhino. Later, I still needed to build a BIM model. At the beginning, I imported it Yes, it cannot be edited, but can only be viewed. Later, I found that Revit also has a similar tool called Dynamo. Although it was not powerful at the time, it still aroused my interest, so I tried to reproduce it. I checked a lot of information and learned while checking, but found that dynamo needs more nodes to realize the same function of grasshopper, and it is more complicated, and I don’t know how to import it into Revit, until I found a British bullet building on youtube (The Gherkin’s case video, found by constructing anchor points and then using adaptive components.
After that project, I tried some other nodes and found that some can realize some simple automation and improve efficiency, and some can also perform parametric design, which is well combined with Revit.
I didn’t use it for a long time, because most of the projects I cooperated with other colleagues were still based on CAD. Until later, I had a special-shaped project, so I picked up dynamo myself, and then built it. In addition, the company started to promote Revit. I also think about where my career would go , and during the quarantine of COVID-19 I found that Revit has been updated to 2023, so I got time to learn all the built-in nodes of Revit2023, and then tried to learn many third-party packages as well. I’ve tested a lot nodes, but not all were successful. Later, I also discovered the channel of AussieBimGuru on Youtube. I thought it was very good. I followed it and learned Python. However, when developing custom nodes and contacting the complicated Revit API, I decided to use the built-in nodes and third-party ones. I use software packages to realize my daily functions, and I found that learning through purpose is better than viewing functions one by one before.
I also read some papers and found that set parameter value by name and some parametric design are the most used in China (that is, transplanting the rhino set to Revit), and I found that many bridge construction and design companies I use it a lot.
I said my experience is mainly a suggestion. At the beginning, show them what you can do, and show some cool functions that dynamo can achieve, such as parametric design, such as design process automation, and then start from some of the most basic nodes, such as The set parameter value by name mentioned in many papers in China can set some things in batches, and provide some learning resources when they are interested, such as Dynmao Dictionary, Dynamo Premier and many videos on YouTube.

So my lot are now on week 7… and I thought I’d surprise them with a test laughs evilly :grin:

I’ve kept it REALLY basic as i’ve found most of them seem to still be struggling quite a bit.

I started with 9 people and am down to 6 :open_mouth:
I suppose Dynamo is not for everyone.

Here are my test questions - I’m giving them 1 hour.

Q1 - Create a script that adds 3 to 12 and show the answer.

Q2 - Create a script that would get all doors in Revit and change their Mark to numbers from 1 to how many doors there are.
You do not need to set up your Revit project for this - just write the code.

Q3 - Using node >> String.StartsWith << Filter the list of name provided so that all the names starting with the first letter of the alphabet are in one group and the rest are in another group.
[“Anne”, “Lex” , “Angie” , “Ade” , “Paul” , “Norman”, “andee” , “rab”]

Q4 - Create a grid in Dynamo of 3 x n points + colour them in a single colour of your choice.

Q5 - Here are two Dynamo lines. Divide them into 5 equal parts and place a circle at each point.

Q6 - Finally.
Filter this list so you only have the odd numbers and use this list to change the radius of the circles in the last question.