I'm a designer/IT for a small company that assembles various structures using joints and pipe ~ 1 inch in diameter. We've always had performance issues with structures that approach ~ 1000 square feet or are relatively complicated. These structures typically consist of less than 30 parts. Moving, rotating, and mating parts becomes a process that takes 1 - 5 minutes per action.
Here's an example of something I designed recently. It doesn't fall into the ~1000 square feet category, but it's complicated enough to introduce some slow downs.
My question is if this is a solvable problem and is it solved by better hardware or better assembly habits?
Here are our computer specs:
2.4GHz i7-4700MQ
8GB RAM
GeForce GTX 765M
3.2GHz Xeon W3550
8GB RAM
Quadro 4000
Personally, when I assemble, I make our pipe parts virtual so my configurations remain in the assembly without the need for an external file. Our other designer makes a copy of the pipe part to hold his configurations. Is one way better/faster or is there any other solutions?
In terms of mating, I mate all of our joints first using concentric, distance, tangent, width, symmetric, then add the pipes last using up to surface extrudes between joints. I used to measure the distance between two joints and set that as the blind length of the pipe, but that usually makes making modifications to the assembly harder. Our other designer does a mix of blind and up to surface pipes, but doesn't typically use any of the advance mates. Again, is there a better way to increase performance?
Daniel, it's hard to know if this advice is applicable without seeing what your projects look like, but from your description, I have a couple of suggestions for improving the performance of your assemblies.
First, it sounds like you're working in a flat top-level assembly where every component is mated independently. Maybe that's not the case, but if you are making thousand part assemblies with only 20 or thirty moving components then you should take advantage of the opportunity to modularize your design into logical assemblies. When componnets are part of a subassembly, their mates don't have to solve at every rebuild of the top-level assembly (unless you make the subassembly flexible), so employing a heirarchy to your assembly structure provides speed benefits. It also gives you more opportunities to re-use groups of components.
The second thing I took from your description was that you're creating a lot of incontext relationships amoung components to cut and size parts. In conjunction with a flat assembly, solving all of those upto-surface conditions can spike your rebuild times. If you are modeling welded frames or just prefab frames, you should look at using the weldment functionality of parts to make parts of your structure. The interface makes generating those miter cuts much easier and rebuild times are much faster because part features solve in sequence instead of simultaneously. OK, even if you had to make a screened patio, where everything was screwed together with splice plates, I wold still model the frame as a weldment and then have SolidWorks generate parts from the bodies and assemble them as prefab components. That way don't t have to create all kinds of time dependent features.
Finally, if you're stuck working in a flat assembly model with individual parts for the structural members, I would create a 3Dsketch of the centerlines of the structure to serve as a skaffold for mating the components so that they're not mated to a structure that frequently needs to be rebuilt. This also helps to avoid circular references. This also allows you to do your extrudes upto vertex using the endpoints of the 3Dsketch segements and then use simple cuts from sketches to form your miters instead of having to land the full face of one tube against another.
Your methodology of creating your structural pieces as virtual components is sound. Just beware that virtual components have a couple of bugs that occasionally can cause file loss. It's not a huge deal if your assembly contains two virtual components with 3 features each, but if you put all of your eggs in that proverbial basket and one of these bugs manifests itself, it could cost you a lot of work.
Given the choice, I'd rather create a lot of virtual components over creatinga lot of part configurations. Configurations don't really reduce file size or rebuild times and if you don't know your parts design intent really well, editing a part with configurations can quickly turn it into a mess of errors. Configurations are great when your parts are very clearly defined in the abstract and you know what most if not all of your permutations are gonig to be, not so much for creating geometry as you go.