Simplify components in SketchUp



Im using sketchup to design models used for acoustic simulations. Often we receive Arcitectual models (IFC, .rvt etc) and we use sketchup to simplify the models before exporting them to the acoustic simulation software. A problem with these arcitectual models is that they normally contain unnecessary details (for us acousticians) which slows down our calculations dramatically. Take for instance a single door, which often contains over 200 entities in the arcitect model, but in my model I need this to be a single rectangel with 5 entities. My question is if there is anyway to select all doors/windows (different sizes) and replace them with a simple rectangel (1 face, 5 entities)? I know about the thomthom cleanup plugin, but this doesnt cut it for me when I have a lot of doors and windows. I have tried to export only the doors and windows into software such as meshlab for simplification, but with no luck. I have also tried Artisan but this is also not satisfactory.


have you ever looked at Fredo’s GhostComp]( extension…

also, if you can supply an example .icf and .skp of of the same, there may be another way of auto converting using ruby scripting…



The Ghostcomp almost worked perfectly. The only problem is that the bounding box surrounding the components is tilted compared to the actual component (watch the GIF), which results in a tilted ghost component (not fitting my walls. Any Idea how i can set the bounding box of the component in line with the component?


Tried your link, @john_drivenupthewall john, but it didn’t connect for me.

Searched SketchUcation Plugin Store, and found this instead:


Normally, by using R-click on component / Change Axes, and resetting them parallel to a principal direction in the component. If that doesn’t work, try uploading here a part of the model where it’s a problem.


did you try option 4 rather then the BoundingBox…

a Simplified copy of the component (keeping a limited number of the largest faces)

on Safari, both mine and yours work and point to the same place…

if I had a sample file, I would write code that filters out the doors and windows and reduces it to a single face…

there is some example code I posted on the forum for painting all the different materials, which could be adapted…



The R-click/change axes did the work in terms of the bounding box, but since I have 440 doors and 300 windows changing the axes for all of them would be very time consuming. Any idea how to get around this problem also?:wink:


Thanks for all the replies! I just uploaded a small portion of my model. If you could write a code that filters out doors/windows and reduces them to single faces that would be great for this and all future projects! I tried option 4 in ghostcomp, but not satisfactory. I lost some of the door frame (i need the ghost component to be exact the same size as the original so that i dont get any holes in my model).

test2.skp (2.4 MB)


You should only have to change one of each different type, assuming that they are components. And if they aren’t, they should be made into components!


The bounding boxes are generally parallell to the original x-y plane in the model, meaning that all doors which are NOT parallell to either X-plane or Y-plane (most of them are not) will have tilted bounding boxes (different angels for each door/window). All doors and windows are components, Also I dont get the option to change axes when I select more then one component.


You only need to select one and edit that one. All the others will match - if they are components, not copies of a group.

The bounding boxes will stay on the component edges, if the component axes are correctly positioned. However they are rotated in the model.

Replying from my phone now, but when at computer will have a look. Does your test model show the problem? If not, please upload a part of the model that does.


Great. The test model shows the problem.


Why are all the components unique. You only have a few different component sizes but each is an individual.

Edit, answered by John below.


John, in an .ifc import, each instance has an unique definition, based on the global axis…

you have to mine the definition entities and then decide how to treat them…

this gif shows finding the Window and Door edges…

the next step is to test if it’s faster to replace all with a new definition or make a section cut and delete the entities…

not sure which would win atm…



Ah. As I’ve never used IFC, and don’t understand it, I was not being helpful. Sorry. ‘Above my pay grade’ I’m afraid. I can see now why it needs some sort of programmatic solution.



do all your models come in with ‘broken’ doors, or do you run a cleanup plugin that removes the tops and sills?

if you can PM me an original .ifc I can try from a better starting point…

atm: making them all scaled components and you only edit one of each, may be the easier option…

EDIT: just realised you had run Ghost script already…
can you add the original .skp


#17 (1.5 MB)

This part should be without the ghost script


is this any faster?

it renames and replaces components axes so if the largest face size and base name match, they get converted to instances…

a lot less to edit…

once like this, it may be possible to further process, but broken geometry causes issues…

currently it ignore problems…



this looks interesting. Is this something I can do as well? Are you using a script to do this?


at the moment it’s a ‘proof of concept’ script that I may develop into an extension, if there’s enough interest…

for your end use do you need:

the walls, floors and ceilings processed as well?

the original ‘shared’ axis reinstated after simplification?

particular materials for different surface types?

what would be useful for me is a ‘start .icf’ and it’s ‘end product’ .skp, that’s been completed manually…

if you share those it may speed up the development of something worth your testing [if your prepared to]…

I have an idea for reducing everything to single faces, but solid cuboids would be better if a single ‘solid’ shell was a desired outcome…

it’s much faster without the ‘show’ I’m using for testing, but it lets me see it’s working and makes for better gifs…