Notation used in Ruby API documentation

**Module**: db

**Description**: A collection of edges (Not necessarily describing closed contours)

**Class hierarchy**: Edges » ShapeCollection

- Public constructors
- Public methods
- Public static methods and constants
- Deprecated methods (protected, public, static, non-static and constructors)
- Detailed description

This class was introduced to simplify operations on edges sets. See Edge for a description of the individual edge object. The edge collection contains an arbitrary number of edges and supports operations to select edges by various criteria, produce polygons from the edges by applying an extension, filtering edges against other edges collections and checking geometrical relations to other edges (DRC functionality).

The edge collection is supposed to work closely with the Region polygon set. Both are related, although the edge collection has a lower rank since it potentially represents a disconnected collection of edges. Edge collections may form closed contours, for example immediately after they have been derived from a polygon set using Region#edges. But this state is volatile and can easily be destroyed by filtering edges. Hence the connected state does not play an important role in the edge collection's API.

Edge collections may also contain points (degenerated edges with identical start and end points). Such point-like objects participate in some although not all methods of the edge collection class. Edge collections can be used in two different flavors: in raw mode or merged semantics. With merged semantics (the default), connected edges are considered to belong together and are effectively merged. Overlapping parts are counted once in that mode. Dot-like edges are not considered in merged semantics. In raw mode (without merged semantics), each edge is considered as it is. Overlaps between edges may exists and merging has to be done explicitly using the merge method. The semantics can be selected using merged_semantics=.

This class has been introduced in version 0.23.

new Edges ptr | new | Default constructor | |

new Edges ptr | new | (const Edge edge) | Constructor from a single edge |

new Edges ptr | new | (Polygon[] array) | Constructor from a polygon array |

new Edges ptr | new | (Edge[] array) | Constructor from an edge array |

new Edges ptr | new | (const Box box) | Box constructor |

new Edges ptr | new | (const Polygon polygon) | Polygon constructor |

new Edges ptr | new | (const SimplePolygon polygon) | Simple polygon constructor |

new Edges ptr | new | (const Path path) | Path constructor |

new Edges ptr | new | (const Shapes shapes, bool as_edges = true) | Constructor of a flat edge collection from a Shapes container |

new Edges ptr | new | (const RecursiveShapeIterator shape_iterator, bool as_edges = true) | Constructor of a flat edge collection from a hierarchical shape set |

new Edges ptr | new | (const RecursiveShapeIterator shape_iterator, const ICplxTrans trans, bool as_edges = true) | Constructor of a flat edge collection from a hierarchical shape set with a transformation |

new Edges ptr | new | (const RecursiveShapeIterator shape_iterator, DeepShapeStore dss, bool as_edges = true) | Constructor of a hierarchical edge collection |

new Edges ptr | new | (const RecursiveShapeIterator shape_iterator, DeepShapeStore dss, const ICplxTrans trans, bool as_edges = true) | Constructor of a hierarchical edge collection with a transformation |

new Edges ptr | new | (const RecursiveShapeIterator shape_iterator, string expr, bool as_pattern = true) | Constructor from a text set |

new Edges ptr | new | (const RecursiveShapeIterator shape_iterator, DeepShapeStore dss, string expr, bool as_pattern = true) | Constructor from a text set |

[const] | Edges | & | (const Edges other) | Returns the boolean AND between self and the other edge collection |

[const] | Edges | & | (const Region other) | Returns the parts of the edges inside the given region |

Edges | &= | (const Edges other) | Performs the boolean AND between self and the other edge collection | |

Edges | &= | (const Region other) | Selects the parts of the edges inside the given region | |

[const] | Edges | + | (const Edges other) | Returns the combined edge set of self and the other one |

Edges | += | (const Edges other) | Adds the edges of the other edge collection to self | |

[const] | Edges | - | (const Edges other) | Returns the boolean NOT between self and the other edge collection |

[const] | Edges | - | (const Region other) | Returns the parts of the edges outside the given region |

Edges | -= | (const Edges other) | Performs the boolean NOT between self and the other edge collection | |

Edges | -= | (const Region other) | Selects the parts of the edges outside the given region | |

[const] | const Edge ptr | [] | (unsigned long n) | Returns the nth edge of the collection |

[const] | Edges | ^ | (const Edges other) | Returns the boolean XOR between self and the other edge collection |

Edges | ^= | (const Edges other) | Performs the boolean XOR between self and the other edge collection | |

void | _create | Ensures the C++ object is created | ||

void | _destroy | Explicitly destroys the object | ||

[const] | bool | _destroyed? | Returns a value indicating whether the object was already destroyed | |

[const] | bool | _is_const_object? | Returns a value indicating whether the reference is a const reference | |

void | _manage | Marks the object as managed by the script side. | ||

void | _unmanage | Marks the object as no longer owned by the script side. | ||

void | assign | (const Edges other) | Assigns another object to self | |

[const] | Box | bbox | Returns the bounding box of the edge collection | |

[const] | Edges | centers | (unsigned int length, double fraction) | Returns edges representing the center part of the edges |

void | clear | Clears the edge collection | ||

[const] | unsigned long | count | Returns the (flat) number of edges in the edge collection | |

[const] | unsigned long | data_id | Returns the data ID (a unique identifier for the underlying data storage) | |

void | disable_progress | Disable progress reporting | ||

[const] | new Edges ptr | dup | Creates a copy of self | |

[const,iter] | Edge | each | Returns each edge of the region | |

