Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.

First time visiting? Here are some places to start:
  1. Looking for a certain topic? Check out the categories filter or use Search (upper right).
  2. Need support? Ask a question to our Community Support category.
  3. Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
  4. Be respectful, on topic and if you see a problem, Flag it.

If you would like to contact our Community Manager personally, feel free to send a private message or an email.

Resolving sticky limits in assembly mates


I've been trying to resolve this issue in a moderately sized assembly. There are two components that can only come so close together before the movement of one would cause movement of the other in a single direction. Imagine two boxes on top of each other (in Z). Lifting the bottom box would cause the top box to lift as well (if they are touching, otherwise no movement), but lowering the bottom box wouldn't cause the top box to also lower (at any point), vice versa for the top box. Lifting the top box wouldn't cause the bottom box to also lift (at any point), but lowering the bottom box would cause the bottom box to lower (as soon as they touch).

I've tried setting this up two different ways using either a planar or parallel mate with the limit tab. Essentially the two parts can be as far apart from each other (no maximum in Z) however they can only be a minimum of 2mm before they would need to move together (Z minimum = 2mm). However after reaching the minimum and the movement of one causing corresponding movement of the other (which is what I want), when trying to reverse direction (to cause separation) they 'stick' together. This is undesirable as I am trying to separate the parts. I know they can be separated as when I fix one and move the other (in the separation direction) they separate no problem.

Then sometimes they still move together when I unfix the fixed part, and sometimes they don't (potential bug?).

Any advice on resolving this "sticky-limit" situation would be much appreciated.


  • matthew_stacymatthew_stacy Member Posts: 431 PRO
    @Connor_LeCLaire, a slider mate with a limit is one approach to accomplish this.

    Set a limit such that Z_maximum = 0 (document link above).   Z_minimum is optional, depending on your design intent.  Use the triad to move the bottom "block" up or down.  The "cylinder" will rise with the block, but only after the two parts make contact.  The cylinder does not follow the block downward.

    Similarly the cylinder can drive the block, but only downward.  The Z_max = 0 limit basically prevents the two parts from overlapping one another.

    Does this work for you?

  • Connor_LeCLaireConnor_LeCLaire Member Posts: 18 PRO
    Hi @matthew_stacy, thanks for your response!

    The problem is a bit more complex, it's actually three (3) parts, a fixed part and two moveable parts. One of the moveable parts is slider-mated with the fixed part with a limit to the fixed part so it can't pass it in a single direction. The other part is plane-mated with the fixed part with some limits so it can move directly inline with the fixed part slider axis but no further in one direction (this is side-to-side) and then up and down without limit. It is also parallel mated with the other moveable part with a limit so it "pushes" it but won't "pull" it. The link to the document is here.

    It appears when moving the two moveable parts in Z, they have this 0.5x linear relation (which was not intended, there is no linear relation mate) until they make contact then the expected behavior occurs. I would like it so whichever part is not being actively moved by the user remains stationary until the limit is hit.

    It also appears that this unwanted behavior only occurs when clicking a moveable part and using the specific Z-axis movement arrow but not when click-dragging the part.

  • matthew_stacymatthew_stacy Member Posts: 431 PRO
    @Connor_LeCLaire, if you share the document or make it public I'll give it a shot.  It would be helpful to see the assembly in it's initial at-rest-condition.  Please include global x, y, and z directions in the description of how each part is supposed to move.

    It sounds like you may need to insert a sketch or other construction geometry to get this assembly functioning properly.
  • eric_pestyeric_pesty Member Posts: 1,204 PRO
    I looked at your shared document and see what you mean about the mates "sticking"...
    It's not actually violating any of the mate limits/constraints but it does seem a bit odd. I'm guessing it results from some internal Onshape behavior, I would submit a ticket to get Onshape to get them to explain why it's doing this as I can't think of a way to control that.

    You could temporarily "fix" one of the parts if you are trying to get it somewhere specific, or use named positions to represent specific states but I don't think you'll be able to just have it behave as you would want by just dragging unfortunately.
Sign In or Register to comment.