Thursday, July 12, 2012

Rotating Curtain Panel

I apologize for the lack of posts, I guess the days just got away from me.

Anyways this post is going to be a tutorial on how to create a rotating curtain panel system.  Now, there may be more efficient ways of doing this, this is just the method that I came up with and it is really easy to create.

Step 1: Create the panel

Start by creating a new "generic model face based" family and creating a simple square rig to control the Length and Width of the panel

Curtain Panel Rig: Top

Curtain Panel Rig: Front

Because the panel will be rotating it is important to have seperate materials on each side in order to easily differenciate the two sides. To accomplish use to extrusions instead of one and assign a different material to each extrusion.  For my panel I went a little further and used a sweep around the exterior of the panel to create a basic trim.

3D Section of Curtain Panel

Once your panel is finished be sure to flex the parameters to make sure it changes appropriately and save it somewhere you can find it later.

Step 2: Creating a pattern based system

Start by creating a new "curtain wall pattern based" family.  Next we want to bisect two oppoisite sides of the rig with a point, so place a new point at the midpoint of each line and assign an equidistant dimension to each point. (You may want to make the reference planes always visible)

Reference Point Properties: Show Reference Plane

Curtain System Rig

Next host an additional point on top of the new points and move them upwards by assigning an offset parameter.  Next connect all the points with a reference line (turn 3D snapping on) and host a new point on the midpoint of the connecting line of the vertical points and apply an equidistant parameter.

Next set your work plane to the newest created point and create two lines, one horizontal, and one at a slight angle (turn 3D snapping off) and assign an angle parameter to the two lines.

Now, Set your work plane to the angles line and load in your previous curtain panel model be sure to select the "Place on Work Plane" button and place the loaded component on the center of the point

Set your work plane to this line

Place on Work Plane Button

Panel hosted on the point

Now select your panel and edit its properties click the little square next to each of the parameters to create a new parameter in the system family (this links the parameters so you can adjust the parameters of the panel)

Curtain Panel parameters

Now is the tricky part, we want to be able to control the rotation each panel individually, while also being able to control the rotation of the entire system at once to animate the system, so we need to get a little creative with parameters.

Start by setting your the angle parameter you created earlier to an instance parameter (I named this parameter "A").  Next create 2 new angle parameters and name them "Rotate" and "Input"(Instance) The "Rotate" parameter will be used to rotate the entire system, and the "Input" parameter will rotate the panels individually.  Now create another new parameter this time choose integer and name it "Multiplier".  This parameter will make it easy to adjust the steps of the rotation.

Now under Formula for the "A" parameter put "(Input * Multiplier) + Rotate)

System Parameters

Now that the parameters are set its time to finish the model for a little extra detail I extruded a sweep to create a frame, however this is'nt really necessary

Step 3: Test your system

Start by creating a new conceptual mass, create a box and divide the surface of one side.  Edit the grid layout to "Fixed Distance", and specify the size of your panels (I used 6').  Now load in your system and edit the properties and adjust the size of your panel to match the size of the grid.  You should get something like this:

Note: My Input parameter was set to default at 0º

Now this is where it gets tedious you must individually select each panel and adjust the input to create the pattern you want.  To select a panel hover over it and press the "Tab" key. (You can hold control to select multiple panels to speed up the process).  I would advise using 1º intervals for the input values of the panels (these can be adjusted by changing the multiplier parameter)

Adjusting a single panel

Adjusting multiple panels

The pattern I used for this example is having each column increase its "Input" value by 1º to create a wave form.  Now as you can see the 1º interval isnt very exciting, but if you increase the multiplier it increases the interval.

Pattern at 1º Intervals

Pattern at 5º Intervals

Pattern at 20º Intervals

Pattern at 10º Intervals

Now to animate just adjust the "Rotate" parameter to rotate all the panels at once
To create an animated GIF set your pattern then export an image of the system, change the "Rotate" parameter by 10º and export the image again, do this 36 times to create a full loop (tedious I know) and create the GIF using these images.

Example 1
Example 2

Example 3

I Apologize if this tutorial was hard to follow, the model was a lot easier to make than it was to write about, sometimes its hard putting concepts into words.  Anyways, if you have any questions/comments feel free to leave them below, or shoot me an email and I can try to clarify, if many people have issues trying to understand I may just make a video, I think that will make it much easier to understand,  I would also like to post my file as an example, but I am not sure of the easiest way to do that, so I will hold off for now.


  1. Very interesting, thanks for sharing your knowledge with us, could you please as busy man make a video instead? Thanks

  2. Hi There,

    Nice work! I love the GIFs. This could probably have been done more easily with a standard curtain wall. That would make selection of rows & columns of panels much easier. Linking to excel takes a little time to set up, but once done it will allow you explore different animation effects much more rapidly.

    I guess you could also animate other parameters besides rotation: size of hole, depth of projection, width of a vertical stripe ... I wonder if you could get the animation to work in real time within Revit ? Perhaps using dynamo and/or slider bars ?