Strange move behavior in Assembly
Strange move behavior in Assembly
(OP)
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?
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





RE: Strange move behavior in Assembly
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.
RE: Strange move behavior in Assembly
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.
RE: Strange move behavior in Assembly
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
RE: Strange move behavior in Assembly
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.