# PLaSK User Manual

#### Page Contents

- Shelf2D Class
  - `Shelf2D`
  - Methods
  - Attributes
  - Descriptions
    - Method Details
      - `Shelf2D.align_zero_on()`
      - `Shelf2D.append()`
      - `Shelf2D.append_gap()`
      - `Shelf2D.contains()`
      - `Shelf2D.get_leafs()`
      - `Shelf2D.get_leafs_bboxes()`
      - `Shelf2D.get_leafs_positions()`
      - `Shelf2D.get_leafs_translations()`
      - `Shelf2D.get_matching_objects()`
      - `Shelf2D.get_material()`
      - `Shelf2D.get_object_bboxes()`
      - `Shelf2D.get_object_positions()`
      - `Shelf2D.get_paths()`
      - `Shelf2D.get_role_objects()`
      - `Shelf2D.get_roles()`
      - `Shelf2D.has_role()`
      - `Shelf2D.index()`
      - `Shelf2D.insert()`
      - `Shelf2D.modify_objects()`
      - `Shelf2D.object_contains()`
      - `Shelf2D.prepend()`
      - `Shelf2D.set_zero_before()`
      - `Shelf2D.validate()`
    - Attribute Details
      - `Shelf2D.bbox`
      - `Shelf2D.dims`
      - `Shelf2D.flat`
      - `Shelf2D.role`
      - `Shelf2D.roles`
      - `Shelf2D.steps`

# Shelf2D Class

class plask.geometry.Shelf2D(shift=0)

  2D container that organizes its items one next to another.

  The objects are placed in this container like books on a bookshelf. The left side of the first object is located at the shift position in container local coordinates. Each consecutive object is placed to the right of the previous one. All the items are vertically aligned according to its bottom edge.

  Parameters:

    shift (float) – Position in the local coordinates of the left side of the shelf.

  See also

  Function `plask.geometry.Shelf()`.

## Methods

`align_zero_on`(...) | Align zero with the horizontal position `pos` of the specified item.
`append`(item) | Append a new object to the shelf.
`append_gap`(size) | Add a gap to the end of the shelf.
`contains`(...) | Test if the geometry object contains a point.
`get_leafs`([path]) | Get list of the geometry tree leafs.
`get_leafs_bboxes`([path]) | Calculate bounding boxes of all the geometry tree leafs.
`get_leafs_positions`([path]) | Calculate positions of all the geometry tree leafs.
`get_leafs_translations`([path]) | Get list of `Translation` objects holding all the geometry tree leafs.
`get_matching_objects`(cond) | Get list of the geometry tree objects matching condition.
`get_material`(...) | Get material at the given point.
`get_object_bboxes`(object[, path]) | Calculate bounding boxes of all instances of specified object.
`get_object_positions`(object[, path]) | Calculate positions of all instances of the specified object.
`get_paths`(...) | Get subtree containing paths to all leafs covering the specified point.
`get_role_objects`(role) | Get list of the geometry tree objects that have the specified role.
`get_roles`(...) | Get roles of objects at specified point.
`has_role`(...) | Test if the specified point has a given role.
`index`(item[, path]) | Return index of the given item.Args: object: Object which lower edge should lie at height 0.
`insert`(item, pos) | Insert a new object to the shelf.
`modify_objects`(callable) | Modify all objects in the geometry tree.
`object_contains`(...) | Test if the specified geometry object contains a point.
`prepend`(item) | Prepend a new object to the shelf.
`set_zero_before`(item[, path]) | Set zero to the left the specified item.
`validate`() | Check if the object is complete and ready for calculations.

## Attributes

`bbox` | Minimal rectangle which contains all points of the geometry object (in local coordinates).
`dims` | Number of object's dimensions (int, 2 or 3).
`flat` | True if all items has the same height (the shelf top edge is flat).
`role` | Role of the object.
`roles` | List of all the roles of the object.
`steps` | Step info for mesh generation for non-uniform objects.

## Descriptions

### Method Details

Shelf2D.align_zero_on(item, pos)
Shelf2D.align_zero_on(item, path)
Shelf2D.align_zero_on(item)
Shelf2D.align_zero_on(item, path, pos)

  Align zero with the horizontal position `pos` of the specified item.

  This method shifts the local coordinates of the stack horizontally. The horizontal coordinate of the shelf origin is placed at the local position `pos` of the specified item (0 by default).

  Parameters:

    - item – Shelf item which lower edge should lie at height 0.

    - path – Path specifying a particular item instance.

    - pos – Local position of the specified object to place at shelf zero.

Shelf2D.append(item)

  Append a new object to the shelf.

  This method adds a new item to the shelf and places it at its right.

  Parameters:

    item (GeometryObject2D) – Object to append to the stack.

Shelf2D.append_gap(size)

  Add a gap to the end of the shelf.

  This method adds a gap to the end of the shelf. All consecutive items will be separated by the specified width from the previous ones.

  Parameters:

    size (float) – Size of the gap (µm).