[const,iter] | Edge | each_merged | Returns each edge of the region | |

void | enable_progress | (string label) | Enable progress reporting | |

[const] | EdgePairs | enclosed_check | (const Edges other, int d, bool whole_edges = false, Region::Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max) | Performs an inside check with options |

[const] | EdgePairs | enclosing_check | (const Edges other, int d, bool whole_edges = false, Region::Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max) | Performs an enclosing check with options |

[const] | Edges | end_segments | (unsigned int length, double fraction) | Returns edges representing a part of the edge before the end point |

[const] | Region | extended | (int b, int e, int o, int i, bool join) | Returns a region with shapes representing the edges with the specified extensions |

[const] | Region | extended_in | (int e) | Returns a region with shapes representing the edges with the given width |

[const] | Region | extended_out | (int e) | Returns a region with shapes representing the edges with the given width |

[const] | Region | extents | Returns a region with the bounding boxes of the edges | |

[const] | Region | extents | (int d) | Returns a region with the enlarged bounding boxes of the edges |

[const] | Region | extents | (int dx, int dy) | Returns a region with the enlarged bounding boxes of the edges |

void | flatten | Explicitly flattens an edge collection | ||

[const] | bool | has_valid_edges? | Returns true if the edge collection is flat and individual edges can be accessed randomly | |

[const] | unsigned long | hier_count | Returns the (hierarchical) number of edges in the edge collection | |

void | insert | (const Edge edge) | Inserts an edge | |

void | insert | (const Box box) | Inserts a box | |

void | insert | (const Polygon polygon) | Inserts a polygon | |

void | insert | (const SimplePolygon polygon) | Inserts a simple polygon | |

void | insert | (const Path path) | Inserts a path | |

void | insert | (const Edges edges) | Inserts all edges from the other edge collection into this one | |

void | insert | (const Region region) | Inserts a region | |

void | insert | (const Shapes shapes) | Inserts all edges from the shape collection into this edge collection | |

void | insert | (const Shapes shapes, const Trans trans) | Inserts all edges from the shape collection into this edge collection (with transformation) | |

void | insert | (const Shapes shapes, const ICplxTrans trans) | Inserts all edges from the shape collection into this edge collection with complex transformation | |

void | insert | (RecursiveShapeIterator shape_iterator) | Inserts all shapes delivered by the recursive shape iterator into this edge collection | |

void | insert | (RecursiveShapeIterator shape_iterator, ICplxTrans trans) | Inserts all shapes delivered by the recursive shape iterator into this edge collection with a transformation | |

void | insert | (Polygon[] polygons) | Inserts all polygons from the array into this edge collection | |

void | insert | (Edge[] edges) | Inserts all edges from the array into this edge collection | |

[const] | void | insert_into | (Layout ptr layout, unsigned int cell_index, unsigned int layer) | Inserts this edge collection into the given layout, below the given cell and into the given layer. |

[const] | EdgePairs | inside_check | (const Edges other, int d, bool whole_edges = false, Region::Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max) | Performs an inside check with options |

[const] | Edges | inside_part | (const Region other) | Returns the parts of the edges of this edge collection which are inside the polygons of the region |

[const] | Edges | interacting | (const Edges other) | Returns the edges of this edge collection which overlap or touch edges from the other edge collection |

[const] | Edges | interacting | (const Region other) | Returns the edges from this edge collection which overlap or touch polygons from the region |

[const] | Edges | intersections | (const Edges other) | Computes the intersections between this edges and other edges |

[const] | bool | is_deep? | Returns true if the edge collection is a deep (hierarchical) one | |

[const] | bool | is_empty? | Returns true if the edge collection is empty | |

[const] | bool | is_merged? | Returns true if the edge collection is merged | |

[const] | unsigned int | length | Returns the total length of all edges in the edge collection | |

[const] | unsigned int | length | (const Box rect) | Returns the total length of all edges in the edge collection (restricted to a rectangle) |

[const] | Edges | members_of | (const Edges other) | Returns all edges which are members of the other edge collection |

Edges | merge | Merge the edges | ||

[const] | Edges | merged | Returns the merged edge collection | |

void | merged_semantics= | (bool f) | Enable or disable merged semantics | |

[const] | bool | merged_semantics? | Gets a flag indicating whether merged semantics is enabled | |

Edges | move | (const Vector v) | Moves the edge collection | |

Edges | move | (int x, int y) | Moves the edge collection | |

[const] | Edges | moved | (const Vector v) | Returns the moved edge collection (does not modify self) |

[const] | Edges | moved | (int x, int v) | Returns the moved edge collection (does not modify self) |

[const] | Edges | not_interacting | (const Edges other) | Returns the edges of this edge collection which do not overlap or touch edges from the other edge collection |

[const] | Edges | not_interacting | (const Region other) | Returns the edges from this edge collection which do not overlap or touch polygons from the region |

[const] | Edges | not_members_of | (const Edges other) | Returns all edges which are not members of the other edge collection |

[const] | Edges | outside_part | (const Region other) | Returns the parts of the edges of this edge collection which are outside the polygons of the region |

[const] | EdgePairs | overlap_check | (const Edges other, int d, bool whole_edges = false, Region::Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max) | Performs an overlap check with options |

[const] | Region | pull_interacting | (const Region other) | Returns all polygons of "other" which are interacting with (overlapping, touching) edges of this edge set |

[const] | Edges | pull_interacting | (const Edges other) | Returns all edges of "other" which are interacting with polygons of this edge set |

