Randomly combination of values from two lists using Python and Dynamo

A successful day and again a small step further to a room optimization workflow.

The goal was it to combine two values out of two lists randomly. The first list includes CO2 impact values regarding wall construction materials, and the second list regarding floor materials (CO2 kg eq / m2 material). The values I have should be combined randomly, eg [LstWall x10, LstFloor x2]; [LstWall x51, LstFloo x23], hence the approach here:

1 Defining the lists as Input

ListWall = IN[0]
ListFloor = IN[1]

2. Creating first all possible pair variations

pairs = [(w,f) for w in ListWall for f in ListFloor]

3 Picking randomly pairs

choice = [random.choice(pairs) for _ in range (50)]

Actually very easy if you see it like this .. but yet took me a few days to figure it out 🙂

Keep you posted.

Cheers Jules

Genetic Algorithm tutorial

Hey nerds,

just study about genetic algorithms and how to use them for my case study. The goal is to create a digital automated workflow for optimizing apartments’ room layout. Considering three influencing measurements; 1. The room’s occupational density, indicated by individuals presence throughout the days; 2. The planetary boundary environmental budget through the absolute sustainability value; and 3. The environmental performance of construction materials through using coefficients for embodied energy and GHG emissions.

What I found here is a really good lecture about divers usages of GA, if you are interested in how to structure data before using a GA, check it out.



Mentor Announcement #10

The final mentor and workshop announcement for our very first Academy Summit… Multi-platform workflows with… Martin Taurer.

One of our unique free minds within the building industry and the BIM world comes to the BILT Academy summit 2018, you shouldn´t miss this one.

Motto: Just shut up and BIM!

Martin Taurer

Livingroomcraftz                                                                                                  Noordeinde 9B                                                                                                                        NL-2611KE Delft                                                    martin.taurer@livingroomcraftz.com


Martin Taurer is the founder of LivingroomcraftZ and a pioneer when it comes to Building Information Modelling within the Building Industry. Together with his partner Silvia Taurer he runs LRCZ since 2008 and is specialized in implementing and practicing Building Information Modelling Management in Architecture and Structural Engineering projects.

After graduating as Architect from the Graz University of Technology, 1989, he continued working as certified Architect in Germany, Brazil, Austria and the Netherlands. Early 2000 he was part in developing and managing localization and translation of the Autodesk Revit product line. As product manager, Martin was part of major Autodesk developments and could gather working experience in Boston, Sydney and Tokyo until 2007. Due to his intensive utilization of software within the AEC industry his interests, knowledge and skills of smart and efficient workflows have grown over the years. Hence, working as BIM consultancy in Tokyo at 3D Innovation was his kick-off as BIM specialist. This lead to the idea of establishing Livingroomcraftz as a BIM consultancy.


Martins personal motivation within the building trade is to communicate and collaborate efficiently in an economically feasible way. In order to do so, he started teaching at the Technical University in Delft as BIM specialist. Additionally, joining the BILT Academy Summit 2018 is a one-time opportunity to show students the latest technologies used by professions in the industry.

“BIM and IPD methodologies are beneficial rather than adversary tools for the architectural design process. My personal aim is to bring this thought process to young people – caring means sharing. Transparent communication between all stakeholders of the design process produces better quality and is simply more fun than writing stupid emails and filling out RFI forms. And the tools we have at hand make it possible. I find that exciting – possible students will think so too…“

“Proactive contribution to the educative community is a means of actively shaping the future of the industry – I am personally actively involved in the Open Source world via DynamoBIM – there we share our knowledge for free. And the same thought goes along with education. It’s sharing our knowledge to shape the future experts within the building industry.“

“And – last but not least – the best things in life are free. Ideally, in nerd-space (where I tend to retire to once in a while) it’s the pure thought that counts and not the money.”

By Martin Taurer

Martin at the BILT Academy Summit

As the name already says Martins workshop will be focusing on multi-platform approaches. The basic idea is that it´s open to everyone with experimental ideas and diverse working approaches. The usage of multiple software solutions is welcome BUT one important thing you should not forget collaboration is one of the major challenges.

To get an idea:

You will receive an architectural design of a building either in PDF and DWG, as a Revit model, as an IFC model, or even on Paper. Design issues will be included which need to be resolved, how? you can use all kinds of 3D BIM software, Visual scripting but also programming. The openBIM Server will be settled up for you to collaborate together.

One thing for sure, Martin will be the correct person to ask and work together when it comes to multi-platform solutions. check his BLOG 🙂