Shelf2D.contains(c0, c1)
Shelf2D.contains(point)

  Test if the geometry object contains a point.

  Parameters:

    - point (plask.vector) – Vector with local coordinates of the tested point.

    - c0 (float) – Horizontal local coordinate of the tested point.

    - c1 (float) – Vertical local coordinate of the tested point.

  Returns:

    True if the geometry object contains the given point.

  Return type:

    bool

Shelf2D.get_leafs(path=None)

  Get list of the geometry tree leafs.

  This method returns all the geometry tree leafs located under this geometry object. By leaf we understand a proper geometry object, in contrast to any container or transformation.

  Parameters:

    path – Path that can be used to select only some leafs.

  Returns:

    List of translations of the leafs.

  Return type:

    sequence

  All these methods are guaranteed to return their sequences in the same order: `get_leafs()`, `get_leafs_bboxes()`, `get_leafs_positions()`, `get_leafs_translations()`.

Shelf2D.get_leafs_bboxes(path=None)

  Calculate bounding boxes of all the geometry tree leafs.

  This method computes the bounding boxes of all the geometry tree leafs located under this geometry object. By leaf we understand a proper geometry object, in contrast to any container or transformation.

  The bounding boxes are computed in the local coordinates of this object.

  Parameters:

    path – Path that can be used to select only some leafs.

  Returns:

    List of vectors containing the position of the leafs.

  Return type:

    sequence

  All these methods are guaranteed to return their sequences in the same order: `get_leafs()`, `get_leafs_bboxes()`, `get_leafs_positions()`, `get_leafs_translations()`.

Shelf2D.get_leafs_positions(path=None)

  Calculate positions of all the geometry tree leafs.

  This method computes position of all the geometry tree leafs located under this geometry object. By leaf we understand a proper geometry object, in contrast to any container or transformation.

  The position are computed in the local coordinates of this object.

  Parameters:

    path – Path that can be used to select only some leafs.

  Returns:

    List of vectors containing the position of the leafs.

  Return type:

    sequence

  All these methods are guaranteed to return their sequences in the same order: `get_leafs()`, `get_leafs_bboxes()`, `get_leafs_positions()`, `get_leafs_translations()`.

Shelf2D.get_leafs_translations(path=None)

  Get list of `Translation` objects holding all the geometry tree leafs.

  This method computes the `Translation` objects of all the geometry tree leafs located under this geometry object. By leaf we understand a proper geometry object, in contrast to any container or transformation.

  The translations are computed in the local coordinates of this object.

  Parameters:

    path – Path that can be used to select only some leafs.

  Returns:

    List of translations of the leafs.

  Return type:

    sequence

  All these methods are guaranteed to return their sequences in the same order: `get_leafs()`, `get_leafs_bboxes()`, `get_leafs_positions()`, `get_leafs_translations()`.

Shelf2D.get_matching_objects(cond)

  Get list of the geometry tree objects matching condition.

  This method returns all the objects in the geometry tree that match the specified condition.

  Parameters:

    cond – Python callable that accepts a geometry object and returns Boolean indicating whether the object should be returned by this method or not.

  Returns:

    List of objects matching your condition.

  Return type:

    sequence

Shelf2D.get_material(c0, c1)
Shelf2D.get_material(point)

  Get material at the given point.

  This method returns a material object with the material at the given point if this point is located within the geometry object self. Otherwise the method returns None.

  Parameters:

    - point (plask.vector) – Vector with local coordinates of the tested point.

    - c0 (float) – Horizontal local coordinate of the tested point.

    - c1 (float) – Vertical local coordinate of the tested point.

  Returns:

    Material at the specified point or None.

Shelf2D.get_object_bboxes(object, path=None)

  Calculate bounding boxes of all instances of specified object.

  The bounding boxes are computed in the local coordinates of self.

  Parameters:

    - object – Object to test.

    - path – Path specifying a particular object instance.

  Returns:

    List of bounding boxes of the instances of the object.

  Return type:

    sequence

  All these methods are guaranteed to return their sequences in the same order, provided they are called with the same arguments: `get_object_bboxes()`, `get_object_positions()`

Shelf2D.get_object_positions(object, path=None)

  Calculate positions of all instances of the specified object.

  The position are computed in the local coordinates of self.

  Parameters:

    - object – Object to test.

    - path – Path specifying a particular object instance.

  Returns:

    List of vectors containing the position of the instances of the object.

  Return type:

    sequence

  All these methods are guaranteed to return their sequences in the same order, provided they are called with the same arguments: `get_object_bboxes()`, `get_object_positions()`

Shelf2D.get_paths(point, all=False)
Shelf2D.get_paths(c0, c1, all=False)

  Get subtree containing paths to all leafs covering the specified point.

  Parameters:

    - point (plask.vector) – Vector with local coordinates of the tested point.

    - c0 (float) – Horizontal local coordinate of the tested point.

    - c1 (float) – Vertical local coordinate of the tested point.

    - all (bool) – If True then all the leafs intersecting the point are considered. Otherwise, only the path to the topmost (i.e. visible) object is returned.

  Returns:

    Subtree with the path to the specified point.

  See also

  `plask.geometry.Subtree`

