Macro Rotate To Point

Description
Macro to rotate an object on itself with the axis of rotation being either the:
 * boundbox center
 * center of mass
 * direction of wire
 * last point clicked

Usage

 * 1) Download the macro from the Addon Manager
 * 2) Execute the macro
 * 3) Select one object
 * 4) Choose one of the following orientations:



Point Rotation

 * Boundbox Center: Select the BoundBox center to axis rotation
 * Center of Mass: Select the Center of Mass to axis rotation
 * Point Clicked: Select the last mouse click as the point for axis rotation
 * 1: select the object
 * 2: use the key to choose an extra object

Axis Rotation

 * Rotation(Z) Yaw: Yaw axis
 * Rotation(Y) Pitch: Pitch axis
 * Rotation(X) Roll: Roll axis
 * Rotation(D) Direction: Rotate around line, wire selected

Coordinates Point clicked

 * DoubleSpinBox: Coordinate X on mouse click (modifiable only with the mode "Point Clicked")
 * DoubleSpinBox: Coordinate Y on mouse click (modifiable only with the mode "Point Clicked")
 * DoubleSpinBox: Coordinate Z on mouse click (modifiable only with the mode "Point Clicked")

Work

 * If this checkBox is the rotation is disabled, the object placement is done on the axis selected.
 * One point is created for visualise the point rotation axis: red X, green Y, blue Z
 * Line Edit: The line edit displays the original coordinate to axis selected + the input data given in the spinBox
 * Enter the modification
 * Apply the modification to the object
 * The coordinate is displayed

Data

 * Window for display the coordinates memorized
 * Save the data in file
 * Delete and clean the text editor
 * Delete the selected line
 * Memorize and display the coordinate
 * Mode normal the coordinate is saved in this mode : [(0.06,1.30,0.0),(85.0,0.0,0.0)],
 * Mode macro  the coordinate is saved (one object or many objects worked) in a complete macro directly in your macros directory with the same name of the document extension .FCMacro
 * Options of the macro
 * __pompe____engrenage__ : Name of document
 * __22 Coordinates__ : number of coordinates
 * Type Key Q to Quit : Quit the macro
 * Type Key D to Decrease speed : Decrease the speed of the animation
 * Type Key I to Increase speed : Increase the speed of the animation
 * Type Key P to Pause/Continue or key RETURN or ESCAPE : Pause / Anime
 * Type Key S to Step by Step (key RETURN or ESCAPE to continue) : Step by Step
 * '''Type Key R to reverse
 * Type Key M for this message : Display this memo
 * ____________________________
 * Mode normal : The data is not saved on window, you must push the  button for save the coordinate
 * Mode Memo on Click : The data is automaticly saved with all click op the  button
 * Mode normal : The data is not saved on window, you must push the  button for save the coordinate
 * Mode Memo on Click : The data is automaticly saved with all click op the  button

Command

 * Quit the macro
 * After modifying the data of the object you can return to the original placement, If you have not deselected the current object.
 * This option places the object in base coordinate
 * Reset the data in the macro and deselect the current object (same mouse click in the 3D view)

Script
ToolBar PNG Icon and ToolBar SVG Icon

Details of the script Macro_Rotate_To_Point.FCMacro

Links
The forum feature req: placement - rotate part around its midpoint

My macro on Gist mario52a

Version
2021/03/08 version 00.010 : adding zoom on object clicked, memory value, imposted values

2021/02/25 Version=00.09 : correct the macro : cause multi object possible

App.ActiveDocument.getObject(p[0]).Placement instead myObject.Placement

2021/02/22 Version=00.08c : correct the center facePoint (19h26 Paris)

2021/02/22 Version=00.08b : correct the center facePoint (17h23 Paris)

2021/02/22 Version=00.08 : adding save macro with multi objects moved

2021/01/24 Version=00.07 : adding option R: reverse

2021/01/12 ver 00.06 : adding the Data section and more options

2020/03/07 ver 00.05.2 : correct the bug translation delete "direction = myObject.Placement.Rotation.multVec(direction)"

2020/03/01 ver 00.05.1 : correct the position of the test "FreeCAD version"

2020/02/29 ver 00.05 : convert to Hdpi (Layout) and add Direction

06/04/2019 ver 00.04 : Python 3

29/03/2018 ver 00.03 : comment the "FreeCAD.ActiveDocument.recompute" the change value are too slow with complex element in FreeCAD 0.17.... see FC0.17 recompute strange behaviour (regression)

27/03/2017 ver 00.02 : modify the spinbox "Pos" now accept the negative values

05/03/2017 ver 00.01 : add 3 spinbox for displayed the coordinates X Y Z on click mouse

04/03/2017 ver 00.00