Edges | select_inside_part | (const Region other) | Selects the parts of the edges from this edge collection which are inside the polygons of the given region | |

Edges | select_interacting | (const Edges other) | Selects the edges from this edge collection which overlap or touch edges from the other edge collection | |

Edges | select_interacting | (const Region other) | Selects the edges from this edge collection which overlap or touch polygons from the region | |

Edges | select_not_interacting | (const Edges other) | Selects the edges from this edge collection which do not overlap or touch edges from the other edge collection | |

Edges | select_not_interacting | (const Region other) | Selects the edges from this edge collection which do not overlap or touch polygons from the region | |

Edges | select_outside_part | (const Region other) | Selects the parts of the edges from this edge collection which are outside the polygons of the given region | |

[const] | EdgePairs | separation_check | (const Edges other, int d, bool whole_edges = false, Region::Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max) | Performs an overlap check with options |

[const] | EdgePairs | space_check | (int d, bool whole_edges = false, Region::Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max) | Performs a space check with options |

[const] | Edges | start_segments | (unsigned int length, double fraction) | Returns edges representing a part of the edge after the start point |

void | swap | (Edges other) | Swap the contents of this edge collection with the contents of another one | |

[const] | string | to_s | Converts the edge collection to a string | |

[const] | string | to_s | (unsigned long max_count) | Converts the edge collection to a string |

Edges | transform | (const Trans t) | Transform the edge collection (modifies self) | |

Edges | transform | (const ICplxTrans t) | Transform the edge collection with a complex transformation (modifies self) | |

Edges | transform | (const IMatrix2d t) | Transform the edge collection (modifies self) | |

Edges | transform | (const IMatrix3d t) | Transform the edge collection (modifies self) | |

[const] | Edges | transformed | (const Trans t) | Transform the edge collection |

[const] | Edges | transformed | (const ICplxTrans t) | Transform the edge collection with a complex transformation |

[const] | Edges | transformed | (const IMatrix2d t) | Transform the edge collection |

[const] | Edges | transformed | (const IMatrix3d t) | Transform the edge collection |

[const] | EdgePairs | width_check | (int d, bool whole_edges = false, Region::Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max) | Performs a width check with options |

[const] | Edges | with_angle | (double angle, bool inverse) | Filter the edges by orientation |

[const] | Edges | with_angle | (double min_angle, double max_angle, bool inverse, bool include_min_angle = true, bool include_max_angle = false) | Filter the edges by orientation |

[const] | Edges | with_length | (unsigned int length, bool inverse) | Filter the edges by length |

[const] | Edges | with_length | (variant min_length, variant max_length, bool inverse) | Filter the edges by length |

[const] | Edges | | | (const Edges other) | Returns the boolean OR between self and the other edge set |

Edges | |= | (const Edges other) | Performs the boolean OR between self and the other edge set |

[static,const] | Region::Metrics | Euclidian | Specifies Euclidian metrics for the check functions | |

[static,const] | Region::Metrics | Projection | Specifies projected distance metrics for the check functions | |

[static,const] | Region::Metrics | Square | Specifies square metrics for the check functions |

void | create | Use of this method is deprecated. Use _create instead | ||

void | destroy | Use of this method is deprecated. Use _destroy instead | ||

[const] | bool | destroyed? | Use of this method is deprecated. Use _destroyed? instead | |

[const] | Edges | in | (const Edges other) | Use of this method is deprecated. Use members_of instead |

[const] | bool | is_const_object? | Use of this method is deprecated. Use _is_const_object? instead | |

[const] | Edges | not_in | (const Edges other) | Use of this method is deprecated. Use not_members_of instead |

[const] | unsigned long | size | Use of this method is deprecated. Use count instead | |

Edges | transform_icplx | (const ICplxTrans t) | Use of this method is deprecated. Use transform instead | |

[const] | Edges | transformed_icplx | (const ICplxTrans t) | Use of this method is deprecated. Use transformed instead |

## & |
The boolean AND operation will return all parts of the edges in this collection which are coincident with parts of the edges in the other collection.The result will be a merged edge collection. | ||||||||||||||

This operation returns the parts of the edges which are inside the given region. Edges on the borders of the polygons are included in the edge set. As a side effect, the edges are made non-intersecting by introducing cut points where edges intersect. This method has been introduced in version 0.24. | |||||||||||||||

## &= |
The boolean AND operation will return all parts of the edges in this collection which are coincident with parts of the edges in the other collection.The result will be a merged edge collection. | ||||||||||||||

This operation selects the parts of the edges which are inside the given region. Edges on the borders of the polygons are included in the edge set. As a side effect, the edges are made non-intersecting by introducing cut points where edges intersect. This method has been introduced in version 0.24. | |||||||||||||||

## + |
This operator adds the edges of the other edge set to self and returns a new combined edge set. This usually creates unmerged edge sets and edges may overlap. Use merge if you want to ensure the result edge set is merged. | ||||||||||||||

## += |
This operator adds the edges of the other edge set to self. This usually creates unmerged edge sets and edges may overlap. Use merge if you want to ensure the result edge set is merged. | ||||||||||||||

## - |
The boolean NOT operation will return all parts of the edges in this collection which are not coincident with parts of the edges in the other collection.The result will be a merged edge collection. | ||||||||||||||

This operation returns the parts of the edges which are outside the given region. Edges on the borders of the polygons are not included in the edge set. As a side effect, the edges are made non-intersecting by introducing cut points where edges intersect. This method has been introduced in version 0.24. | |||||||||||||||