Shelf2D.get_role_objects(role)

  Get list of the geometry tree objects that have the specified role.

  This method returns all the objects in the geometry tree that have the specified role.

  Warning

  This method will return the very object with the role specified and not its items, which is against the normal behavior of the roles.

  Parameters:

    role (str) – Role to search objects with.

  Returns:

    List of objects matching your condition.

  Return type:

    sequence

Shelf2D.get_roles(c0, c1)
Shelf2D.get_roles(point)

  Get roles of objects at specified point.

  This method returns a set of all the roles given to the every object intersecting the specified point.

  Parameters:

    - point (plask.vector) – Vector with local coordinates of the tested point.

    - c0 (float) – Horizontal local coordinate of the tested point.

    - c1 (float) – Vertical local coordinate of the tested point.

  Returns:

    Set of the roles at given point.

  Return type:

    set

Shelf2D.has_role(role, point)
Shelf2D.has_role(role, c0, c1)

  Test if the specified point has a given role.

  This method checks if any object intersecting the specified point has the role role.

  Parameters:

    - point (plask.vector) – Vector with local coordinates of the tested point.

    - c0 (float) – Horizontal local coordinate of the tested point.

    - c1 (float) – Vertical local coordinate of the tested point.

  Returns:

    True if the point has the role role.

  Return type:

    bool

Shelf2D.index(item, path=None)

  Return index of the given item.Args: object: Object which lower edge should lie at height 0. path: Path specifying a particular item instance.

Shelf2D.insert(item, pos)

  Insert a new object to the shelf.

  This method adds a new item to the shelf and places it at the position specified by index.

  Parameters:

    - item (GeometryObject2D) – Object to insert to the shelf.

    - index (int) – Index of the inserted item in the stack.

Shelf2D.modify_objects(callable)

  Modify all objects in the geometry tree.

  This method calls `callable` on every object in the geometry tree. The `callable` takes a single geometry object as an argument and should return `None` (in which case nothing happens), a new object to replace the original one, or an empty tuple (which will result in the removal of the original object).

  Parameters:

    callable – a callable filtering each object in the tree

  Returns:

    modified geometry

  Return type:

    GeometryObject

Shelf2D.object_contains(object, path, point)
Shelf2D.object_contains(object, point)
Shelf2D.object_contains(object, path, c0, c1)
Shelf2D.object_contains(object, mesh)
Shelf2D.object_contains(object, c0, c1)
Shelf2D.object_contains(object, path, mesh)

  Test if the specified geometry object contains a point.

  The given geometry object must be located somewhere within the self geometry tree.

  Parameters:

    - object – Object to test.

    - path – Path specifying a particular object instance.

    - point (plask.vector) – Vector with local coordinates of the tested point.

    - c0 (float) – Horizontal local coordinate of the tested point.

    - c1 (float) – Vertical local coordinate of the tested point.

    - mesh (plask.mesh.Mesh) – Mesh, which points are tested.

  Returns:

    True if the specified geometry object contains the given point.

      If a mesh is tested, the return value is an array of bools.

  Return type:

    bool

Shelf2D.prepend(item)

  Prepend a new object to the shelf.

  This method adds a new item to the shelf and places it at its left.

  Parameters:

    item (GeometryObject2D) – Object to append to the stack.

Shelf2D.set_zero_before(item, path=None)

  Set zero to the left the specified item.

  This method shifts the local coordinates of the stack horizontally. The horizontal coordinate of the shelf origin is placed at the left edge of the specified item.

  Parameters:

    - item – Shelf item which left edge should lie at 0.

    - path – Path specifying a particular item instance.

Shelf2D.validate()

  Check if the object is complete and ready for calculations.

  This method is specific for a particular object. It raises an exception if the object definition is somehow incomplete.

### Attribute Details

Shelf2D.bbox = <property object>

  Minimal rectangle which contains all points of the geometry object (in local coordinates).

  See also

  `plask.geometry.Box2D`

Shelf2D.dims = <property object>

  Number of object’s dimensions (int, 2 or 3).

Shelf2D.flat = <property object>

  True if all items has the same height (the shelf top edge is flat).

Shelf2D.role = <property object>

  Role of the object. Valid only if the object has only one role.

Shelf2D.roles = <property object>

  List of all the roles of the object.

Shelf2D.steps = <property object>

  Step info for mesh generation for non-uniform objects.

  This parameter is considered only for the non-uniform leafs in the geometry tree. It has two attributes that can be changed:

  `num` | Maximum number of the mesh steps in each direction the object is divided into.
  `dist` | Minimum step size.

  The exact meaning of these attributes depend on the mesh generator, however in general they indicate how densely should the non-uniform object be subdivided.

  It is possible to assign simply an integer number to this parameter, in which case it changes its `num` attribute.