When in doubt… Check the mates in your subassemblies!
-
I got inspiration for this little tip from a question sent to me while I was in Barcelona, last week. It wasn’t until now that I got a chance to take a look at it and send a reply, so I hope it wasn’t too late for the person that asked the question. Anyway, this person had a simple assembly in which a couple of pneumatic cylinders were mounted on two identical pillars (one on the left and one on the right), and they were mated to and pushing one side of a flat component that was mated to both pillars on its other side, like a hinge. The whole assembly reminded me of the slats and flaps in an airplane’s wing. As I said before, the assembly was a very simple one, all concentric and coincident mates, nothing out of the ordinary. However, for some strange reason, it was full of errors! The feature manager looked like a little Christmas tree and many of the mates had warnings or couldn’t find solutions at all…. But there was really nothing wrong with those mates!
The assembly contained a couple of flexible subassemblies, one for each cylinder, so I decided to take a look at them. When opened in their own windows, the subassemblies worked just fine, no errors, nothing was over defining them. So, what was wrong? I tried recreating the assembly from scratch, mating each component one by one, and it all worked fine until the moment I added (and mated) the second cylinder to the mix… I tried with the subassemblies as rigid, instead of flexible, just in case, but the same happened… Hmmm… But why? Both cylinders were identical! In the end, I came up with what I think may be the solution. Let me explain.
First of all, I didn’t want to post this person’s assembly here, just in case it was part of some private project, so I created another very similar example, only using a couple of rods as a subassembly, instead of the pneumatic cylinder. Notice how the assembly is full or errors, despite being so simple. And “What’s wrong?” doesn’t give me much information either. It would seem like most of my mates are over defining the assembly or can’t find a solution, just because.
Perhaps this will give away the answer that I came up with, but I do have to mention that the mates in this person’s subassembly included a Limit Distance mate to prevent the piston from popping out of the cylinder when the assembly was in motion. In order to recreate that in my subassembly, I added a Limit Angle mate between the two rods. When all components are put together, this limit angle mate should not only limit the movement of those two rods respective to one another, but it should also determine how much the flap can rotate around the hinged side.
So, did you figure it out yet? Yes? No? Well, something changed for the better when I suppressed the Limit Distance mate in one of the cylinders. Suddenly, after rebuilding the parent assembly, all the errors in all the mates were gone, just like that! A similar thing happened in my assembly.
In my assembly, I suppressed the Limit Angle mate in only one of the subassemblies. It was OK to leave it in the other subassembly, though.
So, I have this theory that it was precisely the Limit mate that was over defining the assembly, not because there is anything wrong with the mate, since it works great in the subassembly by itself, but because when all the mates get solved in the parent assembly, having the limit mate in both subassemblies (same ones that are mated to both sides of the flap) is almost the same as applying it twice to the same components. In fact, I did a little experiment eliminating the subassemblies and applying a limit mate directly between the flap and each pillar. I was able to apply one limit mate on one side, but when I tried to apply the second one, I got a warning that it would over define the assembly.
So, what do you think? Is my theory right or wrong? Has this ever happened to you?











March 9, 2009 at 12:18 pm
I’ve had exactly the same problem for months with an assembly that includes two pairs of cylinders. Everything is fine as long as I suppress one of each pair. I’ve become convinced that the way in which SolidWorks solves the limit distance mates is the problem.
September 29, 2008 at 7:15 am
I get this same problem quite offer when using Limit Mates. I use quite a few gas struts, accuators and hinges. Everthing will moves quite smoothly then out of no where a warning and error mates appear. This is common if I use a folding hinge (similar as you have) and a gas strut pushing. I find (most times) Ctrl Q rebuilds and errors are corrected.
September 26, 2008 at 12:37 pm
Thanks for the info! BTW, I was in a hurry yesterday when I answered your first comment and I swear I saw you had two of the bars constrained. Perhaps it’s because in my mechanism your horizontal bar is vertical for me, so it seemed to me that you had a vertical and a horizontal bar constrained. Anyway, I took a better look at your mechanism and you are right, it is the same. You are also right about the angle and the whole sketch getting overdefined if you try to make that angle a value of 10, for instance. However, I think this is not the reason why my assembly would become overdefined. See, try to model this using blocks or, better yet, model some bars of the same lenght of those you drew there and assemble them together. Then move the driver (L1) clockwise and observe how the mechanism behaves. When the driver and the horizontal bar are at an angle of around 30, the mechanism locks. A similar thing happens if you move the driver counterclockwise. This is the way the mechanism behaves, but unless you try to apply an ANGLE mate of less than 30 between the driver and the horizontal bar, the assembly shouldn’t become overdefined.
The mate that was applied in my assembly and in the one with the cylinders was a LIMIT mate. It limits the range of motion of two components in the assembly within two values, but it doesn’t constrain them to be any of those two values. Try applying a LimitAngle mate between the driver and the horizontal bar and you’ll see that this doesn’t overdefine the assembly either, even if you specify the limits as 0 to 50, for instance. All that you’ll see is that the driver can oscillate between 50 and 30 and that’s it. According to the limitangle mate, it could go all the way to 0, but because of the way the mechanism is designed, it will continue to lock at 30. Well, this is what I think, based on what I see, but I could be wrong too, of course.
If this is right, you could have one of these mechanisms pushing the flat component without causing the assembly to become overdefined, but when you add a second one (both of them with limit mates) that’s when it becomes overdefined and I think it is because SW interprets it as if you were trying to apply the same mate twice.
Like I said, I could be wrong.
September 26, 2008 at 4:55 am
this is what i found as the linkage for the wing flap mechanism. looks like two four-bar mechanisms coupled to each other.
http://i36.tinypic.com/23gzpfm.jpg
September 25, 2008 at 12:57 pm
I’m not exactly sure, but this guy’s assembly reminded me of the airplane wing because instead of the bars I used, it had pneumating cylinders pushing the flap. If you observe the wing of an airplane as it’s landing, you’ll see something very similar, although I’m not sure of the exact details. Would be interesting to find out.
September 25, 2008 at 12:49 pm
what is the mechanism of flaps in an airplane’s wing?
September 25, 2008 at 12:36 pm
Yeah, I know. If it had been the other way around, then you were right for sure!
September 25, 2008 at 12:34 pm
well, it’s hard to tell what the mechanism is from the photos.
September 25, 2008 at 11:59 am
Valid observation, except that’s not really the mechanism I have there. I’m afraid you missed something about the bar on the bottom, if you notice. That bar is able to move, it doesn’t remain horizontal. It makes the whole difference. See what I mean?
September 25, 2008 at 11:04 am
this my openion, i could be wrong certainly:
http://i36.tinypic.com/24z8uol.jpg