Revit Masterclass: Family Creation #3 (Windows)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] g'day there you're watching the aussie bim guru today i've got a tutorial in revit it's another one of my family master classes now this one's a really long one someone asked me how i build windows now these are pretty complicated families they have a lot of components to think about seals panels reveals architraves i decided to go all out and just cover a full start to finish window so if anyone's got an error and they want to learn how to build a really smart family i've got a video for you might not be a video for you if you're looking for a really quick video so just warning you now if you haven't looked at the time down the bottom which is about an hour um you know it might not be the video for you but i hope that this helps people who are really looking to advance their understanding of nested families in revit and also just how to put together a really functional user-friendly family so i'll teach you a lot about how to protect parameters from breaking in this case as well um you'll even see a few scenarios where i have to go and think about things a bit more deeply than i expected um in order to stop the seals in our families in this case from just shrinking into nothing and then going negative as well anyway um look forward to this one i'm using revit 2020 in this case um but this family could be built in pretty much any build of revit where the family editor works this way um so let's jump in so today's goal is going to look a little bit like this we're going to build a fairly intelligent window family that has swappable panels and also an internal trim and an external sill which can be controlled by the properties of the wall depth and also turned on and off at will um so in this case i do actually manage my windows in a fairly special way i always recommend breaking down your windows into types based on their configuration of panels so in this case for example if you have a window that's three by one make a three by one window don't try to put all your optional panel configurations into one big giant super family because this thing will just get so complicated and so heavy um whereas if you can just dictate the frame as the standardized component of the window it makes things so much easier but today we'll just look at doing a two by two window so the frame will be native and the panels will be nested all right so let's just get let's get cracking so i'm going to make a new family and i'm going to make it a metric window very important that you pick a window because you're going to want this thing to be hostable to a wall which most windows are ok so we just start with essentially a width and a height with a seal height so it's important to understand in windows the relationship between the sill in this case the seal is typically a special reference plane where the window will understand its relationship to its sill height in the project and also its head height as well so you're not really going to want to muck around with these references now i believe you can delete the seal height which isn't great i would just recommend leaving it in there and treating it as the true seal of the window by default you'll have an opening in the window as well which is cutting the wall naturally so to begin with uh maybe what we can do is just set up the parameters for our framing zone and then we'll have a look at the sill after that so this is going to be the outside of our window opening now some companies might wish to also add tolerance around the frame when they're getting really detailed um i'm just going to model the frame directly off of the the window itself so in this case i'm just going to make my frame 50 mil wide and i'm just copying and pasting one reference plane on either side now we are going to be doing a two by two window here so i am also going to go and copy uh i guess a central frame in this case off of the center now it's up to you how you want to set out this center frame maybe you might have an offset frame so you may not want to center it upon the middle of the window family because it's going to be easier to move this thing later um for now um yeah i might actually do an offset frame just to show you how it's done i think that's probably more valuable okay so uh we also had a transom at some point as well so i'm also just going to create two references here for that transom and what you're going to want to do is just introduce uh references um sorry dimensions to those reference planes now it's up to you where you dimension these references um often in my in plan i'll set out all my plan dimensions and in elevation i'll set out all my elevation dimensions what i'm going to do is just create three of these and i'm just going to call this parameter frame width now you can use shared parameters if you want i'm just going to make this a type based family parameter most of my windows i use heaps of shared parameters and i might change my view scale because it's sort of hard to see what's going on maybe one to ten that's about right um in floor plan i'm also just going to go and constrain those as well and remember it's these two planes here in this case again i'll go to one to ten just so it's a bit cleaner and i'm just associating that on that frame with so at this point we have one parameter control for the frame width all around the window um we also have some set out parameters as well so in this case i'm just going to call this probably a panel width one just to control where the first panel is um so i'm going to call this panel width one and panel width 2 is essentially implied for now i'm going to make it type based um so that this uh this set out is going to be dictated in every family on a type basis likewise in this case we'll have panel height one um so how you set up your transom is really up to you um in this case i'm just going to do it based on the panel size below it and we can always build a formula for transom height because we are going to need these panel heights for the nested panels anyway the next thing we want to do is actually model our frame as well so in this case i'm going to just make an extrusion in elevation the reason i'm doing this is just so i guess i can constrain everything in elevation that's pretty much the view i'll need to do this in and i'm just using the align tool or al in this case just to align this now this is obviously the most boring part of building any family constraining all these elements to reference planes does take a while it would be nice if there was a faster way to do this where it just has a better intuition as to how we want to constrain things um you can sort of draw lines over reference planes and it will give you optional snaps but i find that often it gets it wrong and it actually tries to constrain you to things that aren't references for example the opening cut which you really don't want to constrain yourself to in this case usually a rule for me that i tend to stick to is to try to always constrain to reference planes wherever possible but at this point we have frame now you are going to want to obviously inset the frame a little bit as well chances are you'll probably have an inset sill um that doesn't necessarily just hang off the edge of the building what i might do is just make this a 240 millimeter wall just so it better reflects the standard cavity construction so you can actually modify the properties of the hose wall inside a family in this case we're dealing with the exterior side of the wall so i am going to host this to the exterior side and i'm going to model one reference plane which is going to be my sill setback i'm going to make it maybe just a weak reference i'm going to make sure i'm dimensioning to the exterior plane and i'll just call this a sill setback so in this case um we might set up a a relationship for this based on whether it has a seal or not because it's probably going to be set out differently depending on the seal condition we're going to build a brixle in this case um and i'll just show you i guess how you can establish a relationship between uh this this sill um when it's available so i'm going to make it instance based for now and i'll just make this for now something like a 110. usually the still sits roughly at the back of the the brick line i'm usually overlapping a little bit um so it covers the cavity uh in my experience um but then also after that we're going to want to frame depth now for now i'm just going to make my frame depth 50. it really depends project to project um depending which window manufacturer you go with it might be 100 millimeters it might be something else it just depends um so in this case i'm just going to make this my frame depth and now i can just um essentially constrain in plan so now we have a parametric window frame now i could go and just model panes of glass but what i prefer to do in my window families is actually use nested panels which allow me to put a lot of controls into those elements so we are going to go and build one of those nested panels so for now i'm just going to save this family and i'll just call this window family and we're going to build a nested component so i'm going to start this as a non-hosted component a generic model this is just so in this case it's not actually hosted to a a window a wall sorry um but then i am going to make its category uh windows so it does match the category compliance of of the window category i'm going to go to my front view and it's up to you where you can strain this element i'm just going to constrain it from its bottom bottom corner so i'm going to make this the top plane make this the right plan make this the left plane and i do i do like to rename these references i'm also going to take the bottom plane and just give that a name so we can actually dimension to it in in the model if we need to and also constrain so this is going to be my height and my width so i am going to associate in this case height and width and you can see that they immediately associate their size so i'm going to make this instance based and instance based now you can build different types of panels in different families for example you might have one panel that just handles all your swinging panels so that's what i'll do in this case and then you might have a panel where there's no subframe because usually a swinging panel does need a subframe so so that when it opens it still has a frame around it i'm going to make this family work plane based but i'm not going to make it shared so it's not going to make it into the project when i load it into the window family itself it just belongs to the window family and i'll show you a system that i really like to use for this but for now i'm just going to say that my subframe is another 50 and again we can we can nest this parameter at the next level so if you do want to make it a parametric subframe size that's fine don't worry we will do that and in this case i'm just going to do essentially the same thing i did with my window i'm just going to associate some parameters and i'll just call this subframe width and i'll go to floor plan and do the same thing now i should probably put my width in this view so what i might do is just go back to front view delete the width parameter and reassociate it in floor plan it's important to think about where we're going to set out our frame from as well so in this case this is going to be the front of our window window panel so the justification is really important so we are actually going to be setting back a frame and also a pane of glass so we are going to think about that set out for now i'm just going to say this is going to be like a subframe depth so again i'm going to associate a subframe depth parameter and we may also just wish to set out a location for our glass line now i'm going to center it on the frame for now it's up to you obviously how this this setup is dictated um a lot of manufacturers do things differently so do make sure you check out which way your your window manufacturer works um but i also want to set a glass thickness as well so i'm just going to mirror this across and then we can essentially set this out as another eq relationship so remember the center plane is centered on the frame now the glass is centered on the frame but we can also give it a parametric thickness now it's up to you whether you want to make these parameters type or instance based um so far i've pretty much been making most of them uh type based um so that i can just associate the parameter at the family level the only one i'm making different is the thing that i would want to vary from panel to panel which is the actual size of the panel itself this is more custom um so in this case i think we're pretty much good for the the actual elements now we just need to go and actually do the same the same boring step of modeling our um elements to constrain so we're going to make a frame like we did before remember this is our subframe and we're going to use this panel multiple times it's going to be a really handy little element okay so that's our subframe and while we're here we're also just going to associate a frame sub-category to it and also a frame material on a type basis i'll go back to my front view and i'm just going to model a pane of glass as well now you could technically model this in a floor plan it doesn't really matter because it only has one one loop um so it's up to you but i usually prefer to model things in the most likely dimension you may want to change them in later on in this case that is definitely in the front elevation view so now we have our glass so we'll keep the visibility settings as is um but we're going to associate a glass parameter or a glazing parameter and we'll set this to glass okay so at this point we have um a 3d representation for the element but the panel itself doesn't actually show a swing direction in elevation so now we need to start thinking about the various types of swings that we can accommodate in a family like this so we might have a swing outwards which we would usually call a casement window we might have a casement in either direction it could swing left or swing right we may also have a awning window which swings outwards in the in the upward direction or a hopper window which swings the other way swings outwards in the bottom direction hopper windows are very rare it's very rare you'd want to use them because the water obviously drains into the building if you use them typically awning and casement are very very common so in this case i am actually going to introduce an object style for elevation swings so i can actually give the swings a particular style line so i'm going to just call this elevation swing and maybe we want these to be hidden lines or solid lines it's up to you i'm going to make them dashed lines in this case now before i go and place my elevation swing lines i'm going to give them sort of soft points to snap to so i'm going to give a center point an elevation i'm not going to make it a reference though and i'm also going to do one in plan as well and these just give a soft point for these swing lines to sit to basically lock themselves to um which will help guide them when the window parametrically adjusts i find this is usually quite a quite a useful thing to do now we could add plan representation lines as well say you've got a awning window in that case you would want to see the outward swing if you had a casement window you might want to see the upward swing i'm just going to do elevation for now now it's up to you which dimension you put your um your swing lines in maybe you want them to be 3d maybe you want them to be 2d in my case i will just make them 2d so i'm going to go to annotation lines symbolic line so first of all we're just going to switch our style to elevation swing and i'm going to model one set of lines to the snap point and then i'm going to model another set of lines to the other snap point and finally my warning we then need to associate object styles to these so i'm going gonna i'm not object styles visibility parameters so first i'm gonna pick my awning swing and i'm just gonna say uh awning awning swing i'm gonna do my casement left finally i'm going to do my casement right now some countries the swing lines go in different directions so i know that my right and my left is probably different depending which region of the world you are working in i know in europe for example the swings are reversed we actually make this our hinge point and our catch point or a latch point which isn't how a lot of countries manage it anyway at this point we have a fairly intelligent component but we are going to want to just give it a little bit more information now and whilst i'm here what i'm also going to do is i'm going to build this family to also be a fixed panel as well so i'm going to in this case associate a parameter or a visibility parameter to these and say has subframe and i'm just going to make that a instance based on do i get instant space no i make it type post sorry and i'm also going to want to model a full pane of glass for when i have a fixed panel instead so this is when i don't have a frame so we are going to establish a relationship between the framed and non-framed elements using a formula i'll just also make sure i've got the glass on this uh make sure there's a visibility parameter for it um which is a fixed panel and also the subcategory of glass at that point i'm just constraining there we go and now i can set up a formula between these two parameters so i'm going to say in this case it doesn't have a subframe when it's a fixed panel i'm going to say not bracket fixed panel and now these two these two fields essentially are connected i'm going to turn off my three swings as well and firstly we'll just make our fixed panel i'll just make this a slightly more friendly number um and i might also just pick a a suitable material while i'm here so i'll just do aluminium for now for the frame from the autodesk material library i'll just pick the first aluminium i see and also a glass material now it's up to you whether you want to put these materials at this level you don't have to also here i'm probably also just going to delete my materials i'm not using and i'm going to do this very slowly because i found that rabbit crashes if you do that too fast i've learned that the hard way many times okay so now i'm just going to rename this type like a new type and i'm just going to call this fixed panel so if we want to just check what this fix panel looks like we can switch to preview visibility on mode and we can see it's just a pane of glass now remember that plane of glass is still going to be set out based on the same principle as your subframed panel overall so at this point i'm just going to save this family and i'm just going to call this a nested panel and i'm just going to make the rest of the types so i'm going to call this firstly a casement left and i'm going to turn on casement left turn off fixed panel and then i'm also going to make casement right and i'm just going to turn on the opposite swing and finally uh awning and i'll just turn on the awning swing so now we have four sub-panel types located within this same family um you could build them in separate families but if you do i recommend you use shared parameters so that at the next stage the family is going to understand which parameters are which as we swap between them anyway i'm just going to load this down into my window family go to 3d and we're going to be placing four panels justified to the exterior side so i'm going to just firstly place down one component to work plane and i'm just going to place a fixed panel for now now we're going to want this i think in this case i'll just check the origin plane which side that's growing from so we're growing from this side so we want to be the other way around in this case i believe um so we're going to associate firstly panel width 1 and also panel height one before i do anything else i'm going to go into the type parameters of this nested family and because it's not a shared family we can essentially associate type parameters to type parameters or instance parameters to type parameters at this level firstly i'm just going to create another associated material parameter for both of these and this will create a parameter we can control at the overall family level i can also create parameters for things like the glazing thickness if i want to control this at the at the main family level and in this case um for now i'll say the subframe depth is equal to the frame depth we'll just match those and you can also add a sub frame width if you wish so maybe we do want to do that maybe we'll just say subframe width and we'll associate that there it's up to you whether you want to make the frame say like half the frame depth or something like that which is probably more of a common setup for a window for now i'm just going to keep it simple i believe everything else is probably fine we probably don't want to dictate these parameters they're really set on a type basis so depending which type we use it will change the parameters but the rest are going to be locked in by the overall family because they're common parameters to to the family itself so i'm going to copy this across and i'm going to establish a new parameter in this case panel width 2. i'm going to copy these two panels back one level and i'm going to go into exterior view and set their work plan to this line i'm also going to associate a new parameter for them which is panel height two because we want those to be controlled by whatever the excess height is i can also take these two panels and also just associate them to this level because they're work plane based it's really easy to do that finally i'm just going to constrain these elements so currently the sizes won't be correct for panel 2 or height 2. but we're going to go and fix that using some formulas now currently all these panels are fixed remember um so it can be a little bit hard to set these out but remember there is a front line um in this case i believe i've actually probably put these the wrong way around um which is interesting so i probably do need to just go and add a flip control to them to fix that so yeah it is important to understand which way your windows are facing so actually my origin is on the left um the left and the front so i haven't quite got this right so i'm going to go and fix that by introducing two flip controls one here one here that can flip it either way um and then we should be able to really easily see what we need to do now okay so in that case i think that should yeah there we go so now the origin of the family is here um i have technically mirrored the components um which i guess is you know not ideal but in this case it should work anyway so it does mean that i guess my casement swings will be a little bit incorrect so i might actually be better off just fixing that by de-mirroring my families so i think that's going to be a little bit confusing so i'm going to un-mirror in this case okay so that's correct now so now i want to unmirror these so we want the origin to be in the same relative position as it was before so now we're going to constrain on the left instead okay so maybe you might wish to build your panels the other way um it's up to you whatever you think is most simple but at this point we've constrained them to at least one side and the bottom is naturally constrained by the work plane so now we just need to add the formulas in order to determine the sizes of the remaining panels so we're going to use formulas for this so we're going to think about this so i'm just going to lay it out so i can see my panel on the side so in this case width two is going to be equal to the overall width minus three frames and panel width one now we could um in this case maybe just set panel width one to always be half of the window in its set out so we could do something a little bit more complicated if we wanted to we could introduce nested formulas to give the user the option to center this panel what i'm going to do for now is probably make it that panel width one is always based on a relationship so in this case we're going to say that it's equal to width divided by 2 minus a frame divided by by one and a half and then that's the access panel width so that it's a centered panel currently in the way it's set up so i'll say that in this case um it's width divided by two and in this case we're going to have to take away one and a half frames so we're going to say um and we can think about how to do this with maybe a bit more um a bit more i'm just trying to do it with more algebra there's probably a smarter way to do this if i say frame width by 3 on 2 in this case i can probably actually just change this and i can say width minus frame with frame width by three and then nest that and divide the overall by two um in this case that will leave me with the overall panel width to leave so i think in this case there we go that centers the panel but you could nest an additional layer of formulas um to let the user nominate when they want to have an offset panel um which would maybe have an if condition uh to control another layer of control of set out but give the user the quick option of saying sometimes they just want it to be um you know halfway and we could just use the same formula for panel width 2 or we could set up a formula in anticipation for something to be a bit more intelligent so what i'm going to say instead is this is going to be width divided by with width um take frame width by by three so i need to nest that i think naturally it figures out the order of operations but just to be safe i am going to force that to happen first um and in this case then we will just um say that minus panel panel with one just in case we make a more intelligent formula for panel with one in future this means the panel width 2 is just always going to be the excess in that case so if we apply that we'll see that now this sizes itself correctly um panel height 1 is really sort of like a relationship to a transom height so you may wish to instead make it from the base of the window to the center of the transom for now i'm just going to say panel height 1 is dictated by the user um so i'm going to just say in this case that this is going to be i'll just copy this formula to keep things simple but i'll say in this case height minus frame width by three um and in this case and then minus panel type one there we go but you could use the same sort of logic to do a center transom or even to do a downside transom but often transoms are a more customized height so they might be lower it might be something more like this okay so at that point um we have some automated parameters so what i'm going to do is just put these under the other group i really like to use the other group just to put things out of the way when they're not going to be controlled by the user now the great thing about using nested panels is we've introduced a system that's quite smart here so what i'm going to do now is just i'm going to constrain these elements and i'm just going to do a multiple alignment i'm just going to align the front of each panel but because these are all based on the same family and it's quite an intelligent family i could take say these two panels and i could actually make them uh awning and now we have a subframe which is great and i also have my swings now at the moment it looks like i've got the wrong swing on for that one yes i need to have oh no one is that's correct um but i could also say you know casement left casement right whichever ones i want um in this case so there's a lot of um you know really cool things we can do with this but one thing i really like to do with these is um maybe i can add a panel type to them now usually i number these i say this is one one one two uh one two two two so i usually add a panel type and i'll just say panel type and in this case it's um column two column one row two so i say panel type one two and i put these under graphics usually i like to put them somewhere consistent likewise i can add another parameter for these ones and now on a type basis i can actually modify which panels the window is using so if i want to put all my awning encasement variations in the 2x2 window in one family i totally can sometimes it can be easier to organize your windows by just putting these into separate families depending on their swing operation type because there can be a lot of sizes that manufacturers make for these windows but usually this is how i like to manage it at the most simple level i guess i'll put this under graphics again so now each panel will be able to be customized by the user oops in that case 2-1 and there you can see that we have control of these these windows in each case so i can see i've got my fixed awning fixed awning so in this case this is the one above you may wish in this case to put them in the order of one one one one it's up to you but this is at least my convention i like to use just in order to to keep these under control so at this point we've created some fairly intelligent window swingable components at least in elevation that we can do lots of variations for let's now look at the window sill um so you can actually control the reveal material that's one thing a lot of people probably don't realize so if i if i add a um a new material and i'll just call this external reveal um and probably maybe instance based and i make it a material parameter i can actually access this material and i should be able to um to paint in this case the inside face of here so i can actually control the finish of the wall when it's cut by this window um i believe that works and then if i just find say a material that i like maybe um i'll just find a paint finish of some sort just see if there's a miscellaneous paint and i'll just make this something a little bit more obvious in color maybe so let's uh we'll make it like a just something something obvious like a yellow so we can tell when we're looking at it and notice now that we have actually set the um the finish uh for the cut wall um now obviously we're gonna have to cover this with an internal reveal and then we're also to introduce a window sill so i'm going to make a new window family so we're building a lot of components here hence the master class i'm going to make this a generic model face based because we're going to want to host this to the the wall um so in this case um we'll cut with void when loaded i think that's the setting i use i'll just double check how i manage it typically this is the window sill that we're sort of intending to build no so we don't want to cut with void when loaded because it's a it's going to be a shared component so usually i make this a shared component this way you can actually do a linear takeoff of the seals in your model by using the same seal component across multiple families but for now we're going to host this now we're looking at the the front of our window at this point so we are going to want to set out the left and the right of our sill from the center of our window i usually recommend sense justifying your sills if your windows are sent to justified as well make it consistent okay so in this case we're going to create a width now i'm going to make this off the window category so again we will get those parameters naturally for switching so we'll get width instance based and then we're also going to have our seal height so we're going to set ourselves out from the top of our sill here so it's up to you what you want to call these planes i'll just call this top and i'm just going to make this a strong reference for now i'm not going to call it bottom i don't want the family to get too confused um you can make this say 75 let's just do a flat facing brick sill in this case i'll just call this a seal height on a tight basis i'm going to model an extrusion and the first extrusion i'm going to model is going to be a void extrusion so i'm going to change this to void and this is essentially going to be my my sill or where my sill cuts the wall so we need to go into left view now just so we can check out the depth of our void now remember that sometimes our seal is going to protrude out a little bit or protrude in um it just depends so i'm going to make a firstly a dimension to the face and also one outside as well i'm just going to call this um sil recess depth all right i'll just call this sil dip this could be type based or instance based it doesn't really matter i'll make this instance based because it's going to be a shared component so you really probably want more family level control rather than project level control and i'll just call this um sil uh what we call this sil expression or still um we'll just say uh usually there's a word i use for this i can't remember i'll just call it protrusion and maybe this is type based maybe usually you want your sill to have a consistent offset from the outside maybe it just always over sales by 40mm because this is going to be a brick seal so i'm just going to in this case constrain my void i think i'd still have multiple constraint on for that yep i did and we're going to cut this from the wall i'm actually going to model a solid element now so this is going to be the brick sill itself i think i still have multiple alignment yep and remember we're in front view of the window at the moment so now we're going to want to constrain this element the same way so we're essentially creating a solid element and then we're creating a cutting form within it as well now let's say maybe we just over sail by something a bit smaller maybe maybe maybe 25 mil that'll do and we'll say that the sill depth actually we'll say 30 and then we'll say the seal depth is 110 just because we're doing an inward seal now i'm not i'm not doing an angled seal in this case it's up to you whether you want to add like some reference lines to do an angled seal um it doesn't look like it but it will actually cut our wall um the last thing you may wish to do is just assign a material to it and um in this case remember this is going to be a project managed material so i'll just call this sill on a type basis and we'll just go and quickly make a material that just looks like brick at least i'm going to just duplicate the default material and just call this um brick soldier and in this case i'll give it a surface pattern a model pattern and i'm in this case just going to call this brick soldier let's set it to 90 degrees and i'll just make it um 75 mil i'm going to make it gray so it's not too overwhelming and now we have a material that at least in uh in a drawing would look more like a brick sill you may wish to justify the patterns and just make sure that by default they do line up to each other which in this case they do now um and also we'll just give this a type name and just call this uh brick saw okay now i'd usually do a bit more to this family but for now that should do i'm just going to call this uh brick sill i'm not going to load this face space family into my window family and i'm just going to host it to the wall so this is actually going to cut the wall now now i'm going to also want to align this so i'm going to firstly actually constrain the width of the window so it's now parametrically connected to the width um now i do want to make sure i'm actually on the right side of the wall so i think in this case i think i'm on the right side of the wall i'll just check no i'm not actually so you do have to be really careful that you are actually on the right side of the wall there we go so i want it to be on the exterior side i'm going to line it up to its center so remember it's constrained upon its center point there we go and in this case i'm just going to align it to the bottom as well and now we should have a seal that both actually cuts the window and also is parametric so we also need to add our seal depth which we already have available or our seal setback we could call it um and then as well as that i'll also just add a visibility parameter and i'll just call this um has brick sill i'll make it a visibility based parameter and let's say that when we don't have a brick sill our window is only ever so slightly set back maybe it's the thickness of a weatherboard so in this case let's just say when we don't have a brick seal it's only a 20 millimeter setback we're going to set up a formula for this so still setback is going to be based on whether we have a sill so i'm going to copy my brixle name or my parameter name and i'm going to say if we have a seal i'm going to say that it's a 110 millimeter setback otherwise it's and now if i don't have a brixle my window comes forward and if i check my preview visibility even though it's showing that the wall is going to be cut the brick seal is not going to be there in the project and it's not going to be available to cut the ball so do be aware that you will actually end up with essentially a sill that is either going to be there in cutting or not going to be there at all so don't worry if the family looks like it's still going to have a cut mark um so at this in this case we just will set ourselves back to having a brick seal at this point you have an important decision to make do you want the excess of your host wall to dictate the depth of your window reveal probably but sometimes you may wish for it to be separate to the depth of the wall you might wish to over extend the reveal maybe to encapsulate a separate wall such as a tile finish wall so you might need to be deeper but typically in most cases we're going to build the reveal to essentially overfill the rest of the wall now what happens if your wall is thinner say it's a petition one your user places it in there by accident well in this case we're gonna have a few problems here actually we're gonna we're gonna see a few things break in this case but if my wall gets shallower it's gonna try and fix my formula unfortunately so what would happen because i do have some formulas involved here we're going to have some challenges with actually hosting some of these elements but eventually you would run out of this zone and your reveal would just break because it would go in on itself so in this case what i'm going to do instead is i'm going to find a way to set a more safe parametric way to control this element now first of all i'm going to build a profile because i'm going to build an architrave reveal that goes around the window so another family so we're building a lot of families in this tutorial i'm going to make a profile just a generic profile and i'm going to make this my my architrave so maybe this is about you know 100 100 ml give it a tiny bit of tiny bit of articulation cool i'm going to save that and i'm just going to call this uh architrave profile and then we're going to make another family in this case i'm actually going to begin with my window nested panel probably and just clean it down so that we have a little bit of the work already done for us i'm going to save the family i'm going to call this a nested reveal now it's up to you whether you want your reveal to be shared because sometimes you may wish to schedule the total architraving uh in all your windows um having said that you could probably build some parameters into your windows to do it more easily where you just measure the two times width two times height if the architrave is on there's a lot of ways to do it but in this case i'm just going to build it as a non-shared component so it's just there for graphical purposes so i'm just going to clean this family down a little bit i'm just going to call this um architraving architraving and reveal and i'm just going to take a few of these parameters out that we're not using so we don't need these subframe sizes we just want the width and the height we only need one material and in this case it's going to be like a painted finish it's not going to be necessarily a um not going to be an aluminium because now we're working internally so i'm just going to use in this case a paint finish and we could make this type based or instance-based it's up to you um i'll make it instance based in this case and then we're also not really too concerned with swings in this case because it's not really a window so we do need to go get rid of those swing lines but what we've done is we've just salvaged a little bit of the work involved in setting up some of these reference planes so we don't need the frame plans um we don't need the height planes we just need our width planes and we do need a depth in this case as well so let me add two parameters in that case so this is going to be the depth of our reveal um now we are going to be sort of protecting our reveal from breaking so this is going to be what i call an override parameter in certain scenarios this is going to protect itself from breaking so i'm going to make a new parameter but i'm going to call this um override on an instance basis um and on top of that um i guess i could also probably add the ability for the user to add excess reveal using another formula but for now what we're going to do is just model a little reveal sweep now i'm just going to make this a nominal size so i'm just going to probably make this like a 13 millimeter sheet of plasterboard and i'm only going to need one side of this in order to constrain this because i'm going to use a sweep which is going to save me a lot of time so i'm going to go to my front view and i'm going to draw a sweep and i'm going to draw my path in front of you like this i'm just going to align it on all four sides and this will be essentially my my plasterboard reveal now you will be you will need to be a little bit careful with some of the graphics and also i need to be careful with the draw order um because at the moment i want a constraint there so i need to make sure that's where my sketch is um but at some point we're going to have to look at the graphics of this window too which might change how we make a couple of these things because they're going to be cut graphically in different ways we might get away with it like this okay so i'm just constraining that profile and then finally we're also going to go and sweep an architrave around the inside um so i'm probably just going to copy and paste this thing and just reconstrain it and then i'm just going to associate a parametric profile instead i forget if i've loaded in my parametric profile i don't think i have so we might need to do that as well so i'm just going to isolate this element so i know that i'm working with the frame that i want and no we didn't load our profile so i'm going to make sure that we have this profile available because you'll need this in order to associate it to the sweep in the nested reveal great cool so now the difference we're going to make here is i'm going to select profile and i'm actually going to pick my architrave profile instead i'm going to go back to floor plan and just make sure this is actually sitting properly it is that's fine but we do want to edit the work plane of the sweep to the back now you might need to potentially rotate or mirror the profile so i'm going to rotate it by 180 and there we go perfect now we can see that we're getting our architrave with a little bit of articulation and also our internal reveal so perfect now we need to protect this thing from breaking so first of all i'm going to add an optional offset for people to add access to the reveal depth so i'm going to say in this case there's a parameter called access depth there's also going to be a parameter which is the depth that the user informs the refill to be in this case this is going to be informed by the depth of our actual wall so we're going to make this an instance parameter remember that the depth is actually tightened pretty much nothing right now so i'm going to make the depth for now 80 millimeters now i'm also in this case going to check when the depth is less than a tolerable depth which is like five millimeters maybe i'll say in this case that if the excess depth and i'll just check here i'll say if the override if the depth for the override is less than less than one which means it has to be zero uh then in this case we just say that the depth of the architrave is you know something tolerable like five um otherwise it is depth um and in this case it's going to be depth plus excess depth so this is where you can actually introduce additional depth in the outcome but the depth itself needs to be sufficient for it to actually close off the wall just to make sure that that sweep never actually breaks in on itself so if i say my depth is zero we now have an overridden depth of five so in this case we are actually getting something that does work so we might actually want to just check based on the excess depth anyway we might want to say if the depth is less than if the depth plus the excess is less than one millimeter so that if it's 10 for example in the excess it works but if the excess is zero and the depth is also zero well it doesn't work does it um so in this case i'm just going to say maybe 50 and there we go so we probably would have to think carefully about this as well because maybe we run into that one-off scenario where our architrave is sitting flush to the inside face of the wall so we don't actually want this to sit on the override depth plane we just want this to always be offset by the actual depth of the wall um plus the excess depth technically so in this case i'm just going to make an extra parameter or an extra plane and i'm going to host this to it again i can probably just reverse that issue it's going to say not a reference and in this case we'll just say um this is the architrave offset so one's really for the reveal and the other one's for the architrave offset so in this case we can just say that we know this is always just going to be depth plus access so i'll need to make this instance based but now when depth and excess depth are essentially zero even though our reveal is going to be protected um our architrave is going to sit flush so that's what we want but what we're also going to do is just say when do we actually want to see this element so we'll say in this case reveal on and we'll just make this an other base parameter because it's going to be controlled by a condition so in this case um this is only going to be on when the depth plus the excess depth is less than one millimeter so we're going to go to the reveal on and we could also just go and nest that relationship over here instead if the reveal is on um but in this case we want it to be the opposite so we want it to be alright i've got to think about this so when the reveal is on um it's actually depth plus excess depth otherwise it's five so i also hear the wrong way around i think if the reveal is on then at the depth plus the excess depth otherwise it's five ah okay i'm just thinking about it the wrong way so we'll make this greater than zero that's better and now this will actually work and now this will only be on when it's actually possible that it's able to be built i'm just going to finally add a finish parameter to these you could make the reveal a different finish if you wanted to i'm going to keep things simple and i'll make this a frame slash million you could make this a different category if you wanted to maybe architrave i thought it used to be a reveal category i'll just call this reveal slash architrave reveal and this means we have custom control of whether we want to see it in the project now you might actually want to have them separately so architrave and reveal as separate styles and now we can say that this is the this is the reveal and this is the architrave great okay and at this point we have a safe architrave that will protect itself from breaking um but we can still connect it through the parameter the parameters at the next level um knowing that we're not going to go and just break this element when we put it into the into the family itself so i'm just going to put these under other just to keep things organized but otherwise i think we're pretty good um we could also just say sometimes we want the the architrave to be off as well so i'll just let this be a user driven parameter so we can just nominate when we don't want an architrave because sometimes you might want to reveal but not an architrave say when you're doing a tile finish okay so i think that looks um that looks pretty good okay so again i'm just going to save this family and i'm just going to load this down into my window and in this case i'm just going to place it on work plan but i'm going to go into interior and just make sure that it's work plane is set correctly so i'm going to pick a plan i'm going to do the bottom of the window and then i'm just going to associate the width parameter and the height parameter and then i'm also going to associate a finish so i'll just say this is uh you know the reveal finish and now we have two options so we have we can also associate the architrave parameter so we can say architrave on and we also might want to make that instance base which i just have now we want to also add the option to add excess depth but we're going to make the depth driven in this case so the excess depth is just something that we nominate and i'll just say this is excess reveal on an instance basis but we are going to want to constrain this element to the inside justification line of our frame so we can constrain here and here now we need to get the dimension of the depth of the wall in order to know how much is left for the depth of our reveal so i'm going to make a dimension now i think in this case we pick the outer planes of the wall i'll just double check i'll get a warning if i can't i'm going to call this host wall thickness and i think this is the right parameter to use i'm just going to double check by probably just trying to put it into a dummy parameter because i know that under very particular scenarios you need to host two different elements so if i make this into dummy no so in this case i do need to pick the actual face of the wall itself and make sure that these are actually faces of the element that we're hosting it to i think now i should be able to use this in formulas so if i make a dummy field again great so now i can actually use this in formulas so that the wall is actually going to drive part of my family um so in this case i'm just going to put this under other because it's a reporting parameter so it's always the same we're going to say that the sill depth which we have to nest i'll just call this reveal depth sorry not silver this has to be instance based because the wall size is variable and we'll say this is equal to the host wall thickness uh where's my real depth there we go so it's equal to the host wall thickness minus the frame depth minus uh the sill setback so we're creating some fairly intelligent relationships between these elements now i'll put this on the other and i'll also put this under other and there we go we can see now this knows how to automatically size itself by the window we also have the option to overshoot by adding excess reveal depth but that's purely optional and under the circumstance that the wall gets too shallow our reveal is not going to go unemployed in on itself it's going to work and it's going to sit at the back of the frame in that case um so if you do run under a scenario where your wall or your window is actually shallower than the host wall um because of the still setback well obviously that's a problem but in that case we'll actually switch our sill off our window comes forward and our reveal and our frame come forward as well okay so at this point um our window is looking pretty good i think that's pretty much as much as we need to do i'm just going to check the graphics of the window as well i think at the moment this should be how our window will appear in floor plan windows are quite interesting in how they actually know how to appear usually they'll they'll be based on the graphics at the height of the view range in the family that's what the family will look like in plan view in the project as well so if i go and change my view range so in this case let's try 1200 for example let's keep going maybe 15. so in this case i think because i have nested components that have been told to look a certain way yes yeah see how it's looking a bit different now um i need to actually make my window panels look a particular way in floor plan as well so if i open up my nested panel because it's a window i guess it behaves the same way graphically i'll make this hidden line and in this case i probably need to just double check which height my view range is at i'm probably above my window at the moment let's just try going like 500 maybe okay so now i'm actually cutting through my window save my family and if i load this down and make sure when you do you just overwrite existing version you don't overwrite parameters there we go so notice how they know how to behave based on their view range that's something that's unique to windows as far as i know it's a really strange behavior um but i'm sure there's a good reason for it as always rabbit there's always a reason for these things at this point i think we're pretty good i think our window is behaving really well it's got some really smart reusable components and it's set up quite well so the last thing we want to do is just make some sizes so in this case um let's just say that one size is going to be 900 by 1800 maybe our panel height 1 can be 600 in this case and because it's parametric of course everything updates i'm just going to make a new family and i could just call this whatever i want it's an awning window so i'll say w on and then i'll just say this is 900 by 1800 maybe i'll just make one more type it's a fixed window and in this case i'll say it's 600 maybe it's maybe it's a 1200 by 1200 it's a square window i'll say that the sub uh the height panel had one round about centered so i'll just try 12x12 probably needs to be a little bit less i think we have to take out one of the frames to make that centered roughly um and remember in this case you can actually switch these panels finally i'll make a casement so i'll just do wcsm and i'll make this one maybe 18 by 18. i'll make 600 and in this case i'll just pick um casement right case left so we have um two casement windows in that case um depending which way you want to swing them i could reverse that probably makes more sense than the other way great so at this point we have a pretty smart family um the last thing to do is just give it a clean up so i'm just going to clean out all the things i'm not using so i'm not using any of these drafting styles now i am using the brick soldier pattern so i'm going to keep that line pattern wise i'm really not using many of them i'm really just using dash for the window swing and i'll leave behind hidden because all my reference planes are set to hidden materials we're not going to be using too many so i'm getting rid of the ones that aren't in use so in this case i'm keeping paint um and i might just make paint uh white while i'm here taking out operable keeping glass keeping my brick soldier getting rid of my aluminium now keeping my aluminium and there we go so now we just have the things in use in the family um i often like to turn off the hose wall just to clean up that thumbnail i just want to make sure i don't think i've actually associated some of these parameters so i'm going to make this the frame and i might just change the color of the aluminium so it's really easy to see that it actually is aluminium i'll just use render appearance perfect there we go and maybe the brick as well the brick doesn't really look very bricky does it um we could give it more of a ready ready brown sort of color that'll do cool so i think i think that's quite a good outcome that i never really like how the glass is blue as well so i might just use render appearance there as well great um usually i lock down the thumbnail i usually make my thumbnails hit in line and i usually crop them down to size as well just so we see the full the full family only but i think um otherwise we should be good i'll just make sure that my preview visibility still looks good yep it does at that point i just purge out my family now be careful when you purge you might be purging nested panels that you're not using so in this case i'm actually using all of them in the family but if you weren't using some it might actually purge them i'll make it shared save my family and let's just go test it out in a project and just see how it works so i'll make a new project architectural template and if you've made it this far congratulations um you know quite a long tutorial but quite a lot to cover so i've got a double brick wall let's find a brick cavity wall brick 230 no that's a solid brick wall we want a 250 timber i guess we'll be fine a brick cavity and maybe we've got some stud walls on an upper floor that we want to host them to so i'll use a timber stud 90 mil and let's load in our window family so i think in this case that's the one i want yep great so i'm just going to place one window i'll place it in the brick wall first just the intended wall for it and there we go um in this case it looks like i might have to play with the visibility of some of these elements in the window still um because at the moment some of these elements aren't quite cutting as intended um so using that lowering raising trick is probably going to be required uh to make some of these graphics work properly but i can see at least i have a parametric window with different types of panels to use in this case yeah it looks like i'm sometimes seeing things sometimes not so it depends on the size of the window and i might be seeing the frame itself so there might be some um some cut graphics that i need to play with there as well anyway um if i put this wall into like another wall or its thickness changes in this case we should expect to see the window adjust the reveal gets deeper i have the option to offset my reveal as well using an excess offset and i think it might be type based still interesting under there it is of course so i can offset it if i need to but otherwise it's automatically sized i have the option to turn off my architrave turn off my sill now while my still's off remember my window comes forward until it sits at the front of the wall so i can see that behavior working as well now if i take this particular window and do a create similar we can see it works if i do turn on my brick seal you will get i guess an undesirable result um because it's not intended to sit in the family like that so when the brick seal is off um we should at least get something functional now i think we might need to potentially protect our window just a little bit more carefully as well because at the moment the architrave does break it looks like i think it's the architrave breaking so i might need to protect my window even more effectively than i have already potentially so yeah you can see that it's not necessarily going to work under every single scenario i think i've still got potentially something that's not working here it's interesting because as soon as i turn it back on it's it's fine um so i probably do need to just check the um the relationship between the seal i won't spend too long doing this because i think you understand the intent of probably what i'm trying to do here in protecting my my window from from braking but in this case if i think about it it's always going to be at the back and then under certain circumstances this will get too small for example if i just say disable the arm the depth parameter it works when it's zero i'm just wondering if maybe yeah sometimes it becomes negative that's why so i just need to make sure that that can never be negative so i'm actually going to have to add another parameter to protect that at another level so i'm going to say in this case depth override is going to have to be a thing here as well so we're going to say in this case that if the depth is less than zero it's zero because that formula actually lets it go it'll go below zero i'm pretty sure that's what's going wrong here um so where's depth uh reveal depth again if you've lasted this long well done because yeah i'm going quite deep here reveal depth i'm going to say if reveal depth is uh in this case less than zero it's zero otherwise it's reveal depth there we go i think this should protect my family now because now this can never go negative so let's try again so if i turn on my brick sill perfect it doesn't break even though it's not suitable for this particular wall my family is now fully protected from being damaged so we can see now that this is also suitable for walls that are also smaller than a particular size as well and we should we still have that option to oversale our sill as well so um a really good outcome i think and hopefully has taught you a lot about um setting up nested families using family type labels and also protecting the integrity of your families under certain circumstances from breaking um as remember too we can also turn on our sill and it should cut our wall and sure enough it does there we go um so hopefully that was useful and which taught you a lot about building more complex families so there we go um if you made it to the end uh good work i hope that your window family works the way mine does um i'm not expecting many people got this far but um yeah if you did thanks for hanging in there and hopefully you learned a lot about building families um this shows a lot of things that i do when i build families just normally things like protecting parameters thinking about nesting relationships thinking about whether families should be shared and how parameters should be associated as either type or instance-based parameters there's a lot of system design involved in how i set these things up a lot of this comes with time so if some of these things don't make sense to you that's okay over time you'll develop your own standards and systems as well which make more sense to you they might be like mine they might not don't worry anyway if you're not already following and subscribing uh feel free to do so and i look forward to seeing you in future similar family master classes like this one thanks take care bye you
Info
Channel: Aussie BIM Guru
Views: 6,141
Rating: 4.9298244 out of 5
Keywords: aussie, bim, guru, cad, revit, dynamo, computational, tutorial, demonstration, how to, educational, family, creation, content, development, geometry, constraint, reference, plane, line, 3D, master class, unistrut, window, windows, frame, sill, reveal, architrave
Id: m5LaTcbK-dA
Channel Id: undefined
Length: 64min 26sec (3866 seconds)
Published: Sun Jun 06 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.