Wednesday, April 8, 2015


How I love misleading titles:-) 

The humble louvre, whether fixed or as a door, is a necessary evil in our designs.  I blame the engineers.  Seriously though, they are a classic case for the consideration of 2D v 3D.  What level of detail should we model?

My standard approach is to use a material which includes horizontal lines as a fill pattern.  This allows a single door family to serve for louvres, glazed aluminium or panelled wood.  It's lightweight and flexible, and via a bump map can even do tolerable service in rendered views ... from a distance.

Recently I had to represent a variety of louvre types in a set of design proposals.  I have a family that I've used for several years that uses an array of rectangular slats in a rectangular frame, so I decided to adapt this.  I should explain that architects with "modern" sensibilities tend to prefer the purity of rectangular slats for screens that proviced a measure of privacy sun protection.

The slats in this family are a nested component with linked parameters (Width, Height & Length)  So all I had to do was to modify the cross-section of this family.  My first attempts, I must admit were quickly cobbled together and required some trial and error when adjusting the parameters.  But they did the job at the time.

On reflection I came up with a plan for a louvre-slat with user-friendly parameters.  Nothing spectacular here, but I thought it was worth sharing.

We already have width & height parameters inherited from the rectangular slat.  The first thing I did was to add a diagonal in the form of a Reference Line.  The great thing about Reference Lines is that (unlike planes) they have ENDS which can be locked in place.  Just use ALIGN as you normally would when locking a line to a reference plane, then TAB through the possible selections until the end highlights.

The thickness of the louvre is then set out using the diagonal as a centre.  Load this back into the original screen family and it works fairly well: lots of parametric control and quite convincing, even from close up.

At first I was happy to use the existing Height parameter to control the angle of the louvre, but eventually I decided that an Angle parameter would be simpler to use.  This requires a bit of trigonometry.
50 years ago I learned the simple mnemonic "Tommy on a ship of his caught a Herring"  Evidence to the curious workings of the human mind that this has stayed with me ever since.  There have been times when many years past without me ever thinking of it, but when the need arises I can recall it instantly. 

I want "Height" to be calculated using "Width" and "Angle".  The relevant formula is Tangent = Opposite/Adjacent.  A bit of manipulation leads me to Height = Tan(A) * Width
I was quite proud of this, but of course you can't set the angle to zero.  Wouldn't it be nice to have a slat that could be either square or angled ?  So I developed a second version.  This time I didn't need the Reference Line and the calculations are slightly more complex (but still within the confines of the algebra I learnt as a 14 year old)

So now I have a slat component with 4 "user input" parameters and 2 calculated values that I tuck away under "Other".  In practice of course the user input values are driven by parameters in the screen family that the slat lives inside.

Hook everything up and we have a pretty flexible set-up.  It can look like a series of shelves, or louvred glazing, or an AC vent.

I've organised the parameters in groups to make it as user-friendly as possible.  There's only one thing missing really and thats a "Spacing" parameter to be used in the formula that calculates the number of slats.

I got an error with this that's been puzzling me for some time.  The message threw me off by talking about importing the correct table.

Eventually I realised that I had 3 types in the family and at least 1 of them had a zero value for "Spacing".  That would generate an infinite number of slats, hence the error message.  If only the message mentioned a zero value instead of asking me to change the formula or import a non-existent table.  Anyway, it won't catch me out next time.

So that's it.  Finishing with another rendered view of some of the families I made and pointing you to a link where you can download the basic screen family.  Hope you find it useful.

Download The Family



  1. Interesting approach to use orthogonal geometry/constraints and then calculate the angle from that. I used a different approach for the angle of louvres - initially my louvres were horizontal rectangular extrusions, which had a rotation angle (no chamfered corners like your louvres). But they kept breaking when rotated. Eventually I replaced the extrusion with a horizontal sweep that used a profile - so easy to apply a rotation parameter to the profile; and it is very robust.
    BTW, I'm not sure the Americans will get your pun in the title as they would be revisiting louvers.

    1. Thanks Tim. Many ways to skin a cat of course, to offer another gratuitous pun :-) and your approach has much to recommend it. The method I blundered my way into maintains the "front-to-back" size as you vary the angle, which might be useful sometimes. Would be interesting to do a more thorough exploration of different types of louvre profile and ways of making them parametric. Something for the future perhaps.

      I will refrain from commenting on the subject of Americans and puns. Don't want to upset anyone :-) Apparently the derivation of the word is from Old French and was spelt "Lover" meaning skylight or ventilation opening in the roof. Like most words, both spelling and meaning have drifted around over the centuries. See you in Washington perhaps ?

  2. Nice Job!
    I've been trying unsuccessfully to create a louvers Family, but i've been having some problems with the louvers array. Whenever the overall frame width is altered, the louvers alingment is lost, even if constrained. Did you face this issue? Alternatively, I create louvers with curtain walls (empty panel) and wooden mullions with adjustable rotation. Works pretty fine tough.
    Greetings from Brazil!


I've been getting a lot of spam so had to tighten up comments permissions. Sorry for any inconvenience. I do like to hear from real people