Global Kitchen Cabinet Handles

Hi All,

I have waited a very long time to ask this question, however I have had some requests for this feature and I cannot find anything in the forum. If anyone knows of another topic regarding this then please let me know.

Please find attached “Global Kitchen Cabinet Handles”.skp.

There are many ways to do what I am trying to achieve, so I am open to hearing what other people are doing within their workflow and which suit them best. The Cabinets models attached do not yet have any handles created.

I would like to add 2 x sizes of handles (128mm and 320mm centers) to my Cabinets range. The purpose at the moment is for visual purposes only.

Options I am aware of currently:

  1. Create the range of handles as a DC for each Cabinet. This requires you to click on each Cabinet in the Kitchen and change the handles per Cabinet. I can create these already with my basic knowledge of macros. In my opinion, quite a slow process, however, it means you can choose the direction (horizontal or vertical) and size of the handle correctly to suit the size of the Cabinet selected.

  2. Have some kind of global macro or tool bar option created where after selecting all the cabinets in one go, you simply use some created tool or option to change all the handles in one go e.g all Cabinets to have 128mm center handles. In my opinion this is very fast, however, how would you then change only one Cabinet at a time to e.g. a wider 320mm centered handle to go onto a Drawers Cabinet say 900mm wide, when all the other Cabinets have smaller 128mm handles? Another question is how also would you change the direction of a handle from horizontal to vertical? Could this also be done individually after a global change?

Some Cabinets like Pantries for example would only have the larger 320mm handles, where as a Base Drawer Cabinet would have both 128mm & 320mm handles depending on the Drawer Cabinets width.

I’d be keen to hear from anyone about this.


Wolfgang from NZ

Global Kitchen Cabinet Handles.skp (220.3 KB)

This plugin might do what you want - though I haven’t used it, Eneroth’s plugins are generally well written and most are free:
Eneroth Component Replacer.

You can also use Reload to re-load any component in the model and replace it with another, but I seem to remember that works only one or more selected components - and if the handles are included in a larger component, you can only select them when you have the parent component opened for editing.

Thank you John, this could be a possible solution, I will have a deeper look at how this functions as it may work.

Regards Wolfgang

I am not able to view your .skp file because I have an older version of Sketchup Pro.

In any case you have explained your situation in a comprehensive manner and I hope my proposed solution can give you joy or partial joy at least. Native tools are all that is needed(no additional plug ins).

There are two things you need to remember in a nutshell regarding the positioning of your handles:

  1. Change the AXES position of your handles relative to your door/drawer size position as you see fit.
  2. Click the handles on your screen that you would like to change the size. Move to your Default Tray and look for Components. Once you have found the appropriate handle, right click it and choose replace selected.

Let’s assume you want to keep your drawer handles to be concentric and central to you drawer face, I would advise that you change your axes to the center of your handle for the 128 and 320mm handles. This will allow your handles to have equal spaces from either end and top top and bottom.

Doors - let’s assume you want an equal spacing from the top and side door of 50mm for your handles. You want this to be locked irrespective the size of your handle. You have to design a separate handles for your door with the axes moved to the top of the handle.

Apply step 2) for both the drawers and and doors once you identify the right handle

Incorrect, because …

Often hardware is within a DC nesting context(s). A user cannot use the native selection tool to choose all the handles in order to use the Component inspector right-click “Replace selected” command. Ie:

  1. The native Select Tool cannot choose instances in different entities contexts.

  2. The Component inspector’s right-click “Select Instances” command only selects instances within the active entities context.

Besides, he is quite clear in that he does not wish to do this tedious task manually. He is looking for a solution that includes automation to remove the complexity and tedious nature of the native workflow.

W.O. is going to need to write a Ruby “macro” or use a ready made plugin to do this. He cannot avoid it.

The “macro” will need to read and likely change Dynamic Attributes such as the spacing and orientation attributes for handles. This cannot be done manually across DC components because of a bug in the Dynamic Options feature that resets all of the attributes instead of only those a user wants to change.

So, again a Ruby “macro” will be required.

The suggested replacer extension is a manual solution and is not likely to be exactly what W.O. desires.

1 Like

John I forgot to mention, I will come back with a reply after I explore the plugin, as you and others may want to know how I got on.



Hi Barne, (I don’t know which is your first name Xolani or Barnabas).

Thank you for your reply and offering this solution. As Dan has answered to your email, your solution although a good one requires the user to have to click on each component, and what I am trying to achieve is both a universal and a semi universal option for handles to be changed with one click (I’m using one click loosely).

If you can imagine, after drawing an entire kitchen with many cabinets, I don’t want a user to have to click on every cabinet to change the handles, I would like only one mouse click (again loosely) to change all the handles in the kitchen (and then allow for some to be changed manually after the fact).