## -= |
The boolean NOT operation will return all parts of the edges in this collection which are not coincident with parts of the edges in the other collection.The result will be a merged edge collection. | ||||||||||||||

This operation selects the parts of the edges which are outside the given region. Edges on the borders of the polygons are not included in the edge set. As a side effect, the edges are made non-intersecting by introducing cut points where edges intersect. This method has been introduced in version 0.24. | |||||||||||||||

## Euclidian |
This value can be used for the metrics parameter in the check functions, i.e. width_check. This value specifies Euclidian metrics, i.e. the distance between two points is measured by: d = sqrt(dx^2 + dy^2) All points within a circle with radius d around one point are considered to have a smaller distance than d. | ||||||||||||||

## Projection |
This value can be used for the metrics parameter in the check functions, i.e. width_check. This value specifies projected metrics, i.e. the distance is defined as the minimum distance measured perpendicular to one edge. That implies that the distance is defined only where two edges have a non-vanishing projection onto each other. | ||||||||||||||

## Square |
This value can be used for the metrics parameter in the check functions, i.e. width_check. This value specifies square metrics, i.e. the distance between two points is measured by: d = max(abs(dx), abs(dy)) All points within a square with length 2*d around one point are considered to have a smaller distance than d in this metrics. | ||||||||||||||

## [] |
This method returns nil if the index is out of range. It is available for flat edge collections only - i.e. those for which has_valid_edges? is true. Use flatten to explicitly flatten an edge collection. This method returns the raw edge (not merged edges, even if merged semantics is enabled). The each iterator is the more general approach to access the edges. | ||||||||||||||

## ^ |
The boolean XOR operation will return all parts of the edges in this and the other collection except the parts where both are coincident. The result will be a merged edge collection. | ||||||||||||||

## ^= |
The boolean XOR operation will return all parts of the edges in this and the other collection except the parts where both are coincident. The result will be a merged edge collection. | ||||||||||||||

## _create |
Use this method to ensure the C++ object is created, for example to ensure that resources are allocated. Usually C++ objects are created on demand and not necessarily when the script object is created. | ||||||||||||||

## _destroy |
Explicitly destroys the object on C++ side if it was owned by the script interpreter. Subsequent access to this object will throw an exception. If the object is not owned by the script, this method will do nothing. | ||||||||||||||

## _destroyed? |
This method returns true, if the object was destroyed, either explicitly or by the C++ side. The latter may happen, if the object is owned by a C++ object which got destroyed itself. | ||||||||||||||

## _is_const_object? |
This method returns true, if self is a const reference. In that case, only const methods may be called on self. | ||||||||||||||

## _manage |
After calling this method on an object, the script side will be responsible for the management of the object. This method may be called if an object is returned from a C++ function and the object is known not to be owned by any C++ instance. If necessary, the script side may delete the object if the script's reference is no longer required. Usually it's not required to call this method. It has been introduced in version 0.24. | ||||||||||||||

## _unmanage |
Calling this method will make this object no longer owned by the script's memory management. Instead, the object must be managed in some other way. Usually this method may be called if it is known that some C++ object holds and manages this object. Technically speaking, this method will turn the script's reference into a weak reference. After the script engine decides to delete the reference, the object itself will still exist. If the object is not managed otherwise, memory leaks will occur. Usually it's not required to call this method. It has been introduced in version 0.24. | ||||||||||||||

## assign |
| ||||||||||||||

## bbox |
The bounding box is the box enclosing all points of all edges. | ||||||||||||||

## centers |
This method allows one to specify the length of these segments in a twofold way: either as a fixed length or by specifying a fraction of the original length: edges = ... # An edge collection edges.centers(100, 0.0) # All segments have a length of 100 DBU edges.centers(0, 50.0) # All segments have a length of half the original length edges.centers(100, 50.0) # All segments have a length of half the original length # or 100 DBU, whichever is larger It is possible to specify 0 for both values. In this case, degenerated edges (points) are delivered which specify the centers of the edges but can't participate in some functions. | ||||||||||||||

## clear |
| ||||||||||||||

## count |
This returns the number of raw edges (not merged edges if merged semantics is enabled). The count is computed 'as if flat', i.e. edges inside a cell are multiplied by the number of times a cell is instantiated. Starting with version 0.27, the method is called 'count' for consistency with Region. 'size' is still provided as an alias.
| ||||||||||||||

## create |
Use of this method is deprecated. Use _create instead Use this method to ensure the C++ object is created, for example to ensure that resources are allocated. Usually C++ objects are created on demand and not necessarily when the script object is created. | ||||||||||||||

## data_id |
This method has been added in version 0.26. | ||||||||||||||

## destroy |
Use of this method is deprecated. Use _destroy instead Explicitly destroys the object on C++ side if it was owned by the script interpreter. Subsequent access to this object will throw an exception. If the object is not owned by the script, this method will do nothing. | ||||||||||||||

## destroyed? |
Use of this method is deprecated. Use _destroyed? instead This method returns true, if the object was destroyed, either explicitly or by the C++ side. The latter may happen, if the object is owned by a C++ object which got destroyed itself. | ||||||||||||||

## disable_progress |
Calling this method will disable progress reporting. See enable_progress. | ||||||||||||||

## dup |
| ||||||||||||||

## each |
| ||||||||||||||

## each_merged |
In contrast to each, this method delivers merged edges if merge semantics applies while each delivers the original edges only. This method has been introduced in version 0.25. | ||||||||||||||

