- Type
- Scope
- Projection
- View

Set here the atomic structure to include, and the range
of directions to create, for a given crystallographic family.
### Structure

It is often useful to recreate in a direction the atomic
structure existing in the parent object. A list is first
created, with all the atoms closer to the direction than
the distance defined by **Thickness**.
### Filter

After collecting a list of atoms close enough to the direction,
a filtering condition may be applied. This can be very useful
to avoid atom superposition, resulting for example from atoms
copied before to different directions.
### Thickness

The line representation of the direction is expanded as much as
possible, limited by the cell volume, in crystallographic directions,
and by the atoms within a **Thickness** range of the direction
defined by the two atoms, in atomic directions.
### Node

A direction can be defined indicating explicitly the coordinates of a node
where the direction passes. For each direction family, there is a direction
passing through the origin node and as nodes are equivalent, it follows
that for any node, there is a direction of any family passing through there.
### o1, o2, o3

These entries provide the coordinates of the node in the lower-left
corner of the cell where the direction passes, calculated with conventional
or primitive cell vectors. When the lattice is primitive or vectors are
primitive, this corner node becomes the place where the direction passes.
### o4

When the lattice is centered and vectors are conventional, a fourth
coordinate **o4** is needed to point the centered node where the direction
passes. By default, **o4** is **000**, so no change is introduced.
When the cell lattice is primitive **P** or the vectors defining the
node are primitive, that is the only possible value for **o4**.
For I, C, F, R centered lattices, **o4** can also take the values:
**I** lattices, (1/2 1/2 0) for **C**
lattices, (0 1/2 1/2) (1/2 0 1/2) (1/2 1/2 0) for **F**
lattices and (1/3 2/3 2/3) (2/3 1/3 1/3) for **R** lattices.
### Range

A set of directions to create can also be defined automatically, with two
plane families belonging to the direction zone axis. Defining a range for
each plane family, the intersection of the two ranges of planes defines
an infinite volume, aligned along the direction orientation. All directions
of the family that fall inside this volume should be created. For directions
[001], for example, the planes paralel, belonging to the direction axis,
can be for example (100) and (010), as determined by the Weiss equation:
hu + kv + lw = 0. For a cubic primitive lattice cP, a range (0 to 1) for
planes (100) and a range (0 to 2) for planes (010) results in a volume
containing 2x3 = 6 crystallographic directions [001]. To select a range
of directions, press **Range**, to open a second level dialog.
### Family

For each plane family, enter the indices **h**, **k**, **l**.
Each set of indices must obbey the Weiss zone equation, when combined
with the direction indices, otherwise an error is shown.

When **Structure** is set to **Copy**, listed atoms
are copied to the atomic or crystallographic directions just created.
When **Structure** is set to **Link**, listed atoms
are linked to the atomic or crystallographic directions just created.
When **Structure** is set to **None**, only a line
representation of the direction is created, without atoms.

When **Filter** is set to **Class**,
atoms belonging to another directions are ignored.
When **Filter** is set to **Child**, atoms not
belonging directly to the direction parent are ignored.
When **Filter** is set to **Identical**, atoms
closer than a given distance (currently **1.0E-2**,
as defined in **GAMGI_MATH_TOLERANCE_STRUCTURE**) to
a previous atom are ignored.
When **Filter** is set to **None**, no filtering
condition is applied.

By default, only the direction passing through the origin is represented,
with node coordinates **o1**, **o2**, **o3**, **o4**, equal
to **0**, **0**, **0** and **000**, respectively.

The vectors used for the node coordinates, **Conventional**
or **Primitive**, are those used to define the plane indices,
in the **Type** page, of the first dialog.

corresponding to the numerators of the inner node coordinates, (1/2 1/2 1/2) forI:111C:110F:110,101,011R:211,122

Each plane of a family (h k l) intersects the lattice in n/h n/k n/l, where
n = 0 means the plane passing through the origin and n = 1 is the usual
representation of the plane closest to the origin. The range of planes to consider
is defined by the values entered near to the buttons **Start** and **End**,
describing the initial and final values of n. For example, setting **Start**
to **-1** and **End** to **1** defines a range with 3 planes,
intersecting the axes in: 1) -1/h -1/k -1/l; 2) 0; 3) 1/h 1/k 1/l.

Pressing the **Start** button, the entry is disabled and GAMGI considers
automatically all the planes from the beginning of the cell volume to the
final plane specified. Pressing the **End** button, the entry is disabled
and GAMGI considers automatically all the planes from the end of the cell volume
to the first plane specified. When both buttons are pressed, GAMGI considers
automatically all the planes from the beginning to the end of the cell volume,
so all directions inside the cell volume will be created.

After entering the plane ranges, pressing **Ok** saves the data,
closes the second level dialog, and disables the node information in
the first level dialog. Pressing **Cancel**, the current data in
both dialogs is maintained and the second level dialog is closed.

Pressing **Node** in the first level dialog, removes the second
level data, closes the second level dialog, enables and initializes
(if empty) the node data.

The vectors used for the node coordinates, **Conventional**
or **Primitive**, are those used to define the plane indices,
in the **Type** page, of the first dialog.

When adding information in the second level dialog, the direction indices
and the cell must have been entered before, so GAMGI can check if the
information is correct. For the same reason, when **Cell**, **u**,
**v**, **w**, or **Vectors** changed in the **Type** page,
all the information in the second level dialog is automatically discarded,
as it might be wrong.