Complexity: Multibody follow up
The multibodies issue seems to be generating some interest, so let’s stick with that. One reader asked for a tutorial on multibodies, which I have to admit, I hardly know where to start.
First,the multibody discussion has to be divided into solids and surfaces. A single solid body is anything that is a contiguous volume – so one set of boundary faces encloses the whole thing. I think this is one of those things that’s easier to understand intuitively rather than trying to give a mathematical definition of it. If you extrude two rectangles that don’t touch or overlap, you would get two bodies. You can cut a single body into multiple bodies using features like Cut or Split or Combine.
Every time you create a solid feature that adds material (with some exceptions, like the first feature in a part), there is this Merge Result option that is automatically checked. That means if the new feature touches any existing solid bodies, it will join together with those bodies to create a single body. Solids in SolidWorks do this by default.
Surfaces are different, though. Surface bodies do not have volume, only surface area. Even if you create a single surface body that is water tight and encloses a volume, SolidWorks understands a difference between a body classified as “surface” and one classified as “solid”. A solid body is really just a surface body that satisfies some additional conditions:
- water tight
- no gaps or overlaps (all faces meet edge-to-edge)
- face normals all point in the same direction (understands the difference between “inside” and “outside”
Some people feel a little mystified by “surfacing” terminology, but once you understand that solids are really just surfaces that follow special rules, I think that makes it more understandable.
Solids can be converted into surfaces (by using delete face), portions of solids can be copied to create surfaces (using Offset Surface or Knit Surface), and surfaces can be converted into solids (thicken, knit, fill features have tools to do this), and surfaces can be used to edit solids (replace face, cut with surface, split, up to surface or up to body end conditions).
Just to say that surfaces can be bodies too, in fact, solids are just special cases of surfaces.
But, surfaces have a different set of assumptions from solids. First of all, in SolidWorks merging two surface bodies into one is done by the Knit feature, and surfaces can only be knit when they touch at open edges. If you surface extrude two lines that touch at a point, you get a single surface body, but if you extrude each of those lines separately, you will get two surface bodies. Most surface features do not have the equivalent of a “merge” option like the solid features have, with one exception. The Fill feature will knit itself with any surface bodies it touches, and can even make a solid if the resulting body meets the requirements. It can also merge directly into a solid similar to the Replace Face feature. Too many details.
What you really need to watch for is the folder for solids or surfaces in the FeatureManager. You can turn these on permanently at Tools>Options>FeatureManager. Other wise, they are supposed to just show up when there are surface bodies or solid bodies present in the model. In practice, this automated behavior doesn’t always work, so I just turn them on permanently.
This is just some of the intro info you need in order to work with bodies. The next thing you need to know is “why”.
With surface bodies, the “why” question is easy. Surfaces can be used in several ways. I use them as reference geometry or as interim model faces. So a surface is usually either a face that will eventually get integrated into a solid body by the end of the feature tree, or it is a tool used to create other geometry that will get used in the final solid body.
Solid bodies are used in the same ways, but also have other uses. A lot of SolidWorks features require solids for certain tasks. For example, you can put a fillet on a surface body, but you can’t put a chamfer on a surface. This little gem has cost me dearly.
With bodies, you can insert one part into another to use as reference, or as a tool body for a feature like Combine, Indent, or Deform Surface Push. You can pattern bodies and join them later to improve performance over patterning features. You can model two different areas, and then model a bridge between them.
Other little facts about working with multiple bodies:
- you can’t draft or fillet edges from multiple bodies in a single feature, but you can use a cut or a number of other features on multiple bodies
- if you create a rib and then roll the model back before the rib and add a body, the rib will fail when unrolled
- you can use a face fillet to fillet between different surface bodies, but no other kind of fillet
- 4 ways to insert one part into another
- you can copy and move bodies, but if you just copy a body without moving it, SolidWorks gives you a warning
- you can show the features used in bodies by right clicking on a body folder
- bodies can be hidden, shown, colored, change display modes, and other stuff with the Display Pane (flyout from top of FeatureManager)
I’ve written books on this stuff, I feel like I’m writing them again here in the blog.
The one thing that I warn against is modeling what should be an assembly as a multibody. Sometimes this argument gets violent, especially when coming from people new to the software. Not to say that this couldn’t change, but the software works in a certain way. It does not follow your imagination. If you want to work differently, you have of course the opportunity to use any software you want, but you will not make SolidWorks work differently just by feeling very intensely that it “should” work differently.
There are some things that SolidWorks multibodies just do not do:
- motion between bodies
- BOMs. you can create cutlists, like for weldments or multibody sheet metal, but trying to apply this to a general multibody model that should have been an assembly is probably a losing battle unless you willing to make some concessions.
- interference detection
- clearance detection
- features for all bodies are all jumbled up in one linear feature tree. this alone makes modeling an assembly as a part a very bad idea
I’m sure I’ve forgotten more than I’ve remembered.
Plus, there are always exceptions. Stuff like Weldments and Molds. Weldments and Molds are two things that SolidWorks has implemented as multibody operations. I guess this is ok. At first I was very against creating molds as multibodies, but the alternative is in-context, which is a worse option. There are arguments both ways for Weldments, but I don’t actually work with weldments at all, so I have to say that I see both sides, and don’t think one way is hands-down the best approach in all situations.
And then there is the bit about drawings. Not to far back, SolidWorks added the ability to show individual bodies on drawings without the added complexity of using configurations to remove the unused bodies. This is another one I haven’t worked with extensively, but in simple cases I see that it does work. There are several reasons I would never do this, though. First, it’s just sloppy. Second, the main compelling reason to use it would be to use model dimensions on the drawing, which I almost never do, because I rarely model something with the same dimensions I would use for manufacturing or inspection drawings.
Someone mentioned using multibody parts as a way to cut down on the number of file to keep track of. Why not use virtual components in an assembly? Virtual components are another of the “cheap and sleazy” tools that you can use, but you will eventually find their drawbacks. I think they are more valid than multibody assemblies because at least you have separate feature managers. But you can’t reuse them. And you can’t make drawings of virtual parts, well, aside from the crazy workaround of making an assembly drawing and hiding all the other parts.
And for those who want to just do it because you can:
When I say that I recommend against doing things a certain way, or make fun of noobs who want to use stuff in ways its not supposed to be used, it’s not because I’m older than 25, or because I’m in a philosophical rut or whatever reason you want to assign. It’s just because there are too many drawbacks. If you think you can deal with the drawbacks, then you’re free to learn the lesson for yourself. Maybe the price you pay for using backdoor methods is acceptable, and maybe one day you’ll come to the same conclusion, after making a lot of mistakes and working through a lot of nasty models, fixing your own and others mistakes. I have the tendency to have to learn things for myself. So I’ve made all of these mistakes. I’ve made models using awful methods. Sometimes I learned something useful, and sometimes that was just to not do it that way again.
It might be that with a future version of some software somewhere, someone will program more flexible ways for solving the problems we solve with multibodies today. But if you are using SolidWorks today, it’s best to draw inside the lines if you are doing anything other than just experimenting to find the limits of CAD.
For me,.. ~80% of all I have ever designed in pro/e or solidworks is using a skeleton/master model or a layout with curves/surfaces or multibody… and using data sharing (pro/e) or insert part (sometimes splitpart). I still think incontext assembly modeling is a pita.
As a one-man-band product designer that can take projects through to production I do find that there is often a use for multibody assemblies at the conceptual stage. When under intense time pressure it is often quicker to split parts (caseworks etc.) in the same file, add internal components and then use configurations and e-drawings to demonstrate the build up of the assembly to clients etc.. When alternatives or ‘what if’ scenarios are called for, again I find it more expedient to save as a new version and then implemate the changes without having to save alternatives of each component (there may be dozens of assembly variants). When taking the project on from concept however I would then build up ‘clean’ individual parts in separate files.
I’ve had tremendous problems with parts built with inserted bodies (say, to use a surface feature or some other item as internal reference). The inserted bodies will not stay constrained to their insert constraints. Or, if moved/copied and “mated” to their various positions, some of those mates will arbitrarily be ignored by SolidWorks. This has caused me huge grief in the recent past.
Why would I do such a thing?
Well, in my case, I had a master part model broken into four main housings. However, two of these housings had mold cores pulled at a 45° angle from the other two housings. To save time (ostensibly), I saved out the part shells and detailed them in their individual part files. In starting the detailing, I open a new part and import my shell body (that was saved as a part from my master part) and reorient the imported body by 45° about the major planes. I do this to avoid the hassle of fighting with sketch snaps, etc. through the rest of the part build—and if the body would stay where it was put, this would be a great means of saving time. However, because the body will arbitrarily choose which “mates” to obey and which to ignore, all the features built upon the positioned body (which is all of them) subsequently fail when the body arbitrarily moves its position. This causes immense frustration, since the “mate” is supposedly solved already, and tends not to react well during attempted edits. This is a highly unstable circumstance, and one of the weaknesses of using multi-body modeling practices within SolidWorks.
And by the way, this is generally the very territory a good VAR will be of no help with. Bugs aren’t solved by VARs. (They’re solved by my own odd work-around hacks, and perhaps the right conglomeration of prayer and cussing.)