## enable_progress |
After calling this method, the edge collection will report the progress through a progress bar while expensive operations are running. The label is a text which is put in front of the progress bar. Using a progress bar will imply a performance penalty of a few percent typically. | ||||||||||||||

## enclosed_check |
If "whole_edges" is true, the resulting EdgePairs collection will receive the whole edges which contribute in the width check. "metrics" can be one of the constants Euclidian, Square or Projection. See there for a description of these constants. Use nil for this value to select the default (Euclidian metrics). "ignore_angle" specifies the angle threshold of two edges. If two edges form an angle equal or above the given value, they will not contribute in the check. Setting this value to 90 (the default) will exclude edges with an angle of 90 degree or more from the check. Use nil for this value to select the default. "min_projection" and "max_projection" allow selecting edges by their projected value upon each other. It is sufficient if the projection of one edge on the other matches the specified condition. The projected length must be larger or equal to "min_projection" and less than "max_projection". If you don't want to specify one threshold, pass nil to the respective value. The 'enclosed_check' alias was introduced in version 0.27.5. | ||||||||||||||

## enclosing_check |
If "whole_edges" is true, the resulting EdgePairs collection will receive the whole edges which contribute in the width check. "metrics" can be one of the constants Euclidian, Square or Projection. See there for a description of these constants. Use nil for this value to select the default (Euclidian metrics). "ignore_angle" specifies the angle threshold of two edges. If two edges form an angle equal or above the given value, they will not contribute in the check. Setting this value to 90 (the default) will exclude edges with an angle of 90 degree or more from the check. Use nil for this value to select the default. "min_projection" and "max_projection" allow selecting edges by their projected value upon each other. It is sufficient if the projection of one edge on the other matches the specified condition. The projected length must be larger or equal to "min_projection" and less than "max_projection". If you don't want to specify one threshold, pass nil to the respective value. | ||||||||||||||

## end_segments |
This method allows one to specify the length of these segments in a twofold way: either as a fixed length or by specifying a fraction of the original length: edges = ... # An edge collection edges.end_segments(100, 0.0) # All segments have a length of 100 DBU edges.end_segments(0, 50.0) # All segments have a length of half the original length edges.end_segments(100, 50.0) # All segments have a length of half the original length # or 100 DBU, whichever is larger It is possible to specify 0 for both values. In this case, degenerated edges (points) are delivered which specify the end positions of the edges but can't participate in some functions. | ||||||||||||||

## extended |
This is a generic version of extended_in and extended_out. It allows one to specify extensions for all four directions of an edge and to join the edges before the extension is applied. For degenerated edges forming a point, a rectangle with the b, e, o and i used as left, right, top and bottom distance to the center point of this edge is created. If join is true and edges form a closed loop, the b and e parameters are ignored and a rim polygon is created that forms the loop with the outside and inside extension given by o and i. | ||||||||||||||

## extended_in |
The edges are extended to the "inside" by the given distance "e". The distance will be applied to the right side as seen in the direction of the edge. By definition, this is the side pointing to the inside of the polygon if the edge was derived from a polygon. Other versions of this feature are extended_out and extended. | ||||||||||||||

## extended_out |
The edges are extended to the "outside" by the given distance "e". The distance will be applied to the left side as seen in the direction of the edge. By definition, this is the side pointing to the outside of the polygon if the edge was derived from a polygon. Other versions of this feature are extended_in and extended. | ||||||||||||||

## extents |
This method will return a region consisting of the bounding boxes of the edges. The boxes will not be merged, so it is possible to determine overlaps of these boxes for example. | ||||||||||||||

This method will return a region consisting of the bounding boxes of the edges enlarged by the given distance d. The enlargement is specified per edge, i.e the width and height will be increased by 2*d. The boxes will not be merged, so it is possible to determine overlaps of these boxes for example. | |||||||||||||||

This method will return a region consisting of the bounding boxes of the edges enlarged by the given distance dx in x direction and dy in y direction. The enlargement is specified per edge, i.e the width will be increased by 2*dx. The boxes will not be merged, so it is possible to determine overlaps of these boxes for example. | |||||||||||||||

## flatten |
If the collection is already flat (i.e. has_valid_edges? returns true), this method will not change it. This method has been introduced in version 0.26. | ||||||||||||||

## has_valid_edges? |
This method has been introduced in version 0.26. | ||||||||||||||

## hier_count |
This returns the number of raw edges (not merged edges if merged semantics is enabled). The count is computed 'hierarchical', i.e. edges inside a cell are counted once even if the cell is instantiated multiple times. This method has been introduced in version 0.27. | ||||||||||||||

## in |
Use of this method is deprecated. Use members_of instead This method returns all edges in self which can be found in the other edge collection as well with exactly the same geometry.
| ||||||||||||||

## insert |
Inserts the edge into the edge collection. | ||||||||||||||

Inserts the edges that form the contour of the box into the edge collection. | |||||||||||||||

Inserts the edges that form the contour of the polygon into the edge collection. | |||||||||||||||

Inserts the edges that form the contour of the simple polygon into the edge collection. | |||||||||||||||

Inserts the edges that form the contour of the path into the edge collection. | |||||||||||||||

This method has been introduced in version 0.25. | |||||||||||||||

Inserts the edges that form the contours of the polygons from the region into the edge collection. This method has been introduced in version 0.25. | |||||||||||||||

