Skip to content
This repository was archived by the owner on Mar 1, 2025. It is now read-only.

Commit 7bd8423

Browse files
committed
Assembly: Joint creation presolve: move part2 rather than part1 when both are unconnected.
1 parent 1289997 commit 7bd8423

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

src/Mod/Assembly/JointObject.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -706,43 +706,43 @@ def preSolve(self, joint, savePlc=True):
706706
part2Connected = assembly.isPartConnected(part2)
707707
joint.Activated = True
708708
else:
709-
part1Connected = False
710-
part2Connected = True
709+
part1Connected = True
710+
part2Connected = False
711711

712-
if not part2Connected:
712+
if not part1Connected:
713713
if savePlc:
714-
self.partMovedByPresolved = part2
715-
self.presolveBackupPlc = part2.Placement
714+
self.partMovedByPresolved = part1
715+
self.presolveBackupPlc = part1.Placement
716716

717-
globalJcsPlc1 = UtilsAssembly.getJcsGlobalPlc(joint.Placement1, joint.Reference1)
718-
jcsPlc2 = UtilsAssembly.getJcsPlcRelativeToPart(
719-
assembly, joint.Placement2, joint.Reference2
717+
globalJcsPlc2 = UtilsAssembly.getJcsGlobalPlc(joint.Placement2, joint.Reference2)
718+
jcsPlc1 = UtilsAssembly.getJcsPlcRelativeToPart(
719+
assembly, joint.Placement1, joint.Reference1
720720
)
721721
if not sameDir:
722-
jcsPlc2 = UtilsAssembly.flipPlacement(jcsPlc2)
722+
jcsPlc1 = UtilsAssembly.flipPlacement(jcsPlc1)
723723

724724
# For link groups and sub-assemblies we have to take into account
725725
# the parent placement (ie the linkgroup plc) as the linkgroup is not the moving part
726726
# But instead of doing as follow, we rather enforce identity placement for linkgroups.
727727
# parentPlc = UtilsAssembly.getParentPlacementIfNeeded(part2)
728728
# part2.Placement = globalJcsPlc1 * jcsPlc2.inverse() * parentPlc.inverse()
729729

730-
part2.Placement = globalJcsPlc1 * jcsPlc2.inverse()
730+
part1.Placement = globalJcsPlc2 * jcsPlc1.inverse()
731731
return True
732732

733-
elif not part1Connected:
733+
elif not part2Connected:
734734
if savePlc:
735-
self.partMovedByPresolved = part1
736-
self.presolveBackupPlc = part1.Placement
735+
self.partMovedByPresolved = part2
736+
self.presolveBackupPlc = part2.Placement
737737

738-
globalJcsPlc2 = UtilsAssembly.getJcsGlobalPlc(joint.Placement2, joint.Reference2)
739-
jcsPlc1 = UtilsAssembly.getJcsPlcRelativeToPart(
740-
assembly, joint.Placement1, joint.Reference1
738+
globalJcsPlc1 = UtilsAssembly.getJcsGlobalPlc(joint.Placement1, joint.Reference1)
739+
jcsPlc2 = UtilsAssembly.getJcsPlcRelativeToPart(
740+
assembly, joint.Placement2, joint.Reference2
741741
)
742742
if not sameDir:
743-
jcsPlc1 = UtilsAssembly.flipPlacement(jcsPlc1)
743+
jcsPlc2 = UtilsAssembly.flipPlacement(jcsPlc2)
744744

745-
part1.Placement = globalJcsPlc2 * jcsPlc1.inverse()
745+
part2.Placement = globalJcsPlc1 * jcsPlc2.inverse()
746746
return True
747747
return False
748748

0 commit comments

Comments
 (0)