Creating a Complex Historically Accurate Dynamic Window Assembly

So, I’ve been modeling super detailed to-scale models of the 100+ year old housing stock in my neighborhood as part of a resident-driven community masterplanning effort. You can see some of the models here: North End Housing - A 3D model collection by TysonGersh - Sketchfab

I’ve finally come to the conclusion that I need to build a dynamic window. I’ve been putting this off, but I’ve probably wasted 30+ hours of my life hand modeling each window in the previous models that I’ve made.

So, with that in mind, I spent a few hours making an exact replica of a typical window assembly - basically all the stuff that goes into the rough opening of the exterior all the way to the interior faces that we interact with inside of the house. I used the following architectural detail guides paired with some actual windows that I took out of a house to make sure everything was correct:


I figured that this model in and of itself was a resource, so I made a rough interactive version of it (still a lot of work to do) here:

Here’s a link to the SketchUp file itself:

I’ve watched a few windows on creating dynamic components and am confident that this is all very doable. Here’s the one I’ve been relying on the most: 3D Basecamp 2014: Dynamic Components, Greatest Hits, Vol. 1, Eric Schimelpfenig - YouTube

With all of that in mind, I’m wondering if anyone has any suggestions on the best way to cut my corners given that the sashes/sides of my window elements have details of their own that need to be taken into consideration.

In the video the speaker shows an example picture frame that’s been divided into 8 (maybe 16?) separate components, which allow for stretching of the sides without messing up the dimensions of the corners.
24%20PM

In my window, the outer sides of the sashes have a channel in them for a rope that attaches to a counter weight. Is the best strategy here to just include that in my corner (and have a really large corner)?

I’m worried about attempting one strategy and spending the next few hours putting it together to find out that I should have divided my overall model of a bit differently.

The goal is to be able to take this window assembly (minus the bricks) and place it into any of the rough openings in this model and have the window magically stretch itself to fit in a way that mirrors reality without changing any of the stable dimensions:
https://skfb.ly/6APIY

Should I try and do this all together, or make separate models for the channels that the sashes fit into on the sides?

Here’s the link to the SketchUp file of the structure

Sorry if any of the way I’m asking this is unclear - the SketchUp forum site is sort of glitchy on my browser as I’m typing this.

6 Likes

Okay, well I gave it a shot using just the window sashes and glass and here’s what happened:

Dynamic Window Test.skp (2.2 MB)

Note that My corners are longer/taller at the top of each sash because I had to incoporate the cord groove channel on the side. Since those exist at fixed dimensions, I figured they would be best located within a corner.

Any one have any idea what I did wrong?

I made sure to set each of the components axis to the same point in the model. They’re all set to where the axis is shown in the video above.

I adjusted all of the the sizes the way I’m pretty sure I’m supposed to. What went wrong?

I’m going through this tutorial and realizing it’s a matter of setting the position specs, but mine isn’t behaving like the tutorial.

This is sort of tedious to explain, but basically I’m at the step shown in the image below where it says to enter =pole!Lenz, which basically moves the ball on top of the pole.

When I try to do that in my model with the piece at the very bottom in the lower left corner labeled “bottom of left sash of lower window unit” acting as the Flag Pole and the piece labeled “Middle of Left Sash of Lower Window Unit” it basically moves the piece 3.25" too high.

Is this because I matched the axis’ for all the components to the same point?

Here are a few basic dynamic components I created. This should be enough to get you started.

Window.skp (773.0 KB)
Door1.skp (1.0 MB)
Overhead Door1.skp (785.1 KB)

In fact once I even created an entire building as a customizable component, that gives the siding and roofing square feet. It has a customizable size, roof pitch, and even gutter! I think this one would be border line on being complex :wink:

Building.skp (182.0 KB)

1 Like

I can’t open your file because I do not have v2018 but can see it is just a matter of organization and formulas
that takes a while to learn. Look for a window at 3d warehouse to see how other people did it

1 Like

Taking a step or two back, it is worth asking what you are trying to achieve. If you are modelling buildings in your neighbourhood, what will the resulting model be used for? The point here is the level of detail required. The more you have, the harder it is to model and the bigger your file becomes. Quite quickly, the whole thing can become unmanageable.

If you have windows of a standard design and you just want to alter their width and height, much the easiest way to do it is to make a component and then simply stretch in the relevant direction.

You can do what you want with DCs, but there is a lot of work in making them. And when you have, you will still need to input relevant dimensions and options to get what you want.

If you feel you might enjoy the process of learning to make DCs and want to have a go, there are several things to bear in mind. One is that for anything that has a moulding (like a picture frame), which in the real world would comprise four parts, would need eight parts in a DC as each of the corners needs to be made separate. Another thing to think of is to limit nesting to two levels (parent and child). If Outliner shows you have more than that, you are likely to get unpredictable results.

In short, there is a reason why there are so few DCs in existence and why the function has not been updated since it was introduced to great fanfare many years ago.

Happy drafting!

1 Like

On a separate note, where did you get that detail of a sash window at the beginning of the OP? By British standards, it is very weird. There is no back to the weight box and no divider between the weights. The weights themselves look suspiciously small. And the cill is made of an inclined board, very prone to warping. I wouldn’t accept a design like that from any of my joiners! Are those in your neighbourhood really like that?