This method takes each edge from the shape collection and inserts it into the region. "Polygon-like" objects are inserted as edges forming the contours of the polygons. Text objects are ignored. This method has been introduced in version 0.25. | |||||||||||||||

This method acts as the version without transformation, but will apply the given transformation before inserting the edges. This method has been introduced in version 0.25. | |||||||||||||||

This method acts as the version without transformation, but will apply the given complex transformation before inserting the edges. This method has been introduced in version 0.25. | |||||||||||||||

For "solid" shapes (boxes, polygons, paths), this method inserts the edges that form the contour of the shape into the edge collection. Edge shapes are inserted as such. Text objects are not inserted, because they cannot be converted to polygons. | |||||||||||||||

For "solid" shapes (boxes, polygons, paths), this method inserts the edges that form the contour of the shape into the edge collection. Edge shapes are inserted as such. Text objects are not inserted, because they cannot be converted to polygons. This variant will apply the given transformation to the shapes. This is useful to scale the shapes to a specific database unit for example. | |||||||||||||||

| |||||||||||||||

| |||||||||||||||

## insert_into |
If the edge collection is a hierarchical one, a suitable hierarchy will be built below the top cell or and existing hierarchy will be reused. This method has been introduced in version 0.26. | ||||||||||||||

## inside_check |
If "whole_edges" is true, the resulting EdgePairs collection will receive the whole edges which contribute in the width check. "metrics" can be one of the constants Euclidian, Square or Projection. See there for a description of these constants. Use nil for this value to select the default (Euclidian metrics). "ignore_angle" specifies the angle threshold of two edges. If two edges form an angle equal or above the given value, they will not contribute in the check. Setting this value to 90 (the default) will exclude edges with an angle of 90 degree or more from the check. Use nil for this value to select the default. "min_projection" and "max_projection" allow selecting edges by their projected value upon each other. It is sufficient if the projection of one edge on the other matches the specified condition. The projected length must be larger or equal to "min_projection" and less than "max_projection". If you don't want to specify one threshold, pass nil to the respective value. The 'enclosed_check' alias was introduced in version 0.27.5. | ||||||||||||||

## inside_part |
This operation returns the parts of the edges which are inside the given region. This functionality is similar to the '&' operator, but edges on the borders of the polygons are not included in the edge set. As a side effect, the edges are made non-intersecting by introducing cut points where edges intersect. This method has been introduced in version 0.24. | ||||||||||||||

## interacting |
This method does not merge the edges before they are selected. If you want to select coherent edges, make sure the edge collection is merged before this method is used. | ||||||||||||||

This method does not merge the edges before they are selected. If you want to select coherent edges, make sure the edge collection is merged before this method is used. | |||||||||||||||

## intersections |
This computation is like an AND operation, but also including crossing points between non-coincident edges as degenerated (point-like) edges. This method has been introduced in version 0.26.2 | ||||||||||||||

## is_const_object? |
Use of this method is deprecated. Use _is_const_object? instead This method returns true, if self is a const reference. In that case, only const methods may be called on self. | ||||||||||||||

## is_deep? |
This method has been added in version 0.26. | ||||||||||||||

## is_empty? |
| ||||||||||||||

## is_merged? |
If the region is merged, coincident edges have been merged into single edges. You can ensure merged state by calling merge. | ||||||||||||||

## length |
Merged semantics applies for this method (see merged_semantics= of merged semantics) | ||||||||||||||

