image for particular blog post

Controlling Revit Hatch Pattern Line Weights


Revit is an amazing CAD program. (And so is ArchiCAD, all right. I just happen to know and use Revit). Despite the fact that it has been around for quite some time and given the monstrosity of Autodesk as a company (therefore allowing it to push its products like no other), I feel that it has taken more than it should have to get Revit to the prestigious spot that it is now occupying. Of course, Building Information Modelling wasn't as important as it is now, but I think that one of the reasons that made it difficult for Revit to shine (and allowed AutoCAD to still be lurking around) was the lack of sex-appeal, and I am referring to the quality of the draftsmanship it allowed us to produce out of the box. 

For the majority of the architects, or at least, the ones that I know and have worked with, design expression is of extraordinary importance. So much so, that Illustrator/Corel have always been an inseparable part of all our submissions. The ability to control every bit of detail in one's drawings is of such importance that, again, lots of people prefer to work in a 2D package than to take the world of benefits that comes with using Revit. 

One instance where Revit has failed to deliver user control, where it is needed, is in the assignment of line weights for wall hatch patterns. I remember a project where we finally decided to overlay all of the walls with filled regions in order to achieve the desired look (it wasn't my idea, but I played along).


Cutting to the chase, let me explain about the technical side of the problem. There are several system families that use fill patterns, for either their section or projection representation. The type of those patterns comes from the material of said element. So far we were able to override the color of the pattern (and indeed one of the "viable" workarounds has been to assign a grey color (to the pattern) in an attempt to give it a lighter touch). But we weren't able to assign a different line weight to those patterns.

In theory, Revit allows you to change the default values for "all" object styles from the object style interface. For some reason, however, those hatch patterns are not among the categories that users have control over.  

Here is an old thread in which the discussion revolves around another workaround in which pen 1, which is the default number for the patterns (trial-and-error) is set to the lowest possible value. And since pen 1 is the default for a lot more objects, we were supposed to beef up all the remaining values with +1. However, one immediate problem might be that, as with the hatch patterns themselves, there probably are more categories which line weight assignment has not been exposed. Furthermore, it's one of that task that feels time-consuming in a debilitating kind of way. This is another approach, but it still doesn't feel right to me.

The good news is that nowadays we have Dynamo! While setting up a company templates the other day, I remembered how pressured I felt trying to fix the same issue on a deadline before, so I decided to give it another go. I started by theorizing that I can programmatically increment all the line weights as described in the existing workaround. While I actually managed to achieve this, I was really surprised to find that now my hatch patterns were controlled by pen #2. It took a little bit of back and forth until I finally narrowed it down to just a few Categories that controlled those pesky infills. I was able to take control over 4 family categories - walls, floors, ceilings, and roofs. Each of those, in turn, had a surface pattern and a cut pattern property that I was able to override.


You can see this short video demonstrating the functionality of the definition. There is still more investigation that I need to do because I still have no idea how to override the values for the non-system families' pattern infills.

Having said that, this definition can be useful to a lot of people out there just the way it is right now. You can download the Dynamo definition here. You would need to have Dynamo 0.90 installed, but that shouldn't be a problem as it comes pre-installed with Revit 2015. If you have any questions, please feel free to contact me.

Sources: I started by "hacking" the Python node posted here by KULKUL and I also learned a lot by going through the "Clockwork" package of Andreas Dieckmann, for which I'm thankful.

I hope you find this definition useful - have fun hacking away! :)







MINH SON commented ..

I cannot run with dynamo. When I view this website ( I see I cannot return the presious lineweight. May use fix this dynamo (part 1)?

06 October 2016 at 12:10
scorpion commented .. to use it . I run in dynamo ,but nothing changed

14 April 2016 at 11:04
Archilizer commented ..

Hey Scorpion, Maybe you can check the update of this topic in this post: You will need Dynamo 0.92 and Python installed (which should come with Dynamo anyways). Good luck!

14 April 2016 at 06:04