Written by: Ryan Cole, Application Engineer
Recently, Dave Kramer wrote a great article on handling large assemblies. If you haven’t seen the article, you should really check it out! I wanted to dovetail in on what he wrote about with a different technique that I have played with over the last couple of years. Just like the careers of many engineers and designers that I know, it all started with LEGO building blocks!
I have a fairly extensive library of SOLIDWORKS LEGO blocks that I have been curating for about ten years now. I took great care in modeling them up due to the fact that I wanted to use PhotoView 360 to render the models and make them look real. Through the years, my models have gotten progressively larger and larger. The first being about 325 pieces and my last project being 5700 pieces! While I was technically playing, I did set some real goals with the last large build. The goal was to create as efficient of an assembly as possible with SOLIDWORKS. The Millennium Falcon was, in fact, my pride and joy out of this. Here are some specs:
- 5,600 pieces, not including the Sub-assemblies
- ~17,000 mates (mostly Concentric and Coincident, with some limit mates here and there)
- ~100 hours total build time
- Opening time: less than one minute (48 seconds on 2016), this is fully resolved and NO light-weight components!!!
Here are a couple of images of the model rendered out:
My goal was efficiency and, by the opening and rebuild times, I would say that I achieved it! Most of the saved time came from how I handled the mates. There are a couple schools of thought that I have run across on handling large assemblies:
- Have all mates in the assembly
- Pro: Assembly updates correctly and accordingly to component updates
- Con: Holy cow, Batman! Ridiculous opening and rebuild times
- Fix all the components and delete the mates
- Pro: Super-fast opening and assembly rebuild
- Con: A change might entail the user floating parts, re-mating them and then deleting mates again. That seems efficient!
What I ended up doing was a hybrid of both. If a component doesn’t move after it was mated (think about it, they’re not called “interlocking block systems” for nothing!), I would fix the component. A long time ago if you did this, the mates would blow up and go all red. Sometime along the way SOLIDWORKS made it that if you fixed a component, then the mates for that component would become suppressed. In fact, you can see this in the tree if this condition exists, the mates have (f) next to them:
This is where the bulk of my speed comes from, not rebuilding mates! Or, at least mates that aren’t “needed”. Anything that moves is still floating and its mates are still active. Here are some of my findings on this methodology:
- Pro: Lightning fast on open and rebuild
- Pro: Mates are still available, just not active
- Con: When changes are needed a little extra time is spent floating components
- Con: The user needs to be a little familiar with the assembly to know what to float
In my mind, the extra time needed to make updates is surpassed by the quick rebuilds and opening time. I have worked on other assemblies of this size and complexity with the opening times getting up into the half-hour range and the rebuilds sometimes taking longer. This assembly gets opened more than it is changed so the payoff is pretty significant!
This techniques isn’t for everyone and everything out there. But it has worked for me on quite a few things. I would love some feedback or questions on this if you have any!