Thanks for your reply Dan, I will have a look at how the Eneroth component re placer functions once I get through my current workload, and come back to provide my follow up in the thread.

It may be that I will have to employ someone to create a macro for this.



Hi Wolfgang

You’re a good sport like I would expect from a Kiwi(like we call our NZ sports rivals here in South Africa)

Any of the names will do. Barne is easier to remember and pronounce for most people.

My BAD was not stating that my suggested solutions were NOT intended for DC. Looks like you have your mind made up about drawing all of your cabinets in DC’s? I have found that they do have their shortfall. Without going into the pro’s and cons of designing cabinets in DC’s or NOT, personally, I have settled on a hybrid system with the latter being dominant. I can change all of my handles with a different style handle in less than a minute for a reasonably sized kitchen. For my standards it’s good enough.

You probably are aware of this but I’ll put it out there maybe it can help somebody else who is interested in this topic. Let’s use drawers in this example. You have your component for a drawer face and your components for a handle. If you make them one component, you only need to click on one handle to change the rest of your drawer handles for that specific size drawer. This method is obviously applicable to doors of the same size. There tends to be a lot of repetition in my kitchen designs for eg 2 X 450’s, 2 X 900’s, 3 X 600’s etc making changing handles not such a hassle.

I look forward to how the Eneroth component replacer works for you. Perhaps you can tag me when you respond to Dan.

Sorry I could not be much help to you.

Have a good one well. Cheers

Thanks for clearing out the fog. I can see clearly now.

No problem, Barne. Talking out the details allows the scale to tip one way or the other.


1 Like

you can globally change using upload, or change individual via swap or options (the scale is then used in the replacement)

this is a handle placer idea in action (I had to scale door definitions, to have them in sync)

wrong video
ran into some editing trouble with the above DCs

To much work to get back to original scale, in fact likely out of sync anyway. Its a good idea to either work to the grey values or scale definition after forcing a size change with an attribute value not the same as the grey one. Groups become unstable when out of sync,

Keep in mind that the size changes are actually scale changes, so a surface stretches or shrinks, one can use Tig’s scale method or others to reset the surface.

Single level DCs can retain their name without automatic uniqueness. They can be retained in a working DC that references the parent. To save writing the same for each new cupboard type this can be inserted, The initial disposable wrapper is required to protect from overriding position and rotation values on insertion from an outside source

This shows the reload, replace and swap. Reload can change in a global context regardless of location any component with the same name (path?) this does not include unique ones. (hence the simple one level types) where as replace can only work in the same context and swap one at a time.

By far the best idea is Dan’s with extensions that require minimum input from the user

these are the component files:
Handle.skp (191.6 KB)
Modern_Curved_Metal_Bar_Cabinet_Pull_JSB.skp (43.2 KB)


Hi Phil,

Hows everything going with the new contract?

We are currently busy with the crunch time for orders before Xmas, so once we get over this I will come back to review what you have written.



Hi Phil,

Hope your keeping well and hope the new contract is going great guns!

We are finally over the Xmas rush for orders for the new year, and as mentioned, I wanted to respond to your message above to provide you and everyone with where I got with this handle situation.

After watching the video carefully, the concept of the handle wrapper is exactly the same as using the “save as” which eliminates the wrapper from a component (I discovered this early on when creating DC components), of which how you have used it here with handles is incredibly smart.

The handle swap out methods once the wrapper is part of the component is a great solution, and I will remember this when I design my own DC library in the future.

So after looking into what you have shown as a solution, what I have decided to do is, because the drawing I provide to Customers, along with the drawing our commercial Customers create themselves using our cabinets library, it that we will work with only one style handle for all drawings, as, the drawings are only conceptual and so one style 128mm bow handle changing to another style 128mm D handle wont really make much visual difference, as the models are viewed from far away anyway, and so the handles wont be seen close up; its more simply just to show a handle on the cabinet.

Another point is that at this stage, we are not exporting any data from the model to any hardware ordering output spreadsheets, and so, if we were, I would definitely build the wrapper into all the components, and then utilize the methods for changing them as you have shown.

The result I am going to be using is per the attached “Base 4 Alto Drawers test.skp” model. It simply uses two sized handles (128mm and 320mm centers) and then using a simple hidden macro. The customer has to change the size of every cabinet anyway while they are designing the kitchen, and we use a standard design/sale format when handles change from a 128mm to a 320mm for Base Drawers; (<599mm 128mm, >600mm 320mm), so this is automatically done for the customer without them having to worry about which sized handle they are supposed to order (speed is also a large factor for our commercial customers using our cabinets library).

Your solution was way more advanced and well thought out than the company I work for required as a solution, however as mentioned, I think its a brilliant solution so I will actually run some examples of it over my Xmas break (in between consuming ample amounts of Xmas mince pies and brandy) so I can learn an additional way to yield a different result.



Base 4 Alto Drawers test.skp (153.6 KB)