His Key-learning Objective

  1. Utilize BIM/IPD Tools creatively                                                                                            How to use different tools to cover unusual challenges
  1. Think outside the box                                                                                                                If there is no tool available, let’s create a new one
  1. Step onto the platform                                                                                                  Utilize current methods of design development and design communication to fully utilize the integrated process


Learn to Program

Hey guys,

some of you have no clue where to start learning to program. I don’t know if you are familiar with basics like datatypes and control structures or if you are a very beginner, but let me tell you, where and how I began to program.

I started to program in school and learned all the necessary basics. In my bachelor studies I had only one programming course (which was a Java course) but this semester I have two more advanced courses. One again one with Java and the other one with C++.

Anyway, there is no real obstacle to learn different languages, if you get the ideas behind control structures, data types, data structures and object-oriented programming. In the end, you just change some keywords, and so it doesn’t really matter with which language you start. I think Python is a good language to start because it is an object-oriented language and you can utilize your skills instantly and program some fancy IronPython scripts in Dynamo.

I can provide you some useful links, but it depends what type of learning you like the most. If you want to learn it in a really interactive way, you should sign into codeacademy and start the Python course, but be careful. Codeacademy will reward you really fast and often. Programming is the very opposite of it.

That’s why I suggest to learn it in a more traditional way. Maybe go through some free accessible books like: Dive into Python 3.

If you are a student please check your library. Most of them have eBook contracts and you can download really expensive stuff for free. The same holds for lynda. Lynda is a great online course-platform and many universities have a contract with them. For example my university made an unlimited contract, so that I have access to every course on lynda. That’s really awesome.

So the last thing I recommend you is one specific lynda course. It will introduce you basic ideas of datatypes, control structures and object oriented programming. Additionally all examples are shown with Dynamo/RevitAPI. So you will get the basics of Python and you’ll do some cool stuff with AEC software! Click here: Dynamo for Revit: Python Scripting.

Let me know which way you choose and feel free to contact me anytime. Maybe I have some additional and more helpful resources for you.


The mighty Dynamo Forum

Don’t reinvent the wheel. If you are trying to solve a problem, which can occur in multiple disciplines then it may be usefull to search through the Dynamo forum. Here is an example:

At my office we use SOFiSTiK Reinforcement add-in for Revit, because it automises many tasks. However, schedule all the rebars and fabric sheets can be quite difficult. The schedule function gathers all rebars which are assigned to one sheet. Therefore if you want to group all the rebars of level 1,.. into one schedule (because of estimation reasons), then you will probably loose the overview of all the rebar marks and compenents where they are part of.

So I searched Google for a solution to this and I found this link which is worth a mint: Dynamo forum link. This Dynamo graph will apply to all of your elements the sheet, where they are included. This. is. huge.

You can use this workflow to filter elements by GetParameterBy… afterwards. You can request it for example if all the rebars contains at least two sheets (one sheet where the whole level is shown, one for the component where they are part of).

Refurbishment projects with focus in structural engineering. Visualization of column’s load-bearing capacity

Sometimes it is all about to presenting data in an easily understandable way. Especially when the project hasn’t started yet and you have to present the advantages offered by your office. So my boss came up to me and asked me if I can accomplish a visualization task.
We have a refurbishment project (no digital data available like BIM models, plans,..) and I modeled every column with it’s belonging load-bearing capacity. The load-bearing capacity is the entry of the “comments” property of each object.


At first, I thought about to draw isolines of a capacity-surface but it takes too long to compute the surface. I asked Jostein Berger Olsen (http://jbdynamo.blogspot.de/) for his help and he came up with a much smarter idea. He edited my script in a way that circles would be drawn and the properties (like radius and color) depends on the load-bearing capacity. Let’s break down the whole task into some specific subtasks.

  1. Extract all the “comments” data out of each column
  2. As you can see, we have this weird way in Germany to express a decimal digit. Therefore I have to extract the string, erase the last 3 letters (whitespace+”MN”), change the “,” to a “.” and parse the string to a float/double type.
  3. If there is no entry, set the capacity to almost zero.
  4. Creating circles, where the middle points are the middle point of each column and the radius is the capacity of each column.
  5. Create a color range where the range is the normed range of our capacity (use of the Math.RemapRange)
  6. Overwrite the visibility of the circles with the belonging color-range-list.

So that’s it!
Here we have the result:

The python script:

dynamo python

And finally the result: