Atom Select

Atom->Select is used for two different things: 1) to set an atom as the current object (the object that is moved, rotated, scaled with the mouse); 2) to select a whole list of atoms that can be subsequently modified or removed using Atom->Modify or Atom->Remove.

To set an atom as the current object, click the mouse over its visual representation. When an atom is recognized, a beep is emitted and the atom identification is shown in the window status bar, first in a highlighted color (to emphasize that the current object has changed) and then in the default color (after a few seconds).

Only atoms in the working layer can be chosen as current object, even if atoms are visible in other (transparent or translucid) layers. For each top window, only one current object is maintained. This can be Gamgi (everything), Window (the current window), Layer (the current layer), or a child object of the current layer. The identification of the current object is always visible in the window statusbar.

A faster method to set an atom as current object, without using the Atom->Select dialog, is to click over Atom on the main menu with the second mouse button, and then click over the atom visual representation.


List always shows a flat list of all the atoms available in the current Scope. For each atom, a hierarchical tree shows all its child objects.


This sets the initial List of candidate atoms, presented on the left, from where the atoms will be selected. Five options are available: Gamgi (atoms in all windows), Window (atoms in the current window), Layer (atoms ins the current layer), Before (the previous list of selected atoms) and Current (the current list of selected atoms).

The list Before allows users to undo possible mistakes and is removed everytime Atom->Select closes. The list Current is the real thing, the list of atoms that is saved for further action when Atom->Select is closed. When list Current is not empty, the Atom label on the main menu shows a different color, to signal that a list of atoms has been selected.

By default GAMGI always shows the list Current, except when this list is empty (for example the first time Atom->Select is called). In this case GAMGI starts with the list Layer.

Thus the new list Current is usually prepared selecting objects from the existing list Current. This gives users a simple and effective way to prepare complex lists of objects, by entering successive filtering conditions and pressing Ok each time. The list Current thus obtained will be shorter and shorter and will comply with all the conditions entered before.

When Scope is not Current, the selected objects that are not yet members of the list Current are added to the beginning of that list. Thus the list Current can be reduced by successive filtering conditions of the Current list or increased by successive additions from objects in other Scope lists.


When Action is set to Include (the default), the next Current list is formed by the atoms that have been selected in the visible List on the left, using any available Method. When Action is set to Exclude, the next Current list is formed by the atoms that have not been selected in the visible List.


There are many different techniques to indicate which atoms should be included or excluded to the list Current. The combo box Method sets which technique should be used: 1) Pick, select one atom each time, either pressing Ctrl and clicking on the atom visual representation on a graphic area or pressing Ctrl and clicking directly on the atom tree row on the List; 2) Region, select all atoms in a rectangle in a graphic area (TODO); 3) one of the 17 remaining methods, representing all the available atom properties.

In this case, for each property, a range of values should be entered in entries Min and Max. When the value in Min is larger than the value in Max, GAMGI swaps the two limits, issues a warning, and completes the task. When Min is empty, only the Max condition is applied. When Max is empty, only the Min condition is applied. When both Min and Max are empty all values are accepted.

These properties can be combined to get the desired selection. For example, to select a set of atoms between (x0, y0, z0) and (x1, y1, z1) just apply the property X between x0 and X1, then Y between y0 and y1 and Z betweeb z0 and z1.

When no conditions are specified, by defaults all atoms are included or excluded, according to the Action chosen. For example, to disable entirely a list of atoms previously selected, just open Atom->Select, change Action to Exclude and press Ok: the color of the Atom label on the main menu changes to the default color, signaling that no list of atoms exists.