next up previous contents index
Next: Edit/Modify Menu Commands Up: Xic Variables Previous: Cell Menu Commands   Contents   Index


Editing General

The following !set variables affect general operations and parameters that apply during editing.

AskSaveNative
Value: boolean.
When set, the user will be prompted to save the current cell if the cell is modified, and would be saved as a native symbol, and a new current cell is about to be set. This was standard behavior in releases earlier than generation 4. Although it is always a good idea to save work periodically, the prompt can be annoying to experienced users and is now disabled by default. The user will be given the chance to save modified cells when exiting Xic in any case.

The Prompt to save modified native cells check box in the Editing Setup panel from the Edit Menu tracks the state (set or unset) of this variable.

Constrain45
Value: boolean.
When this boolean variable is set, wire and polygon vertices are constrained to form angles of multiples of 45 degrees. By default, a ``smart'' path generator is employed, which will construct a valid path to the pointer location from the previous point during wire or polygon construction. This will often add two vertices: a 45 degree extension, followed by a Manhattan extension, in order to connect the points. If the Ctrl key is held while the new point is defined, the ``smart'' feature is disabled, and only one new vertex is added. If the Shift key is held, then the 45 degree constraint is removed entirely.

When set, rotation angles available in the spin command, and translation angles in the Stretch command, and the vertex editors for polygons and wires, are constrained to multiples of 45 degrees. However, pressing the Shift key will remove the constraint in these commands while the key is held. If the Constrain 45 variable is not set, holding Shift will impose the 45 degree angle constraint. Thus, the Shift key inverts the effective state of the Constrain 45 variable in these commands.

The Constrain angles to 45 degree multiples check box in the Editing Setup panel from the Edit Menu tracks the state (set or unset) of this variable.

NoMergeObjects
Value: boolean.
This variable tracks the state of the Merge new boxes and polys with existing boxes/polys check box in the Editing Setup panel from in the Edit Menu in a logically inverted sense.

By default, when a new box or polygon object is created in the database from the commands in the side menu, the new object is merged with existing boxes and polygons on the same layer, if any touch or overlap, to form a (generally more complex) polygon in the database. New wires will link with existing similar wires in the database that share an endpoint.

If this boolean variable is set, this merging will be disabled. Merging can also be disabled on a per-layer basis with the NoMerge technology file keyword, which prevents merging in all cases on a layer.

The NoMergePolys variable can be set to prevent merging of polygons, and will thus revert the merging behavior to that of releases prior to 3.1.7.

When reading data from a layout file, a different box clipping/merging capability is controlled by the Clip and merge overlapping boxes setting in the Setup page or the Import Control panel, and the corresponding MergeInput variable.

NoMergePolys
Value: boolean.
When auto-merging new objects (NoMergeObjects is not set), only boxes will be clipped and merged, polygons will be ignored, if this variable is set. This reverts to the behavior of releases prior to 3.1.7.

This variable tracks the state of the Clip and merge new boxes only, not polys check box in the Editing Setup panel from the Edit Menu.

NoFixRot45
Value: boolean.
There are two modes when rotating boxes/polys by non-Manhattan angles. The default and legacy method is to use an offset technique referenced to the lower-left box coordinate, or the first vertex of polygons. This ensures that the same figure is generated at any location, and seems to ensure that all angles are exactly multiples of 45 or 90, after rotation, in boxes. However, this has the problem that two figures that abut before rotation might no longer abut after rotation. For example, use the !split function to split a disk, then rotate the collection by 45 degrees. It is likely that some of the figures no longer touch. If merging is enabled, the disk will have lines through it at these points, where the gaps prevented merging.

If NoFixRot45 is set, the offset fix is not done. This solves the problem of gaps appearing between rotated objects, but has its own problems. Namely, rectangles aren't preserved, angles can differ from 45s. Try rotating a small rectangle, say 3x5 internal units, by 45s in this mode, and one can see it is a mess. Larger rectangles are not visually distorted, but there are 1-unit errors in the vertex placements relative to preservation of 45s or 90s. This is probably not acceptable for most work.

Really, rotating by 45 degrees is something best avoided.


next up previous contents index
Next: Edit/Modify Menu Commands Up: Xic Variables Previous: Cell Menu Commands   Contents   Index
Stephen R. Whiteley 2022-05-28