Create Wall Finishes With Dynamo

Hi All,

Is is possible to create wall finishes based on Room Names and adjustable finishes height.

Thanks in Advance,


I think this can be done.

In the lunchbox-package there is a roomelement collector node. One of the outputs is roomboundaries. You could use those to either calculate finishes or place walls on them (minimum thickness is about 2mm). Doors and windows will not be calculated tho. Some of the masters may give you a helping hand on those.



Thanks Marcel for Replying,

Any master who can help on this.

Hi Marcel,

I am able to getfinishes room boundries. How can i add wall. Can you show me an example.



Once you have extracted the boomboundaries you have a set of lines, they are called curves in Dynamo. Feed them in the node wall by curve and level and it will will create the walls. The roomcollectornode will provide you the level.


Hi Marcel,

Thanks for replying, I tried i am not getting proper walls its not joining and also i have issue with face also its taking from center.Below are the screenshots.



you can see this post

Andreas answer works pretty good.

Thanks Johnes,

I tried but Polycurve.offset getting null values.If Possible Can you share with me your dyn files.



my solution:


Thanks Viktor,

What’s the python script your using? I checked your blog but its not fully described.

Hello Jocelyn.

Viktor has provided a really nice work-flow. There seems to be a problem with the “PolyCurve.Offset” node. The node converts the PC into a curve and the only way to extract the individual curves seems to be with the “Geometry.Explode” node. We should always make sure that we offset the walls correctly. This can be done by evaluating the offset curve’s length compared to the input curve’s length.

You can skip the python code by using the “LunchBox Room Element Collector” as suggested earlier. Also the “List.Combine” node can help with the different wall types. Have a look at the below example:


The only problem I have with this approach, is doors and other openings:


Thanks Dimitar,

It works! But there is a problem with wall with finish without using dynamo finish layer comes below wrap. If i use Dynamo it comes above. Is there any solution for this. Below is the Screenshot.


Hi. For the problem with the doors and windows at the end of my definition I’m using python again to join the walls:


Thanks for sharing, Viktor. I understand the process now and why you need the excellent “Room.Boundaries” node from clockwork. However Revit seems to misbehave some times and provide more boundaries curves than available boundary walls:


One way of avoiding this, is by implementing some neat geometry checks and finding out which wall is the nearest to said boundary. This is building up on the previous work-flow:


Some slight suggestions on the python code:


And the end result:



Thanks for the clear Python code, Dimitar. Although in my case I really need the double for.

For some strange reason the join command from the API does not work when the walls are only touching (I can still join them manually in Revit). When there’s a slight overlapping the join command from the API does work.

Thanks Dimitar & Viktor,

@Dimitar i am getting error in python script. Am i missing something?



Hello Jocelyn,

It looks like an extra space snuck in front of the “except”. Could you try deleting everything before it on the line and pressing the “Tab” key twice?

Hi Dimitar,

“except” error is gone but now another error comes in {"File “<string>”, line 17, in <module>TypeError: len() of unsized object}.



Hmm. The code is expecting a list of items and I guess you’re inputting a single wall? If you’d like, you could try my version of the graph:

Wall Finishes


1 Like

Thanks Dimitar your graph works,

Question, Can the finishes be trim outside the door mullion?