The spin button, available in physical mode, allows rotation of boxes, polygons, and wires by an arbitrary angle, and subcells and labels by multiples of 45 degrees. If no objects are selected, the user is requested to select an object. With the object selected, the user is asked to click on the origin of rotation. The selected objects are ghost-drawn, and rotated about the reference point as the pointer moves.
If the Constrain angles to 45 degree multiples check box in the Editing Setup panel from the Edit Menu is checked, the angle will be constrained to multiples of 45 degrees. Pressing the Shift key will remove the constraint. If the check box is not checked, holding the Shift key will impose the constraint. Thus the Shift key inverts the effect of the check box. However, if the selected objects include a subcell or label, the angle will always be constrained to multiples of 45 degrees. The Constrain45 variable tracks the state (set or unset) of the check box.
During rotation, the angle is displayed in the lower left corner of the drawing window. The readout defaults to degrees, pressing the `r' key will switch to radians, and pressing the `d' key will switch back to degrees. Pressing the spacebar will toggle between radians and degrees.
At this point, one can click to define the rotation angle, or an absolute angle can be entered on the prompt line. To enter an angle, either press Enter or click on the origin marker, then respond to the prompt with an angle in degrees. In either case, the rotated boundaries of the selected objects are attached to the pointer, and new objects can be placed by clicking. Ordinarily, the original objects will be deleted, however if the Shift key is held while clicking, the original objects are retained. Instead of clicking, one can press the Enter key, which will simply rotate the selected objects around the reference point.
When the spin command is at the state where objects are selected, and the next button press would establish the rotation origin, if either of the Backspace or Delete keys is pressed, the command will revert the state back to selecting objects. Then, other objects can be selected or selected objects deselected, and the command is ready to go again. This can be repeated, to build up the set of selections needed.
At any time, pressing the Deselect button to the left of the coordinate readout will revert the command state to the level where objects may be selected to rotate.
The undo and redo operations (the Tab and Shift-Tab keypreses and Undo/Redo in the Modify Menu) will cycle the command state forward and backward when the command is active. Thus, the last command operation, such as setting the angle by clicking, can be undone and restarted, or redone if necessary. If all command operations are undone, additional undo operations will undo previous commands, as when the undo operation is performed outside of a command. The redo operation will reverse the effect, however when any new modifying operation is started, the redo list is cleared. Thus, for example, if one undoes a box creation, then starts a rotation operation, the ``redo'' capability of the box creation will be lost.
It is possible to change the layer of rotated objects. During the time that newly-rotated objects are ghost drawn and attached to the mouse pointer, if the current layer is changed, the objects that are attached can be placed on the new layer. Subcells are not affected.
How this is applied depends on the setting of the LayerChangeMode variable, or equivalently the settings of the Layer Change Mode pop-up from the Set Layer Chg Mode button in the Modify Menu. The three possible modes are to ignore the layer change, to map objects on the old current layer to the new current layer, or to place all objects on the new current layer. If the current layer is set back to the previous layer before clicking to locate the new objects, no layers will change.
Note that this operation can change boxes to polygons and vice-versa. The rotation can be performed by clicking or dragging, however an angle can only be entered textually if the clicking mode is used.