Stop Repeating the Same Cabinet Modifications Over and Over
- 1.Become a CABINET VISION Power User: Navigating the Texture Manager [VIDEO]
- 2.A Guide to Panel Stock Materials in CABINET VISION [VIDEO]
- 3.Elevate Your Designs with CABINET VISION’s x2D CAD Multiplier [VIDEO]
- 4.How to Import and Install Packages in CABINET VISION [VIDEO]
- 5.How to Modify Cabinets and Expand Your Design Catalog in CABINET VISION [VIDEO]
- 6.How to Create a Toe Height Attribute in CABINET VISION: A Step-by-Step Guide [VIDEO]
- 7.How to Adjust Sunlight and Shadows in CABINET VISION Renders [VIDEO Tutorial]
- 8.Mastering Room Mirroring in CABINET VISION: A Step-by-Step Guide
- 9.From Design to Delivery: Splitting Large Parts in Cabinet Vision
- 10.Creating Stunning Curved Island Designs in CABINET VISION
- 11.Precision Placement: Using 2D CAD to Position Peninsular Walls in CABINET VISION
- 12.Yes, You Can Add Inset Drawers Behind Tall Doors in CABINET VISION—Here’s How!
- 13.Custom Drawer Dividers in CABINET VISION: A Smarter Way to Maximize Storage
- 14.Lost Your Work? Two Ways to Recover Jobs in CABINET VISION
- 15.Static vs. Live Drawings in CABINET VISION: What’s the Difference?
- 16.How to Add a Door Profile to End Panels & Save Custom Panels in CABINET VISION
- 17.Mastering Layers in CABINET VISION: Make Your Drawings Work for You
- 18.Let’s Draft Up a Job in CABINET VISION – Part 1: Layout, Setup & Smart Starting Moves
- 19.Let’s Draft a Job Up from Scratch in Cabinet Vision Part 2
- 20.How to Add Inner Drawers (Rollouts) in CABINET VISION
- 21.How to Create a Waterfall End Panel in CABINET VISION
- 22.Stop Repeating the Same Cabinet Modifications Over and Over
One of the biggest challenges in cabinet design isn’t creating something new. It’s repeating the same modifications hundreds of times.
A floating vanity is a perfect example.
Many designers manually adjust toe kick settings, cabinet heights, recesses, and construction details every time they need one. Others build multiple versions of nearly identical cabinets into their object catalogues just to avoid repeating the work.
Both approaches get the job done. Neither scales particularly well.
As projects become more complex, repetitive modifications consume valuable engineering and design time. Object libraries become crowded. Maintaining standards becomes more difficult.
This is where automation can make a meaningful difference.
Using CABINET VISION to Automate Cabinet Behaviour
CABINET VISION includes a powerful feature called User Created Standards (UCS).
A UCS allows users to create custom rules that automatically control cabinet behaviour based on specific conditions. As a custom cabinet software solution, Cabinet Vision gives shops the ability to automate recurring design and manufacturing requirements without rebuilding their cabinet library from scratch.
Instead of manually converting a standard vanity into a floating vanity every time, you can create a simple toggle that tells CABINET VISION when the cabinet should behave as a floating vanity and when it should behave as a standard vanity.
The result is faster design work, fewer repetitive tasks, and greater consistency across projects.
The Problem with Building Endless Variations
Many shops solve recurring design requirements by creating additional objects.
Need a floating vanity? Create another cabinet.
Need a floating vanity with a different back construction? Create another cabinet.
Need one with unique machining or hardware requirements? Create another cabinet.
Over time, object libraries become increasingly difficult to manage.
A UCS offers a different approach.
Instead of building more objects, you can add intelligence to existing ones.
In this example, a standard vanity cabinet gains a simple “Floating Vanity?” attribute. Designers can switch it on or off as needed while continuing to work from the same cabinet library.
How the Floating Vanity UCS Works
The tutorial demonstrates how to create a custom attribute that appears directly within CABINET VISION.
When the attribute is set to:
False
- The cabinet follows normal construction standards.
- Toe kick height follows the current construction method.
- Toe recess follows the current construction method.
True
- Toe components are automatically removed.
- Cabinet height adjusts to create a floating appearance.
- Additional construction conditions can be triggered automatically.
This gives designers flexibility without sacrificing standardization.
Why Construction Methods Matter
One of the most useful concepts covered in the tutorial is the relationship between UCS automation and construction methods.
Rather than hard-coding every value into the UCS, the system references construction method settings whenever possible.
This approach provides several advantages:
- Designers retain flexibility for unusual projects.
- Company standards remain centralized.
- Future changes to construction methods automatically flow through the UCS.
- Users avoid creating rigid automation that limits design freedom.
For many manufacturers, this balance between automation and flexibility is the key to successful UCS development.
Finding the Right Parameters for Your UCS
One of the most intimidating parts of learning UCS programming is finding the correct parameters to reference.
The tutorial demonstrates two valuable resources built into CABINET VISION:
Object Tree
The Object Tree allows users to inspect cabinet properties and identify the parameters associated with specific settings.
For example:
- TOEH = Toe Height
- TOER = Toe Recess
These parameters become the building blocks used inside the UCS.
System Parameters Reference
CABINET VISION also includes a comprehensive list of system parameters that can be searched to identify available settings and functions.
Learning how to navigate these resources is often the first step toward becoming comfortable with UCS development.
Combining UCS Automation with Construction Method Conditions
The floating vanity example extends beyond simple toe kick modifications.
Additional construction changes can be triggered automatically when the floating vanity attribute is enabled. Examples include:
- Removing nailers
- Adjusting back scribes
- Changing back panel construction
- Modifying assembly behaviour
By combining UCS logic with construction method conditions, shops can create highly customized manufacturing standards without creating dozens of unique cabinet objects.
A Practical First UCS Project
For users who have always found UCS programming intimidating, this floating vanity example provides an approachable starting point.
The project introduces several foundational concepts:
- FOR EACH statements
- IF / THEN conditions
- Boolean attributes
- Custom parameters
- Construction method integration
- System parameter references
These same techniques can later be applied to machining operations, hardware automation, custom manufacturing rules, labeling, reporting, and countless other workflows.
Watch the Full Tutorial
In this beginner-friendly UCS tutorial, Clayton walks through the complete process of creating a floating vanity automation from scratch.
You’ll learn how to create your first custom attribute, build conditional logic, connect UCS behaviour to construction methods, and automate common cabinet modifications without expanding your object library.
Watch the full video to follow along step-by-step and start building your own UCS solutions inside CABINET VISION.
Click here for video script
G’day! It’s Clayton from Planit Canada with another CABINET VISION tutorial. And we are really excited to be launching this new series on our YouTube channel ‘UCS for Beginners’.
Maybe you’re a complete beginner to CABINET VISION. Maybe you are a beginner to UCS’s but you’ve got a bit of experience with the program… Maybe you find UCS’s a bit daunting as a concept… Regardless of what your circumstances may be, this series is designed for complete beginners.
It’s going to assume you’ve got no prior experience or knowledge or you’re not familiar with many of these concepts at all and then throughout the different episodes, we will build on what learn consecutively and we will do so in writing up our own UCS’s in context.
We’re taking real UCSs that CABINET VISION users use around the world and we’re showing you how you can write them yourself.
So let’s begin by talking a little bit about what UCSs are and then we’re going to have a go at writing our very own.
So what is a UCS? A UCS or a ‘User Created Standard’ is a custom code that we can write in CABINET VISION to automate or control individual or many settings at once. And it’s easier when we can see it in action than to just imagine it.
So what I’ve got here is a vanity cabinet. And let’s say I want to make this a floating vanity. Okay. I could manually make the changes to this cabinet myself.
If I click on this vanity, for instance, I could double-click on it to go to the cabinet level open up the cabinet properties, go to the toe. I’m going to make the front recess deeper than the cabinet to get rid of the toe parts and I’m going to make the toe height 12 inches and we’ll click ‘Ok’.
There you go. The vanity is now floating and I probably just want to make sure also that the back has the right kind of construction, so that I can fix it to a wall. But imagine I’m happy all of that.
Then I could go back to– sorry–the elevation. I could right-click, ‘Save’, and ‘Save As’, and save this back to my object catalog as a floating vanity. So I don’t need to carry out those same steps. Again, that’s one option. And that’s not a bad option at all.
But with a UCS, I can do something pretty cool. So I’m going to delete this cabinet here. I’m going to open up my UCS menu. I’ve already got this floating vanity UCS written.
We’re going to write it together in a sec. I’m just going to enable it, click return and now let’s go back to our objects catalog and let’s grab these three vanity cabinets here. So our left, our right and our pair.
Now thanks to this UCS, rather than me creating that floating vanity cabinet, I can just click on them and you’ll see on the left-hand side, I’ve got this little attribute now; this floating vanity attribute.
When I click on this and make it ‘True’, you’ll see that now all of these vanity cabinets will become floating vanities.
So what I’ve essentially done is automated all of those different steps that you saw me do manually, but with this UCS, I’ve created this toggle, this switch, so that CABINET VISION will do those steps for me.
So this is really useful when maybe we have different operations, different cutouts, different technical features that we might need to add to certain cabinets, rather than building out a really, really, really busy library of objects.
Which there’s nothing wrong with, we technically can do that. But sometimes when our object catalogues are so busy, it might just be easier and quicker for intermediate or advanced CABINET VISION users to find any old cabinet that’s close enough and just make some adjustments to it in the job.
Likewise, we could create hundreds of different UCS’s that do all sorts of different things, but then you could just imagine how busy my attributes column might get if I have hundreds of different switches on the left-hand side here.
So usually there’s a pretty fine balance that we try to strike between the two in CABINET VISION; having a really well-developed object catalog with lots of the design features already done. That’s very useful and it can be a lot easier for certain CABINET VISION users to modify those cabinets.
Many users will use UCS’s to add in cutouts or different operations so that their designers, their engineers aren’t wasting time manually adding that on every single cabinet where it’s relevant and that drastically improves or increases the kind of output that our designers or engineers can have in any given project.
So what we’re going to do is write this very UCS ourselves together. And in this UCS, we’ve basically split it up into two key areas.
The first part is we need to set up in CABINET VISION this attribute so that whenever I click on a vanity object, I can see this little floating vanity toggle this button on the left-hand side.
That’s the first part, then in the second part of the UCS, we need to tell CABINET VISION what it should do when this is set to True and what it should do when this is set to False so that we can pivot between these two different states of the cabinet, a floating vanity and a standard vanity.
And just to show that we’re in this together, I’m going to go back to the UCS that I’ve created and we’re just going to delete it so that we can start to get it from scratch, at the same point.
So today is not the day that we’re going to go through the new UCS Wizard here in detail. We’re not going to go through all of these different settings today. We just want to start with a complete blank canvas and start to talk about some of the logic, some of the language that we’re using behind the scenes.
So if you do really want to use this floating vanity UCS, you’ll notice under this part column that CABINET VISION will automatically reference this part because we’re making changes to a floating vanity and there’s maybe not an individual part that’s being implicated here…
What you could do is, if you don’t want to put say, 45 corner hinge and potentially confuse yourself in the future, you could change this to say… I’m going to go with Operation. I haven’t chosen or clicked on any of these options here, and I’m just going to click on finish.
And CABINET VISION is going to just automatically run through all of those settings, create something generic, and I can start to modify it myself.
So now if I were to click in the name field here, You see I can put in my own custom name, so I’m just going to call it ‘Floating Vanity’. A lot of this stuff it’s just personal preference. You can put in what you’d like.
Now if I click on the UCS so that it turns blue and then I click on the ‘Code’ at the top here I’ll be able to see the code that the wizard has generated.
Now I don’t want to use this. We’re going to start with a complete blank canvas today. So I’m just going to click and drag and delete everything that’s there now one of the trickiest hurdles for you as a beginner to UCS’s– and perhaps if you’re a little inexperienced with CABINET VISION– it’s trying to train yourself to think like CABINET VISION.
CABINET VISION doesn’t speak English, it doesn’t speak French, Spanish, German, whatever language it may be. It speaks UCS or JavaScript.
So in this case, I can’t just write what I want the UCS to do. I have to start communicating in a way, giving instructions to CABINET VISION in a way that it understands.
So there’s a few things that I’m going to teach you and then we’re going to look at how we can start to find dictionaries of, you know, really useful settings or parameters that we can reference in this menu.
But the first thing we want to do is not get lost in what’s possible. Let’s bring it back down to this floating vanity UCS.
Well, the first thing I want is to start making notes in a draft here in this space so that I can reference this UCS very easily in the future. If I need to come back here, make modifications to it. It’ll be really easy for me to find the lines of code I need to find.
Or while I’m writing it, if I need to be going in and out of this view, this menu here into the project section so that I can find parameters or settings to use in this UCS, it will help that transition be a lot smoother using notes because I’ll stop getting errors.
And I’ll give you an example of what I mean. The very first line of code here, this is going to be the description field. So if I were to say, put the description in, let’s go “Modifies the vanity cabinets into floating vanities” like so.
If I close this and save it and click return, I’m going to get this error. This is CABINET VISION’s way of telling me “there’s a problem in your code, I can’t read it” and it’s going to ignore it.
And to avoid getting that kind of error every single time I go back and forth in these views, what I can do is go back into the code and before all of my notes in this UCS, I’m going to put a semicolon.
You’ll see the text turns green and this is CABINET VISION’s way of saying I’m going to start ignoring this and I’m not going to get that error.
So let’s go back into the User Created Standards and go to the code. What we’re going to do is start making a draft of what we want this UCS to do.
So I want to create an attribute. I want this attribute to be a true or false statement, which we call a Boolean. And I want it to be called, I want the description of this attribute…
When I, as a designer, I’m looking at that attributes column, I want it to be called ‘floating vanity?’ And of course, you could put in your own custom name here as you want. So that’s kind of the attributes core ingredients in the recipe.
Now let’s talk about what we want the attribute to do. If I want a vanity cabinet to be a floating vanity, I need to remove the toe parts. I need to elevate the toe height, even if there is no toe, I still want the height; that space between the bottom of the cabinet and the floor to be controlled.
And I may want to factor in the back of this cabinet. And if we have a well-established CABINET VISION already, it’s very possible in our construction methods we already have a back set up which can work with a floating vanity.
Maybe we don’t though. At the moment in my CABINET VISION, I don’t so I need to add that so I’m going to also say back scribe will need to be zero. Maybe I’ll just check and make sure that the back settings are correct when we get to that point.
So I think that’s pretty good for now. That’s a pretty basic floating vanity. There might be more you want to add in but we’ll talk a little bit about that later.
So the other advantage to making notes like this is perhaps English isn’t our native language or not the native language of our company or our CABINET VISION. UCS’s themselves do use like an English-base so we’re going to be using English terms even if we’re not speaking English with CABINET VISION, and that might be tricky.
So what we can do is also make notes in our native language to help us find and reference these same settings later on. So what I’m going to do now is close this UCS. I’m going to save it and go back to my elevation view.
So I’m going to run some tests now and make a list of the different settings I’m going to want to use; the different parameters. I’m going to grab a vanity cabinet, place it against this wall, and I’m going to double-click on it to go to the cabinet view.
Now, in CABINET VISION, there are two fantastic, very useful dictionaries of settings or parameters in the program. The first one is the Object Tree.
So down here in the bottom left, I’ve got next to the little home icon, this Object Tree icon. When I click on that, I’m going to see a list of all of the different settings that are operating on or relevant for this cabinet in this case here.
And you can see I can use this little box in the top left here to start opening them up so I can see settings that might be specific to individual parts or to the assembly as a whole.
But at the moment in this list, I can’t see a toe, let’s start with the toe height. I can’t see a toe height setting necessarily.
But how would I know what the setting is that I want to reference in the UCS? We’re going to go up to the properties here and I’m going to make the two changes I want to make automatically in this UCS manually.
So I’m going to go to the toe. In this case, most floating vanities are probably going to have a toe height of about 12 inches or 300 millimeters.
So if I make this 12 inches and I’m going to make the front recess, again, do exactly what I did before make it a larger number than the depth of the cabinet itself. What you’ll see is now automatically on the left-hand side, these two settings have popped up.
So what CABINET VISION is kind of saying to me is these settings weren’t visible before because they were following the automatic standard. But because a user has changed these settings, here’s what’s going on.
So now I know that the 12 inches here, the toe height is represented by these four letters ‘T O E H’ and the the recess of the toe, the setting which will remove all of those different toe parts instead of me having to do it manually, this is represented by the four letters ‘T O E R’.
So that is a really useful way for me to start finding these settings. I could also if I wanted to open up my Help section, go to Help topics. And if I just search system here, you’ll see I’ve got this system parameters.
If I double-click on this, what I’ve got is like a massive bible of all of the different system parameters that we might possibly ever want to use in CABINET VISION. They’re all of them are listed here.
Now there are so many that you can see it might be difficult for me to find exactly what I’m looking for… So what I can do is click ‘Ctrl + F’ and let’s say I was looking for that toe height. Maybe I click on toe.
I’ve written that in here. It’s going to show me all of the different references to a toe and I can pivot with ‘next’ until I find the setting I want to use. And it might take me a little time. Maybe I can be more specific…
Oh, here we go. So here I’ve got the toe height (TOEH). It specifies the cabinet toe height. If I was continuing to look for the other setting, I’ve got here specifies the recess of the cabinet front toe, the toe recess setting (TOER) is here as well.
This can be a really useful way for me to search through this library of all of these different settings to find the one that I’m actually looking for.
If you also have a library of UCS has already written up, you could search through the UCS’s once you’ve become a bit more experienced with them to find specific settings that you know are referenced elsewhere.
Also, if English isn’t your native language and you would still like to be able to search through this but you’re not sure what terms we might be using, what you could also do is click up here click and drag, make a copy of all of these settings, and then maybe you could you know use AI of some sort to search through them and help you find the settings you want to reference.
With time it does become quite second nature. So I’m going to minimize that. Now I’ve got the toe height (TOEH) and the toe recess (TOER).
I’m going to click return, go utilities, go to User Created Standards, go to the code that we are starting and I’m just going to put the two terms that we’ve looked at. So I’ve got the toe recess and the toe height.
So now let’s bring this UCS to life because at the moment there’s it’s a blank canvas, there’s nothing there for CABINET VISION to read.
What we want to do is as we give these instructions to CABINET VISION, and this is similar to the CABINET VISION Hierarchy, start with the broadest setting and start narrowing it down, becoming more and more precise with the information we tell CABINET VISION.
So that in the project, as I’m working on a job, CABINET VISION can sort through and find as quickly and simply as possible the setting that it needs to find so it can start making that change.
Most UCS’s using the CABINET VISION macro language begin with these two words ‘FOR EACH’. As a side note, you don’t need to write these in all capital. You could do them lower-case as well. That would work.
You’ll see that both items have turned blue. Me personally, it’s just a preference. I like to put these UCS instructions in all caps only because some of the other information which comes afterwards is lower-case. And it can help me format it in a way that’ll find easier to read. But that will be a preference thing.
So now we’ve got ‘FOR EACH’. Let’s start at the top here. What do we want CABINET VISION to look for? There are all sorts of objects in a project. There are room objects. There are wall objects. There are cabinet objects.
So what we want to do is work out which objects we want CABINET VISION to look at first. Now in this case, we’re going to write ‘FOR EACH Cab Assembly’. What I’m saying is I would like CABINET VISION, out of all of the assembly objects, to look for those that are classified as a cabinet.
Ok. So we’re starting there at the top. But now there are all different kinds of cabinet classes. There are our base cabinets, there are vanity cabinets, our tall cabinets, our upper cabinets.
So FOR EACH Cab Assembly I want to define what the cabinet class is. How do I work out what the cabinet class, so how should I write that in this UCS? Well, what we should do is go back to our Help Files and see if we can find it.
So I’m going to save these changes, click Return. Let’s go to the main tab. Our Help Files, and open them up. Now I’ll give you a little bit of a help. We’re looking for the class of the cabinet.
So if I write in class here and search… There’s a few different options that pop up, but what I’m thinking is we wanted the cab class. Maybe we’ll search that instead. ‘Cab class’.
Here we go. Functions and operators. That’s what we want. So when I click on ‘Functions and Operators’, I’m just going to click on the page, ‘Ctrl + F’, write in ‘class’, and you’ll see I’ve got here a section for object classes and types.
This is going to be really useful. So here are a few different options for the cabinet types, the assembly classes, and what we want to do is scroll down until we find one which seems like it’d be for our vanities.
So we’ve got our tops, our uppers, there you go, our assembly class vanity. So what I’m going to do is right-click on that, copy, close this, close this, go back to our UCS, our code, and I’m going to put, after this one, I’ll just click Ctrl + V and put it in there.
All right. So now that we’ve got that assembly class vanity code there, what we want to talk about is the next type of term that we use in UCS’s. In fact, this is the most common type. It’s an IF/THEN statement.
And basically, it introduces a condition into CABINET VISION. As CABINET VISION is sorting through our project looking for the right setting, we’re telling it: IF you find this, THEN do that. That’s kind of the main idea with the UCS.
So what I want to say is FOR EACH Cab Assembly, if the cab.class is equal to this code here: So if CABINET VISION’s searching and it finds any cabinet that has this type, then we want it to move on to the next instruction.
So all IF/THEN statements must finish with an END IF. So that we can close that condition and finish off the UCS. But what we need to do is here is, in this case, introduce a separate IF/THEN statement within that same condition…
Introduce a new IF/THEN statement, like so. And because I’ve done that, I also need to make sure I’ve included an appropriate END IF statement so that I can close that condition when the time is right.
So what we’ve got here is for each vanity cabinet, we want CABINET VISION to create a brand new attribute, an attribute which is not already there. So this is really cool because I can now create my own custom setting.
Let’s say I want to call this setting FLOATINGVANITY and this is a setting just like you see the TOER term here, or the parameter here, or the TOEH parameter here. Now I’ve created my own and I’ve called it a FLOATINGVANITY.
So assuming that there isn’t a floating vanity identical to that already in CABINET VISION, I can use it. So I could customize this to be whatever kind of setting I want.
It could be FLOATINGVANITY1, FLOATINGVANITY12 FLOATINGVANITY123… whatever it is. As long as it doesn’t already exist in CABINET VISION, I can now introduce it as a custom term or a custom parameter.
If I want to check to make sure that it’s not a parameter that’s already being used in CABINET VISION, I can just search for that in the big long list of system parameters that we’ve looked at already.
Now what I want to say is if this ‘FLOATINGVANITY’ parameter is equal, I’ve used two equal signs (==) there, that’s important. ‘is equal to null.’
Then I’m saying CABINET VISION as you go through and have a gander through all the different vanity cabinets in this project… If you notice that there aren’t any references to this FLOATINGVANITY setting exactly like that, then I’m going to have it turn that setting on.
So I’m going to say then FLOATINGVANITY and I want to define what kind of setting this is. So we’ve mentioned here that we want it to be a boolean.
So what I can do is open up my Help Files and you’ll notice if I search for boolean I click on the ‘functions and operators’ and then I do the ‘Ctrl + F’, search for boolean, I can find this little code here and if I minimize that and I put that on the end of this FLOATINGVANITY and then this boolean, because this is a true or false statement, I can now define what I would like the default state of this boolean attribute to be.
0 is false. 1 is true. So if I wanted all of the vanity cabinets I grabbed from the object catalogue to be a floating vanity by default. What I could do is make this a 1, set it to true, and that would be the default standard and I could toggle between both of those options.
In this case we’re going to make it 0 so that it’s set to false, and it’ll only become a floating vanity if I interact with it from the Attributes column.
Now what I’m going to do is I’m going to copy this. And I’m just going to click ‘Enter’ I’m going to paste it two more times because I want to use this same structure and change some of the settings.
We can remove the 0 here. At the moment, if I want to be able to see this FLOATINGVANITY from the Attributes column in CABINET VISION, what I need to do is define the style.
So I’m going to put style in here and to just check and see what kind of style I want to use. Again, let’s open up that Help File. You see, from that same view, that same menu, I’ve just searched for style.
So you can see I’ve got the style code here and it talks about three possible settings for that style value. The one we want here is number 1 because ‘attributes act as triggers that can be user prompted from the side bar from the object or job room parameters tab.’
So that’s exactly what you saw me doing at the start of this video. The description here, while we’re here, this allows us to display a user prompt for the attribute to the designers. So that’s going to be the name of this attribute.
So if I minimize this and we change the boolean here to be the description. Now, I want the style to be 1 so that it’s an attribute and I want the description to be ‘Floating Vanity?’
I’m going to cut this and I’m going to click ‘Ctrl + V’. Now, the reason I’ve put in these two apostrophes is so that CABINET VISION will provide or make the description of this attribute exactly what it sees between those two apostrophes.
If I didn’t have them there and I was using different values or potentially different terms that CABINET VISION references already, it could confuse it.
So when I use those two apostrophes to say this is basically standard text, if you see any terms that you already recognize, ignore them.
So now that we’ve got this, we’ve got if our cabinets are set to vanity, if there’s no such thing as a FLOATINGVANITY setting. Then I want you to create a FLOATINGVANITY, make it 0 by default.
I would like it to be a visible attribute that my users can interact with it in CABINET VISION and I just want it to be referred to as ‘Floating Vanity?’ exactly like that.
Let’s save this. Let’s close it down and see if that’s worked. So I should be able to click return. Let’s remove this cabinet and grab a brand new one from the Object Catalogue.
Now when I click on it, you’ll see you should be seeing this ‘Floating Vanity?’ attribute here and you should be able to toggle between True and False.
It’s not going to be doing anything at the moment because we haven’t introduced that logic yet into the UCS, but if you see that; that is fantastic!
If you don’t see it at the moment and you’ve maybe seen an error at one thing check for if we go back into that UCS. We use the two equal signs (==) here with null but you’ll see I’ve only used one equal sign for the rest of this information.
So just check to make sure that you’ve formatted it the same. But congratulations you’ve just written your very first functioning UCS!
You’ve been able to create an attribute that attaches to a specific kind of object and, even if it’s not doing anything at the moment, that button’s a little useless, we can move on to the next step.
So what I’ve done is I’ve just jumped ahead and reformatted a little bit with some notes. So if you want to copy this you can pause where we are right now and just copy this into your own UCS.
The reason I’ve done this is just so that I can break this UCS up into the different sections. And it’s easier for me to see what’s going on.
I’ve also added in a little bit of a guide for the second half of this UCS. So I’ve created the attribute now I want to automate the behavior and I need to create two different conditions.
I need to tell CABINET VISION what it should be doing when that FLOATINGVANITY setting is set to false or 0. And then what it should be doing when that FLOATINGVANITY setting is set to true or 1.
So, what we’re going to do is start writing that out. I’m going to add in a new IF statement. I’m going to put in here FLOATINGVANITY. And I’m going to use again two equal signs (==) like so.
The reason I do that and not a single equal sign is the two together (==) is asking the question. Are these things identical?
So if I have two equal signs, I’m asking CABINET VISION IF you see that this FLOATINGVANITY setting is identical to 0, it is set to that value there, THEN I want you to do something.
Whereas up here, for instance, I’ve got this equal sign, (=) I’m not saying I’m not asking for it to check that this field is identical. I’m telling it what values it should put in that field.
Hopefully that makes sense, but it becomes a lot more instinctive the more you work with UCS’s. So what we’ve got here is IF our FLOATINGVANITY is equal to 0, THEN now we’re going to bring in these two settings at the bottom here.
So what we’re going to write is TOER (Toe Recess). We’ll put in that setting and we’re going to make that ‘=’, and we’re going to go TOEH (Toe Height) and we’re going to make that ‘=’.
So now what we want to do is tell CABINET VISION what we would like it to use by default when this FLOATINGVANITY setting is set to false or 0.
If I were to put for instance 4 for my toe height here, I could do that but that means that every single time I grab a vanity cabinet from my object catalog, and this FLOATINGVANITY attribute is set to false.
The UCS will decide that the toe height needs to be four inches, four inches exactly. That means… what happens if there is a really unusual job where I want CABINET VISION to do something that’s outside of the UCS. maybe I don’t know, I want the toe to be 6 inches for whatever reason.
I can’t do that because the UCS is dictating that of the two states that this vanity cabinet can exist in; one is 4and one is the other setting I choose, 12 in this case.
I can’t have anything other than those two options, which does not really work for me because it means me as a designer I have less control over this vanity cabinet if there is something unusual in a job.
And a lot of users, designers, engineers, they can find CABINET VISION frustrating if UCS’s are built like this and don’t give them the freedom they need to sometimes break outside of the norm.
So what we’re going to do here is instead of putting in an exact value, we’re going to ask CABINET VISION to call upon the Construction Method setting.
So to call upon a construction method setting, what we want to do is use this little code here which is ‘_CV:’ and I need to find the question number in my construction methods that is relevant to this setting.
So what I’m going to do is in both of these options here, they’ve got ‘_CV:’, and I’m just going to use the semi-colon here so that I have noted them out, they’re not going to give me an error.
And I’m missing an END IF because I haven’t added that in yet. So I’m just going to put in anEND IF like so, and then we should be able to save this and close it without an error… cool.
So what we want to do is now find the construction method questions that are relevant to the toe height and the toe recess.
Well, if I go to the room or the job settings or even the cabinet settings and I go to cabinet, I’ll find the Construction Method that I’m currently using.
If I click on modify for this room because I’m just looking for a specific question number. I don’t need to change anything right now.
What I can do is open up this section here and… so what are we doing first? We’re doing the toe height. So I probably want to find my toe kick settings.
I double-click on that and what you’ll see at the top here is we’ve got a standard number. These three digits here, we need to look for the one which is relevant to the toe height and the toe recess.
So if I click next and let’s try and find that’s the toe height… Perfect. So the toe height standard is 238. So make a note of that, we want 238 and we also want the recess standard.
So if I go and find… Here we go, the recess, that is 240. So 238 and 240.
What I can do is now just close this down, go back to my user created standards, open up the code, and now we can remove these semicons and the two recess that was 240 and the toe height that was 238.
So now what I’m saying is in CABINET VISION by default my vanity cabinets that I grab out of the object catalog will be following the construction method setting.
That means if I close this and let’s say I’m in a project, and for some reason the toe height in this particular room needs to be outside of the norm. I’m not stuck with a cabinet that won’t adapt to me.
Now what I can do is go into my job settings, my room settings and if I needed to, or my cabinet as well if I needed that changed on just an individual cabinet level, and then I could refind that setting.
And at the moment, the toe height is coming at 4 because that’s what the CABINET VISION standard is telling it. So if I needed the cabinet to be 6 inches, the toe height for whatever reason, I could now make that change, have that control, without impacting the UCS.
So I can get the best of both worlds in that case. This works really well when we have a false statement, because we don’t necessarily want the cabinet with that false statement to do anything particularly special.
Often we just want it to follow the standards that we’ve already set up in our CABINET VISION. So now let’s go back in to here, open up the code, and great, so we’ve got CABINET VISION defining the toe recess and the toe height.
Now let’s look at if we want it step to true. Now in this case because, so I’m going to copy that and paste it, And I need to make sure I put in an IF and THEN statement.
So if the FLOATINGVANITY is == to 1. If it’s turned on, I don’t want the true statement following the Cabinet Vsion standard. I actually want it to be a custom setting here.
What I’m going to do is delete both of these. Now the recess, I want this to be deeper than the depth of the cabinet.
Technically, if I were to put in 35, like I was doing before, what happens if my vanity cabinet for whatever reason is deeper than 35 inches, then that means this UCS isn’t going to work because the recess will go back 35 inches, but I still have those toe parts because it hasn’t gone beyond the depth of the actual cabinet.
So what I’m going to do here is put in an equation. So maybe we’ll just put in a semicolon there we’ll come back to that.
The TOEH is a little simpler. I want it to be 12 inches or perhaps 300 millimeters. You might have your own custom number no doubt. So you can put that in here. I’m going to put in 12 inches.
If I wanted to put in 300 millimeters, I could equally do that. And if I put in the ‘mm’ after the digit, that’s just my way of telling CABINET VISION that this is a metric figure instead of using the default, which is coming in as imperial.
So we’ve got that there. That’s great. We need to work out how to write this equation because the depth of the cabinets could change.
The equation I want to write is something like this; I want CABINET VISION to work out what the depth of the cabinet is and then just add one inch.
So long as it’s always one inch deeper than the depth of the cabinet, the recess will remove all of the toe parts automatically.
So I can kind of use this setting here to do a lot of the work for me. So to work at how to write an equation, what we’re going to do is close this now and click return.
That’s okay. It’s just telling me the UCS has is missing a couple of END IFs… and what I can do is double-click on this cabinet.
I’m going to open up the Object Tree and if I go to the end view, I can see that the depth of this cabinet is 21, so can I see any of these parameters here that equals 21? I can.
I also know just because of experience with CABINET VISION that the DX, DY and DZ represent the dimension of that object or that part on the XYZ axis.
So in this case, the Z axis represents the depth of the cabinet. So what I want to do is create an equation that is basically the depth of the ‘DZ + 1’.
So what we can do is go back to the UCS. Go to the code. So what I’ll do is I can remove these semicolons here. we can get rid of this first section and we’re just going to write DZ.
So what I’m saying is the DZ which represents the depth in this case of this cabinet plus 1.
Every single time CABINET VISION recognizes that this FLOATINGVANITY attribute is set to true, it will work out what the depth of the cabinet is and it will just add 1.
Meaning or the result that I’ll get is that all of the toe parts will disappear because CABINET VISION recognizes that that recess is beyond the depth of the cabinet and we don’t need any toes.
So that’s looking pretty good. Now, need to make sure that our IFs and our END IFs line up now. We’ll leave this one for the time being.
So I’ve got an IF/THEN statement here and an END IF to complete it. That’s great. I’ve got an IF statement here and an END IF to complete it. That’s great.
I’ve got an IF statement here and an END IF to complete it, which is great, but I’m now missing one final END IF to wrap it up.
So what we can do is put in END IF here and we’ll get rid of this because we need to talk about the back of the cabinet in a second.
But hopefully what you can see and this is the advantage to formatting your UCS as well is that I can quickly see that all of these IF and END IF statements or conditions are wrapping themselves up.
I’ve started the IF statement and I’ve ended the IF statement so I should be able to close this now and save it and we should be able to toggle between this FLOATINGVANITY attribute now and see CABINET VISION make it work.
Now what you might have noticed right away is that while it’s set to false, it seems to have bumped it up. And now if I set it to true, it seems to have bumped it down. That’s the opposite of what we were trying to accomplish with the UCS.
There’s a very specific reason for that. When I go back to the UCS, you’ll see we’ve got this pre-build column here. When I turn that on, CABINET VISION will automatically run through the UCS and make those changes for me.
So now that we’ve turned pre-built on and click return, now we can get the behavior that we’re looking for from this UCS lined up with the attribute.
So there you go. Now we’ve got the true and false statement removing the toes, bumping up the height, and giving us that ability or that control over the cabinet.
And because the default of the false statement is that it follows the standard of the construction method it’s using… Now, if I needed to make a change here, I could go to the construction method, go modify for this assembly. and let’s change this to a kick height to be 6.
Actually, let’s go 10, just to make it obvious. Ok… Ok… Update, Ok… You’ll see I can now update.
I’ve got the advantage of using a UCS to control the depth of that toe. Sorry, the height of that toe. And if I toggle back and forth between here, I can now, this UCS will adapt to any changes to my standards that come in the future.
So we’re nearly there but we still need to talk about what we can do about the back of the cabinet or the back scribe of the cabinet.
This is going to depend on which settings you’re using. It might not be an issue for you, you might already have a construction method set up and everything we’ve done so far in the UCS is working fine.
But maybe you’ll like me and at the moment your construction method may not be equipped to do that transition from a standard vanity to a floating vanity.
So what I’ll do is I’ll just change the construction method that’s being used here. And let’s make it a let’s get frameless like so and go back cool.
So I might want to, whenever this floating vanity is set to true, I might want to have CABINET VISION removed the nailer, make that back scribe 0, and in this case I might want to be using a thicker material for the back of the cabinet.
So instead of doing that in the UCS, I totally can do that if I wanted to. I could create all of this logic in that UCS to remove these parts I don’t want. I’ll show you another really cool feature of CABINET VISION.
If I go to this section view and I go to properties and I’m going to open up the construction, now if I go to modify for this assembly, I could make changes to the construction method and what I could do is use Conditions
So that if CABINET VISION recognizes that this vanity cabinet has the FLOATINGVANITY turned to true (1), then it might make changes in the way it constructs this cabinet.
So if I go to the Conditions, I’m going to create a new condition. And the name here is just for my reference, so I might just go F-VANITY, like so, now condition here this is going to match the condition we created in the UCS.
So what I’m going to write is FLOATINGVANITY==1 Then, I’m going to click and make that Ok…
Now, if I click on the nailer, for instance, and I scroll across till I find this is the question related to whether the nailer exists at top nailer, I might want to keep the default there for my vanity cabinets when they’re touching the ground.
Then if I click on this + sign and Conditions, you’ll see this new condition that we just created is there. When I click on it, I can now tell Cabinet Vsion I would like there to not be a top-nailer.
So I could click OK. Now ideally, if we want to create conditions in our construction methods that we’ll use in all of our projects, we’d make it on the system level.
That menu before we click on ‘New Job’ or ‘Open Job’. You could, running your tests, set up the settings you want to make here and then click Save as System, and it will save it back to the system level.
But I want to show you what’s happening, so I’m going to update the assembly with those changes, click End, and you’ll see that now the nailer has disappeared from this cabinet.
If I toggle between true and false, you’ll see when it’s set to false, it’s going to follow the standard of the construction method, which includes a nailer, and when it’s set to that condition will remove it.
Now let’s do the same thing with scribe at the back. So what I’m going to do is go back to the section properties construction modify for this assembly…
Then we’ll go to the unfinished back which is in the interior case… unfinished back. Let’s scroll across to we find the sitting related here.
So at the moment the space between the wall and the unfinished back, our back scribe is set to the thickness of the nailer.
But if it’s set to a F-VANITY, I would like the unfinished back to touch the wall. We’ll click OK, OK, like so, and then we’ll go to the end.
So now when we toggle between false, the standard true, there’s no nailer and the scribe at the back is set to zero.
Now of course at the moment, I might want to fix like the thickness of the material that’s being used for the back.
So go to properties, construction, find the materials, modify for this assembly, then under case, interior, unfinished back.
At the moment, it’s set to that quarter-ply material, let’s make it match the parent, go return, update, Ok, and then we go to our end, you’ll see that we can toggle with that 5.8 material thick back.
And still true or false, it works a treat. We’re getting a really cool mixture of different parts of CABINET VISION working in tandem together.
Of course then we might want to look at, you know, the way the unfinished back meets the deck or the bottom of this cabinet or the assembly. We might want to look at what connections we’re using.
Again, those settings that are controlled in the construction method, so we just create exceptions or special instances when that FLOATINGVANITY condition is being used.
Of course, there are all different ways that we might want to build a floating vanity cabinet, but hopefully with the tools that you’ve learned today and you’ll be able to practice.
You can create your own floating vanity UCS and create conditions within the construction method so that it matches exactly what you need it to do in CABINET VISION.
So with a quick review of everything we talked about today in our UCS’s which are those custom codes we use to start to modify and control different behavior in the program.
We usually begin a UCS with a FOR EACH statement which helps CABINET VISION understand which objects it should be looking at in particular.
We then use IF/THEN/END IF and if conditions or this condition itself so that we can introduce different circumstances for CABINET VISION to check, different settings for CABINET VISION to check, and then tell what actions CABINET VISION needs to do if those conditions are met.
We also saw how we can introduce conditions within the construction method so that we can use some of the settings of the construction method and the UCS together.
And in the next episode of this series we are going to look at how we can indicate which direction the doors are opening on our cabinets on our labels.
That’s a question that a lot of different viewers have had, and we’re going to show you how you can write your own UCS.
But using the tools you’ve learned today, why not have a crack at writing it yourself, and if you have any questions about what you saw, leave them down below.