This version will compute the total length of all edges in the collection, restricting the computation to the given rectangle. Edges along the border are handled in a special way: they are counted when they are oriented with their inside side toward the rectangle (in other words: outside edges must coincide with the rectangle's border in order to be counted). Merged semantics applies for this method (see merged_semantics= of merged semantics) | |||||||||||||||

## members_of |
This method returns all edges in self which can be found in the other edge collection as well with exactly the same geometry.
| ||||||||||||||

## merge |
Merging joins parallel edges which overlap or touch. Crossing edges are not merged. If the edge collection is already merged, this method does nothing | ||||||||||||||

## merged |
Merging joins parallel edges which overlap or touch. Crossing edges are not merged. In contrast to merge, this method does not modify the edge collection but returns a merged copy. | ||||||||||||||

## merged_semantics= |
If merged semantics is enabled (the default), colinear, connected or overlapping edges will be considered as single edges.
| ||||||||||||||

## merged_semantics? |
See merged_semantics= for a description of this attribute.
| ||||||||||||||

## move |
Moves the polygon by the given offset and returns the moved edge collection. The edge collection is overwritten. Starting with version 0.25 the displacement type is a vector. | ||||||||||||||

Moves the edge collection by the given offset and returns the moved edge collection. The edge collection is overwritten. | |||||||||||||||

## moved |
Moves the edge collection by the given offset and returns the moved edge collection. The edge collection is not modified. Starting with version 0.25 the displacement type is a vector. | ||||||||||||||

Moves the edge collection by the given offset and returns the moved edge collection. The edge collection is not modified. | |||||||||||||||

## new |
This constructor creates an empty edge collection.
| ||||||||||||||

This constructor creates an edge collection with a single edge.
| |||||||||||||||

This constructor creates an edge collection from an array of polygons. The edges form the contours of the polygons.
| |||||||||||||||

This constructor creates an edge collection from an array of edges.
| |||||||||||||||

This constructor creates an edge collection from a box. The edges form the contour of the box.
| |||||||||||||||

This constructor creates an edge collection from a polygon. The edges form the contour of the polygon.
| |||||||||||||||

This constructor creates an edge collection from a simple polygon. The edges form the contour of the polygon.
| |||||||||||||||

This constructor creates an edge collection from a path. The edges form the contour of the path.
| |||||||||||||||

If 'as_edges' is true, the shapes from the container will be converted to edges (i.e. polygon contours to edges). Otherwise, only edges will be taken from the container. This method has been introduced in version 0.26.
| |||||||||||||||

This constructor creates an edge collection from the shapes delivered by the given recursive shape iterator. It feeds the shapes from a hierarchy of cells into a flat edge set. Text objects are not inserted, because they cannot be converted to edges. Edge objects are inserted as such. If "as_edges" is true, "solid" objects (boxes, polygons, paths) are converted to edges which form the hull of these objects. If "as_edges" is false, solid objects are ignored. layout = ... # a layout cell = ... # the index of the initial cell layer = ... # the index of the layer from where to take the shapes from r = RBA::Edges::new(layout.begin_shapes(cell, layer), false)
| |||||||||||||||

This constructor creates an edge collection from the shapes delivered by the given recursive shape iterator. It feeds the shapes from a hierarchy of cells into a flat edge set. The transformation is useful to scale to a specific database unit for example. Text objects are not inserted, because they cannot be converted to edges. Edge objects are inserted as such. If "as_edges" is true, "solid" objects (boxes, polygons, paths) are converted to edges which form the hull of these objects. If "as_edges" is false, solid objects are ignored. layout = ... # a layout cell = ... # the index of the initial cell layer = ... # the index of the layer from where to take the shapes from dbu = 0.1 # the target database unit r = RBA::Edges::new(layout.begin_shapes(cell, layer), RBA::ICplxTrans::new(layout.dbu / dbu))
| |||||||||||||||

This constructor creates an edge collection from the shapes delivered by the given recursive shape iterator. It feeds the shapes from a hierarchy of cells into the hierarchical edge set. The edges remain within their original hierarchy unless other operations require the edges to be moved in the hierarchy. Text objects are not inserted, because they cannot be converted to edges. Edge objects are inserted as such. If "as_edges" is true, "solid" objects (boxes, polygons, paths) are converted to edges which form the hull of these objects. If "as_edges" is false, solid objects are ignored. dss = RBA::DeepShapeStore::new layout = ... # a layout cell = ... # the index of the initial cell layer = ... # the index of the layer from where to take the shapes from r = RBA::Edges::new(layout.begin_shapes(cell, layer), dss, false)
| |||||||||||||||

This constructor creates an edge collection from the shapes delivered by the given recursive shape iterator. It feeds the shapes from a hierarchy of cells into the hierarchical edge set. The edges remain within their original hierarchy unless other operations require the edges to be moved in the hierarchy. The transformation is useful to scale to a specific database unit for example. dss = RBA::DeepShapeStore::new layout = ... # a layout cell = ... # the index of the initial cell layer = ... # the index of the layer from where to take the shapes from dbu = 0.1 # the target database unit r = RBA::Edges::new(layout.begin_shapes(cell, layer), dss, RBA::ICplxTrans::new(layout.dbu / dbu), false)
| |||||||||||||||

This special constructor will create dot-like edges from the text objects delivered by the shape iterator. Each text object will give a degenerated edge (a dot) that represents the text origin. Texts can be selected by their strings - either through a glob pattern or by exact comparison with the given string. The following options are available: dots = RBA::Edges::new(iter, "*") # all texts dots = RBA::Edges::new(iter, "A*") # all texts starting with an 'A' dots = RBA::Edges::new(iter, "A*", false) # all texts exactly matching 'A*' This method has been introduced in version 0.26.
| |||||||||||||||

This special constructor will create a deep edge set from the text objects delivered by the shape iterator. Each text object will give a degenerated edge (a dot) that represents the text origin. Texts can be selected by their strings - either through a glob pattern or by exact comparison with the given string. The following options are available: region = RBA::Region::new(iter, dss, "*") # all texts region = RBA::Region::new(iter, dss, "A*") # all texts starting with an 'A' region = RBA::Region::new(iter, dss, "A*", false) # all texts exactly matching 'A*' This method has been introduced in version 0.26.
| |||||||||||||||

## not_in |
Use of this method is deprecated. Use not_members_of instead This method returns all edges in self which can not be found in the other edge collection with exactly the same geometry. | ||||||||||||||

## not_interacting |
This method does not merge the edges before they are selected. If you want to select coherent edges, make sure the edge collection is merged before this method is used. | ||||||||||||||

| |||||||||||||||

## not_members_of |
This method returns all edges in self which can not be found in the other edge collection with exactly the same geometry. | ||||||||||||||

## outside_part |
This operation returns the parts of the edges which are not inside the given region. This functionality is similar to the '-' operator, but edges on the borders of the polygons are included in the edge set. As a side effect, the edges are made non-intersecting by introducing cut points where edges intersect. This method has been introduced in version 0.24. | ||||||||||||||

## overlap_check |
| ||||||||||||||

## pull_interacting |
The "pull_..." methods are similar to "select_..." but work the opposite way: they select shapes from the argument region rather than self. In a deep (hierarchical) context the output region will be hierarchically aligned with self, so the "pull_..." methods provide a way for re-hierarchization. Merged semantics applies for this method (see merged_semantics= of merged semantics) This method has been introduced in version 0.26.1 | ||||||||||||||

See the other pull_interacting version for more details. Merged semantics applies for this method (see merged_semantics= of merged semantics) This method has been introduced in version 0.26.1 | |||||||||||||||

## select_inside_part |
This operation selects the parts of the edges which are inside the given region. This functionality is similar to the '&=' operator, but edges on the borders of the polygons are not included in the edge set. As a side effect, the edges are made non-intersecting by introducing cut points where edges intersect. This method has been introduced in version 0.24. | ||||||||||||||

## select_interacting |
| ||||||||||||||

| |||||||||||||||

## select_not_interacting |
| ||||||||||||||

| |||||||||||||||

## select_outside_part |
This operation selects the parts of the edges which are not inside the given region. This functionality is similar to the '-=' operator, but edges on the borders of the polygons are included in the edge set. As a side effect, the edges are made non-intersecting by introducing cut points where edges intersect. This method has been introduced in version 0.24. | ||||||||||||||

## separation_check |
| ||||||||||||||

## size |
Use of this method is deprecated. Use count instead This returns the number of raw edges (not merged edges if merged semantics is enabled). The count is computed 'as if flat', i.e. edges inside a cell are multiplied by the number of times a cell is instantiated. Starting with version 0.27, the method is called 'count' for consistency with Region. 'size' is still provided as an alias.
| ||||||||||||||

## space_check |
If "whole_edges" is true, the resulting EdgePairs collection will receive the whole edges which contribute in the space check. | ||||||||||||||

## start_segments |
This method allows one to specify the length of these segments in a twofold way: either as a fixed length or by specifying a fraction of the original length: edges = ... # An edge collection edges.start_segments(100, 0.0) # All segments have a length of 100 DBU edges.start_segments(0, 50.0) # All segments have a length of half the original length edges.start_segments(100, 50.0) # All segments have a length of half the original length # or 100 DBU, whichever is larger It is possible to specify 0 for both values. In this case, degenerated edges (points) are delivered which specify the start positions of the edges but can't participate in some functions. | ||||||||||||||

## swap |
This method is useful to avoid excessive memory allocation in some cases. For managed memory languages such as Ruby, those cases will be rare. | ||||||||||||||

## to_s |
The length of the output is limited to 20 edges to avoid giant strings on large regions. For full output use "to_s" with a maximum count parameter.
| ||||||||||||||

This version allows specification of the maximum number of edges contained in the string.
| |||||||||||||||

## transform |
Transforms the edge collection with the given transformation. This version modifies the edge collection and returns a reference to self. | ||||||||||||||

Transforms the edge collection with the given transformation. This version modifies the edge collection and returns a reference to self. | |||||||||||||||

Transforms the edge collection with the given 2d matrix transformation. This version modifies the edge collection and returns a reference to self. This variant has been introduced in version 0.27. | |||||||||||||||

Transforms the edge collection with the given 3d matrix transformation. This version modifies the edge collection and returns a reference to self. This variant has been introduced in version 0.27. | |||||||||||||||

## transform_icplx |
Use of this method is deprecated. Use transform instead Transforms the edge collection with the given transformation. This version modifies the edge collection and returns a reference to self. | ||||||||||||||

## transformed |
Transforms the edge collection with the given transformation. Does not modify the edge collection but returns the transformed edge collection. | ||||||||||||||

Transforms the edge collection with the given complex transformation. Does not modify the edge collection but returns the transformed edge collection. | |||||||||||||||

Transforms the edge collection with the given 2d matrix transformation. Does not modify the edge collection but returns the transformed edge collection. This variant has been introduced in version 0.27. | |||||||||||||||

Transforms the edge collection with the given 3d matrix transformation. Does not modify the edge collection but returns the transformed edge collection. This variant has been introduced in version 0.27. | |||||||||||||||

## transformed_icplx |
Use of this method is deprecated. Use transformed instead Transforms the edge collection with the given complex transformation. Does not modify the edge collection but returns the transformed edge collection. | ||||||||||||||

## width_check |
| ||||||||||||||

## with_angle |
Filters the edges in the edge collection by orientation. If "inverse" is false, only edges which have the given angle to the x-axis are returned. If "inverse" is true, edges not having the given angle are returned. This will select horizontal edges: horizontal = edges.with_orientation(0, false) | ||||||||||||||

Filters the edges in the edge collection by orientation. If "inverse" is false, only edges which have an angle to the x-axis larger or equal to "min_angle" (depending on "include_min_angle") and equal or less than "max_angle" (depending on "include_max_angle") are returned. If "inverse" is true, edges which do not conform to this criterion are returned. With "include_min_angle" set to true (the default), the minimum angle is included in the criterion while with false, the minimum angle itself is not included. Same for "include_max_angle" where the default is false, meaning the maximum angle is not included in the range. The two "include.." arguments have been added in version 0.27. | |||||||||||||||

## with_length |
Filters the edges in the edge collection by length. If "inverse" is false, only edges which have the given length are returned. If "inverse" is true, edges not having the given length are returned. | ||||||||||||||

Filters the edges in the edge collection by length. If "inverse" is false, only edges which have a length larger or equal to "min_length" and less than "max_length" are returned. If "inverse" is true, edges not having a length less than "min_length" or larger or equal than "max_length" are returned. If you don't want to specify a lower or upper limit, pass nil to that parameter. | |||||||||||||||

## | |
The boolean OR is implemented by merging the edges of both edge sets. To simply join the edge collections without merging, the + operator is more efficient. | ||||||||||||||

## |= |
The boolean OR is implemented by merging the edges of both edge sets. To simply join the edge collections without merging, the + operator is more efficient. |