Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations LittleInch on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Strange move behavior in Assembly

Status
Not open for further replies.

CNSZU

Mechanical
Joined
Sep 2, 2005
Messages
318
Location
TW
Hello all,

Please see the attached image to visualize the issue.

First image: An assembly consisting of a large block and a small block. The assembly contains 1 constraint which is a Touch Align constraint between the large and small block. When using the Move Component command on the small block, it moves independently from the large block, as expected.

Second image: The same assembly as the first, but contains an additional parallel constraint between the large block and the YZ datum plane. Here is where the problem happens: when using the Move Component command on the small block, both the small block and the big block move together! This is not what I want and is totally illogical. There is no constraint in the assembly which dictates that the small block is "glued" to the big block. I want the small block to move independently from the large block.

What should I do to change this behavior?

NX8.5 Win7SP1 64bit i7-3770K@4.3Ghz 16GB Quadro2000
 
The problem is not only with Parallel constraint. The same happens, if you use Distance constraint, or Touch/Align, etc. As soon as you place a constraint, the box starts to move.
But if I place Fix constraint, then it works. The big box stays at its position, while the small one is moving.

I guess that this should be reported to GTAC.
 
I'm sorry, but there's really nothing to report to GTAC. This is just the way these sorts of constraint solvers work.

When there was only a single constraint, the 'Touch/Align', you could have moved either block and the other would not have moved (as long as the movement was parallel, that is, in the same plane as the two referenced faces) since there was only a single possible result. However, when the second constraint was added, even though it was such that it didn't prevent the original motions, again those in the plane of the faces referenced by the 'Touch/Align', but since there are now more than one constraint it also means that there are now more than one possible solution, and in a system like Assembly Constraints where there are NO hierarchical (AKA, parent/child) relationships, only peer-to-peer, all possible solutions are considered valid. The system just picked one. However, there is a way of forcing the system to only pick that solution which will, under normal circumstances (in this case, if the desired motion was parallel to the faces referenced by the 'Touch/Align' constraint) affects only the selected Component. Just go to the 'Settings' section of the 'Move Component' dialog and toggle ON the 'Move Selected Component Only' option. Now this will still only have an effect IF the attempted move is one which will actually be allowed, which in this case are only those movements which would be parallel to those faces referenced by the original 'Touch/Align' constraint.

I know it seems complicated and not always intuitive, but it's just the way a network of simultaneous equations are solved, and the solvers used in NX for such things as Sketch and Assembly Constraints work in this manner.

Another approach is to do as SvenBom suggested, Fix one of the Components and you will now have only a single possible solution (actually the Fix just removes one from the list of possible solutions which in this case reduced it back to the original situation where there was only a single solution).

Anyway, I hope this helped.

John R. Baker, P.E.
Product 'Evangelist'
Product Engineering Software
Siemens PLM Software Inc.
Industry Sector
Cypress, CA
Siemens PLM:
UG/NX Museum:

To an Engineer, the glass is twice as big as it needs to be.
 
Thanks John, I turned on the "Move Selected Components Only" option, and it will work in the situation described in the second image. However, there is a case where it won't work (see attached image) where the same assembly contains 1 constraint which is Align between the left surfaces of both blocks. Now, it's impossible to move the small block towards the right (YC direction). However, turning the option off will cause both blocks to move simultaneously, as they should.

Fixing one of the components is troublesome and prone to error, so I guess the solution I will adopt is to have the "Move Selected Components Only" option turned on, and if it doesn't work, turn it off. At least I now know that it's an issue with the solver and not something I've been overlooking.

NX8.5 Win7SP1 64bit i7-3770K@4.3Ghz 16GB Quadro2000
 
 http://files.engineering.com/getfile.aspx?folder=e68eb9e9-e706-42dc-ad3f-52af7d282136&file=assembly2.png
If you'll note in my response I had stated "Now this will still only have an effect IF the attempted move is one which will actually be allowed, which in this case are only those movements which would be parallel to those faces referenced by the original 'Touch/Align' constraint.". And in your new example since the direction of the your attempted move is NORMAL to the plane of the referenced faces, and not PARALLEL, it's not an "allowed" move. Toggling ON the 'Move Selected Components Only' option does NOT turn off or override the assigned constraints, it simply forces the system to only use those soultions which are valid for the single 'selected' component.

As for your comment about the use, or in your case, the likely non-use of the 'Fix' constraint, please be aware that while you technically do NOT have to have at least one Component 'Fixed', it's still highly recommended. Otherwise there is no way to keep your overall assembly from moving away from it's origin or to not shift it's orientation. Granted, you can add additional constraints relative to some stationary CSYS object, but this will generally require more than one constraint whereas a 'Fix' is an end in itself. This brings up another issue; generally speaking, many people avoid having a CSYS in their assemblies as this is just one more item that they have to 'manage' if this Assembly is added to another higher-level Assembly as a sub-Assembly. In fact, if you open the default, out-of-the-box Model Assembly template part (File -> New...) you will see that it does NOT contain a CSYS feature, only the WCS, unlike the default Modeling template which does. Also, if you're going to be doing any WAVE linking inside this Assembly or between parts in this Assembly and other parts, unless you're able to use 'position independent' linking, the spatial location and orientation of the parent models can be critical, so again, the reason that we recommend that at least ONE Component be 'Fixed' as this reduces the chances that something gets moved unintentionally.

Also note that unlike in the old Mating Conditions, where the first Component placed was assumed to be 'Fixed', with Assembly Constraints I can always delete a 'Fix' constraint and assign it to some other Component if needed or I can even have more than one component with a 'Fix' constraint, something that can be quite useful is you're modeling a mechanism with more than one 'Fixed' axis of rotation, something that was impossible with Mating Conditions.

Anyway, again I hope this adds to your understanding of what's happening here.

John R. Baker, P.E.
Product 'Evangelist'
Product Engineering Software
Siemens PLM Software Inc.
Industry Sector
Cypress, CA
Siemens PLM:
UG/NX Museum:

To an Engineer, the glass is twice as big as it needs to be.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top