This class handles document objects in Assembly Solve the assembly and update part placements. solve(enableRedo=False) -> int Args: enableRedo: Whether the solve save the initial position of parts to enable undoing it even without a transaction. Defaults to `False` ie the solve cannot be undone if called outside of a transaction. Returns: 0 in case of success, otherwise the following codes in this order of priority: -6 if no parts are fixed. -4 if over-constrained, -3 if conflicting constraints, -5 if malformed constraints -1 if solver error, -2 if redundant constraints. Undo the last solve of the assembly and return part placements to their initial position. undoSolve() Returns: None Makes sure that LinkGroups or sub-assemblies have identity placements. ensureIdentityPlacements() Returns: None Clear the registered undo positions. clearUndo() Returns: None Check if a part is connected to the ground through joints. isPartConnected(obj) -> bool Args: document object to check. Returns: True if part is connected to ground Check if a joint is connecting a part to the ground. isJointConnectingPartToGround(joint, propName) -> bool Args: - joint: document object of the joint to check. - propName: string 'Part1' or 'Part2' of the joint. Returns: True if part is connected to ground Check if a part has a grounded joint. isPartGrounded(obj) -> bool Args: - obj: document object of the part to check. Returns: True if part has grounded joint Export the assembly in a text format called ASMT. exportAsASMT(fileName:str) Args: fileName: The name of the file where the ASMT will be exported.