I said the same thing when I saw it lol. The first diagram is NOT to scale. Why they made it that way, I have no idea. The weights are on separate sides of the window in their own pocket between the rough opening in the framing and the window jamb.

The confusion of these images was part of my motivation to build a better reference model!

I think I downloaded this DC of a sash window from the 3DW in case it is of any use.

DHS Window.skp (801.7 KB)

Yeah, I have a file with a few existing models that I’m trying to use as references as I problem solve my way through this.

That said, I really do think there is value in having a totally accurate scalable dynamic historic double hung wooden window that exactly reflects the architecture of the period.

For me because part of what I’m trying to do is create model replicas of what the homes in my neighborhood looked like when they were first built in addition to models that reflect the present day. I think there’s value in that juxtaposition across a broad range of stakeholders.

For the general public as well. I’m sure I’m not the only one modeling 100+ year old houses. I was talking with an architect just yesterday about how disproportional the cost of windows is in rehabbing a home compared to virtually any other part. He argued that it’s because windows make or break a house and have a correspondingly disproportionate impact on the aesthetic of the house. I think he hit the nail on the head.

If I can get this thing to work right, I will of course add it to the SketchUp Warehouse as a publicly available model. I think that would be such a cool contribution to the SketchUp community.

You and me both. Here in the UK, we have countless thousands of houses that are anything up to 500 years old. Even double hung sash windows can be 200 years old or more as they were introduced by the Georgians.

As someone who regularly deals with such houses, I have to model them all the time. Admittedly, I wouldn’t have to model them in huge detail as I only need to show detail for the changes and even then, only sufficient for construction purposes. Sounds like yours is a labour of love!

I figured the jamb assembly was a bit more simple to work with, so I gave it a shot and I’m pretty sure I got it working properly!


Dynamic Window Jamb.skp (1.8 MB)

Here’s the file in case anyone was curious how I did the divisions. One thing I was really throwing me off was having two separate corner components (made when I divided each of the 4 sides of the model into 3). Combining those really simplified things.

Now I’m going to see if I can get the window part itself working and then figure out how to combine the window with the jamb!

1 Like

Check this one as well:

It is a bit different, the parts are set up like you would in the shop to build it.
Hidden lines in combination with a style that has profiles unchecked will give a clean result

1 Like

I just went through and hid all the lines that wouldn’t be visible int he real world and uploaded it to the 3D warehouse. Let’s see if I can get it to load like yours

1 Like

Update: I’ve managed to create a dynamic window that works… for the most part. If I scale too much (like, beyond the dimensions of a normal window opening) in any direction the windows become noticeably different heights. I’ve uploaded the most recent version into the SketchUp Warehouse (I think it should be set to download for the public). Anyone available to take a glance and tell me what I did wrong?

I feel like my problem is that I need to anchor the top of the bottom window and the bottom of the top window to some center of the jamb (or just a little bit off as is the case in the real world), which would require formula that centered around a percentage, as opposed to a hard dimension, of the the jamb.

I see there are tons of formulas available - any suggestions on which one?

You can see that as I start adding windows into the structure mentioned in the OP, the smaller the window opening, the larger the lower window seems to become as compared to the upper window:

1 Like

This is not true, but rather your inability to create a “clean” model without axis and scaling issues. In fact extra nesting is sometimes required to separate parts that may have rotation issues

1 Like

I stand corrected. However, is it fair to say that it can complicate things? I know that whenever I have tried more than two level nesting, weird things happened that weren’t easily explicable. It seemed a bit like a game of 3 dimensional chess.

By “window” I presume you mean sash. There is normally a fixed relationship between upper and lower sash based on pane size as you generally want the glass to be the same size top and bottom. That gives you a basis for calculating the sash height in each case.

Yes, I mean sash. How should I calculate the sash height to defer to a fixed relationship between the upper and lower sash? For example, in the top left corner of the lower sash I have it referring to the bottom left corner of the upper sash - what’s a better way to do this? 47%20PM

I think part of my issue is stemming from the malleable LenZ middle components of the sides of the sashes, which are different heights due to the different sized counter weight cord grooves (which are different in real life - the top of is roughly 8 inches tall and the bottom one is just over 11 inches tall). I wanted to preserve the groove dimensions, so I built them into the corners, which have fixed dimensions.

What’s the workaround?

Nevermind, I figured it out!!!

Basically I just had to me the position of the top corner of the lower window sash refer to a percentage (noted by the horizontal line with two different materials on either side in the jamb - in this case 48.49% aka .4849, which is the point that the bottom of the top sash and top of the bottom sash meet). of the height of the side jamb.

And then just had to tinker with the other size/position references of the subcomponents to make sure they were accommodating the changes. I legit think this thing is working. Just updated on the 3D warehouse as well if anyone wants to test it out for themselves.

I think the best way to approach is to have ‘Global Variables’ ie. WindowHeight and WindowWidth.
These are set in the top-levelcomponent. Every nested component can acces these ‘Globals’ by having an attribute that has the same name and a formula that refers to a higher level:
WindowHeight=PARENT!WindowHeight

In General, all the components can be calculated from these ‘Globals’
Perhaps you can add some more Globals like depth etc. But these two are absolutely necesary.

1 Like