API reference - Class Edges

Notation used in Ruby API documentation

Module: db

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

Class hierarchy: Edges » ShapeCollection

Sub-classes: EdgeType

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.

Public constructors

new Edges ptrnewDefault constructor
new Edges ptrnew(const Edge edge)Constructor from a single edge
new Edges ptrnew(Polygon[] array)Constructor from a polygon array
new Edges ptrnew(Edge[] array)Constructor from an edge array
new Edges ptrnew(const Box box)Box constructor
new Edges ptrnew(const Polygon polygon)Polygon constructor
new Edges ptrnew(const SimplePolygon polygon)Simple polygon constructor
new Edges ptrnew(const Path path)Path constructor
new Edges ptrnew(const Shapes shapes,
bool as_edges = true)
Constructor of a flat edge collection from a Shapes container
new Edges ptrnew(const RecursiveShapeIterator shape_iterator,
bool as_edges = true)
Constructor of a flat edge collection from a hierarchical shape set
new Edges ptrnew(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 ptrnew(const RecursiveShapeIterator shape_iterator,
DeepShapeStore dss,
bool as_edges = true)
Constructor of a hierarchical edge collection
new Edges ptrnew(const RecursiveShapeIterator shape_iterator,
DeepShapeStore dss,
const ICplxTrans trans,
bool as_edges = true)
Constructor of a hierarchical edge collection with a transformation
new Edges ptrnew(const RecursiveShapeIterator shape_iterator,
string expr,
bool as_pattern = true)
Constructor from a text set
new Edges ptrnew(const RecursiveShapeIterator shape_iterator,
DeepShapeStore dss,
string expr,
bool as_pattern = true)
Constructor from a text set

Public methods

[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 in-place (modifying self)
Edges&=(const Region other)Selects the parts of the edges inside the given region in-place (modifying self)
[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 in-place (modifying self)
Edges-=(const Region other)Selects the parts of the edges outside the given region in-place (modifying self)
[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 in-place (modifying self)
[const]Edges ptr_const_castReturns a non-const reference to self.
void_createEnsures the C++ object is created
void_destroyExplicitly 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_manageMarks the object as managed by the script side.
void_unmanageMarks the object as no longer owned by the script side.
[const]Edgesand(const Edges other)Returns the boolean AND between self and the other edge collection
[const]Edgesand(const Region other)Returns the parts of the edges inside the given region
Edgesand_with(const Edges other)Performs the boolean AND between self and the other edge collection in-place (modifying self)
Edgesand_with(const Region other)Selects the parts of the edges inside the given region in-place (modifying self)
[const]Edges[]andnot(const Edges other)Returns the boolean AND and NOT between self and the other edge set
[const]Edges[]andnot(const Region other)Returns the boolean AND and NOT between self and the region
voidassign(const Edges other)Assigns another object to self
[const]BoxbboxReturns the bounding box of the edge collection
[const]Edgescenters(unsigned int length,
double fraction)
Returns edges representing the center part of the edges
voidclearClears the edge collection
[const]unsigned longcountReturns the (flat) number of edges in the edge collection
[const]unsigned longdata_idReturns the data ID (a unique identifier for the underlying data storage)
voiddisable_progressDisable progress reporting
[const]new Edges ptrdupCreates a copy of self
[const,iter]EdgeeachReturns each edge of the region
[const,iter]Edgeeach_mergedReturns each edge of the region
voidenable_progress(string label)Enable progress reporting
voidenable_propertiesEnables properties for the given container.
[const]EdgePairsenclosed_check(const Edges other,
int d,
bool whole_edges = false,
Metrics metrics = Euclidian,
variant ignore_angle = default,
variant min_projection = 0,
variant max_projection = max,
ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)
Performs an inside check with options
[const]EdgePairsenclosing_check(const Edges other,
int d,
bool whole_edges = false,
Metrics metrics = Euclidian,
variant ignore_angle = default,
variant min_projection = 0,
variant max_projection = max,
ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)
Performs an enclosing check with options
[const]Edgesend_segments(unsigned int length,
double fraction)
Returns edges representing a part of the edge before the end point
[const]Regionextended(int b,
int e,
int o,
int i,
bool join)
Returns a region with shapes representing the edges with the specified extensions
[const]Regionextended_in(int e)Returns a region with shapes representing the edges with the given width
[const]Regionextended_out(int e)Returns a region with shapes representing the edges with the given width
[const]RegionextentsReturns a region with the bounding boxes of the edges
[const]Regionextents(int d)Returns a region with the enlarged bounding boxes of the edges
[const]Regionextents(int dx,
int dy)
Returns a region with the enlarged bounding boxes of the edges
voidfilter(const EdgeFilter ptr filter)Applies a generic filter in place (replacing the edges from the Edges collection)
voidfilter_properties(variant[] keys)Filters properties by certain keys.
[const]Edgesfiltered(const EdgeFilter ptr filtered)Applies a generic filter and returns a filtered copy
voidflattenExplicitly flattens an edge collection
[const]boolhas_valid_edges?Returns true if the edge collection is flat and individual edges can be accessed randomly
[const]unsigned longhier_countReturns the (hierarchical) number of edges in the edge collection
[const]Edgesin(const Edges other)Returns all edges which are members of the other edge collection
[const]Edges[]in_and_out(const Edges other)Returns all polygons which are members and not members of the other region
voidinsert(const Edge edge)Inserts an edge
voidinsert(const Box box)Inserts a box
voidinsert(const Polygon polygon)Inserts a polygon
voidinsert(const SimplePolygon polygon)Inserts a simple polygon
voidinsert(const Path path)Inserts a path
voidinsert(const Edges edges)Inserts all edges from the other edge collection into this one
voidinsert(const Region region)Inserts a region
voidinsert(const Shapes shapes)Inserts all edges from the shape collection into this edge collection
voidinsert(const Shapes shapes,
const Trans trans)
Inserts all edges from the shape collection into this edge collection (with transformation)
voidinsert(const Shapes shapes,
const ICplxTrans trans)
Inserts all edges from the shape collection into this edge collection with complex transformation
voidinsert(RecursiveShapeIterator shape_iterator)Inserts all shapes delivered by the recursive shape iterator into this edge collection
voidinsert(RecursiveShapeIterator shape_iterator,
ICplxTrans trans)
Inserts all shapes delivered by the recursive shape iterator into this edge collection with a transformation
voidinsert(Polygon[] polygons)Inserts all polygons from the array into this edge collection
voidinsert(Edge[] edges)Inserts all edges from the array into this edge collection
[const]voidinsert_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]Edgesinside(const Edges other)Returns the edges of this edge collection which are inside (completely covered by) edges from the other edge collection
[const]Edgesinside(const Region other)Returns the edges from this edge collection which are inside (completely covered by) polygons from the region
[const]EdgePairsinside_check(const Edges other,
int d,
bool whole_edges = false,
Metrics metrics = Euclidian,
variant ignore_angle = default,
variant min_projection = 0,
variant max_projection = max,
ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)
Performs an inside check with options
[const]Edges[]inside_outside_part(const Region other)Returns the partial edges inside and outside the given region
[const]Edgesinside_part(const Region other)Returns the parts of the edges of this edge collection which are inside the polygons of the region
[const]Edgesinteracting(const Edges other,
unsigned long min_count = 1,
unsigned long max_count = unlimited)
Returns the edges of this edge collection which overlap or touch edges from the other edge collection
[const]Edgesinteracting(const Region other,
unsigned long min_count = 1,
unsigned long max_count = unlimited)
Returns the edges from this edge collection which overlap or touch polygons from the region
[const]Edgesintersections(const Edges other)Computes the intersections between this edges and other edges
[const]boolis_deep?Returns true if the edge collection is a deep (hierarchical) one
[const]boolis_empty?Returns true if the edge collection is empty
[const]boolis_merged?Returns true if the edge collection is merged
[const]Edgesjoin(const Edges other)Returns the combined edge set of self and the other one
Edgesjoin_with(const Edges other)Adds the edges of the other edge collection to self
[const]unsigned intlengthReturns the total length of all edges in the edge collection
[const]unsigned intlength(const Box rect)Returns the total length of all edges in the edge collection (restricted to a rectangle)
voidmap_properties(map<variant,variant> key_map)Maps properties by name key.
[const]Edgesmembers_of(const Edges other)Returns all edges which are members of the other edge collection
EdgesmergeMerge the edges
[const]EdgesmergedReturns the merged edge collection
voidmerged_semantics=(bool f)Enable or disable merged semantics
[const]boolmerged_semantics?Gets a flag indicating whether merged semantics is enabled
Edgesmove(const Vector v)Moves the edge collection
Edgesmove(int x,
int y)
Moves the edge collection
[const]Edgesmoved(const Vector v)Returns the moved edge collection (does not modify self)
[const]Edgesmoved(int x,
int v)
Returns the moved edge collection (does not modify self)
[const]Edgesnot(const Edges other)Returns the boolean NOT between self and the other edge collection
[const]Edgesnot(const Region other)Returns the parts of the edges outside the given region
[const]Edgesnot_in(const Edges other)Returns all edges which are not members of the other edge collection
[const]Edgesnot_inside(const Edges other)Returns the edges of this edge collection which are not inside (completely covered by) edges from the other edge collection
[const]Edgesnot_inside(const Region other)Returns the edges from this edge collection which are not inside (completely covered by) polygons from the region
[const]Edgesnot_interacting(const Edges other,
unsigned long min_count = 1,
unsigned long max_count = unlimited)
Returns the edges of this edge collection which do not overlap or touch edges from the other edge collection
[const]Edgesnot_interacting(const Region other,
unsigned long min_count = 1,
unsigned long max_count = unlimited)
Returns the edges from this edge collection which do not overlap or touch polygons from the region
[const]Edgesnot_members_of(const Edges other)Returns all edges which are not members of the other edge collection
[const]Edgesnot_outside(const Edges other)Returns the edges of this edge collection which are not outside (partially overlapped by) edges from the other edge collection
[const]Edgesnot_outside(const Region other)Returns the edges from this edge collection which are not outside (partially overlapped by) polygons from the region
Edgesnot_with(const Edges other)Performs the boolean NOT between self and the other edge collection in-place (modifying self)
Edgesnot_with(const Region other)Selects the parts of the edges outside the given region in-place (modifying self)
[const]Edgesor(const Edges other)Returns the boolean OR between self and the other edge set
Edgesor_with(const Edges other)Performs the boolean OR between self and the other edge set in-place (modifying self)
[const]Edgesoutside(const Edges other)Returns the edges of this edge collection which are outside (not overlapped by) edges from the other edge collection
[const]Edgesoutside(const Region other)Returns the edges from this edge collection which are outside (not overlapped by) polygons from the region
[const]Edgesoutside_part(const Region other)Returns the parts of the edges of this edge collection which are outside the polygons of the region
[const]EdgePairsoverlap_check(const Edges other,
int d,
bool whole_edges = false,
Metrics metrics = Euclidian,
variant ignore_angle = default,
variant min_projection = 0,
variant max_projection = max,
ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)
Performs an overlap check with options
voidprocess(const EdgeOperator ptr process)Applies a generic edge processor in place (replacing the edges from the Edges collection)
[const]Edgesprocessed(const EdgeOperator ptr processed)Applies a generic edge processor and returns a processed copy
[const]EdgePairsprocessed(const EdgeToEdgePairOperator ptr processed)Applies a generic edge-to-edge-pair processor and returns an edge pair collection with the results
[const]Regionprocessed(const EdgeToPolygonOperator ptr processed)Applies a generic edge-to-polygon processor and returns an edge collection with the results
[const]Regionpull_interacting(const Region other)Returns all polygons of "other" which are interacting with (overlapping, touching) edges of this edge set
[const]Edgespull_interacting(const Edges other)Returns all edges of "other" which are interacting with polygons of this edge set
voidremove_propertiesRemoves properties for the given container.
Edgesselect_inside(const Edges other)Selects the edges from this edge collection which are inside (completely covered by) edges from the other edge collection
Edgesselect_inside(const Region other)Selects the edges from this edge collection which are inside (completely covered by) polygons from the region
Edgesselect_inside_part(const Region other)Selects the parts of the edges from this edge collection which are inside the polygons of the given region
Edgesselect_interacting(const Edges other,
unsigned long min_count = 1,
unsigned long max_count = unlimited)
Selects the edges from this edge collection which overlap or touch edges from the other edge collection
Edgesselect_interacting(const Region other,
unsigned long min_count = 1,
unsigned long max_count = unlimited)
Selects the edges from this edge collection which overlap or touch polygons from the region
Edgesselect_not_inside(const Edges other)Selects the edges from this edge collection which are not inside (completely covered by) edges from the other edge collection
Edgesselect_not_inside(const Region other)Selects the edges from this edge collection which are not inside (completely covered by) polygons from the region
Edgesselect_not_interacting(const Edges other,
unsigned long min_count = 1,
unsigned long max_count = unlimited)
Selects the edges from this edge collection which do not overlap or touch edges from the other edge collection
Edgesselect_not_interacting(const Region other,
unsigned long min_count = 1,
unsigned long max_count = unlimited)
Selects the edges from this edge collection which do not overlap or touch polygons from the region
Edgesselect_not_outside(const Edges other)Selects the edges from this edge collection which are not outside (partially overlapped by) edges from the other edge collection
Edgesselect_not_outside(const Region other)Selects the edges from this edge collection which are not outside (partially overlapped by) polygons from the region
Edgesselect_outside(const Edges other)Selects the edges from this edge collection which are outside (not overlapped by) edges from the other edge collection
Edgesselect_outside(const Region other)Selects the edges from this edge collection which are outside (not overlapped by) polygons from the region
Edgesselect_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]EdgePairsseparation_check(const Edges other,
int d,
bool whole_edges = false,
Metrics metrics = Euclidian,
variant ignore_angle = default,
variant min_projection = 0,
variant max_projection = max,
ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)
Performs an overlap check with options
[const]EdgePairsspace_check(int d,
bool whole_edges = false,
Metrics metrics = Euclidian,
variant ignore_angle = default,
variant min_projection = 0,
variant max_projection = max,
ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)
Performs a space check with options
[const]Edges[]split_inside(const Edges other)Selects the edges from this edge collection which are and are not inside (completely covered by) edges from the other collection
[const]Edges[]split_inside(const Region other)Selects the edges from this edge collection which are and are not inside (completely covered by) polygons from the other region
[const]Edges[]split_interacting(const Edges other,
unsigned long min_count = 1,
unsigned long max_count = unlimited)
Selects the edges from this edge collection which do and do not interact with edges from the other collection
[const]Edges[]split_interacting(const Region other,
unsigned long min_count = 1,
unsigned long max_count = unlimited)
Selects the edges from this edge collection which do and do not interact with polygons from the other region
[const]Edges[]split_outside(const Edges other)Selects the edges from this edge collection which are and are not outside (not overlapped by) edges from the other collection
[const]Edges[]split_outside(const Region other)Selects the edges from this edge collection which are and are not outside (not overlapped by) polygons from the other region
[const]Edgesstart_segments(unsigned int length,
double fraction)
Returns edges representing a part of the edge after the start point
voidswap(Edges other)Swap the contents of this edge collection with the contents of another one
[const]stringto_sConverts the edge collection to a string
[const]stringto_s(unsigned long max_count)Converts the edge collection to a string
Edgestransform(const Trans t)Transform the edge collection (modifies self)
Edgestransform(const ICplxTrans t)Transform the edge collection with a complex transformation (modifies self)
Edgestransform(const IMatrix2d t)Transform the edge collection (modifies self)
Edgestransform(const IMatrix3d t)Transform the edge collection (modifies self)
[const]Edgestransformed(const Trans t)Transform the edge collection
[const]Edgestransformed(const ICplxTrans t)Transform the edge collection with a complex transformation
[const]Edgestransformed(const IMatrix2d t)Transform the edge collection
[const]Edgestransformed(const IMatrix3d t)Transform the edge collection
[const]EdgePairswidth_check(int d,
bool whole_edges = false,
Metrics metrics = Euclidian,
variant ignore_angle = default,
variant min_projection = 0,
variant max_projection = max,
ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)
Performs a width check with options
[const]Edgeswith_abs_angle(double angle,
bool inverse)
Filter the edges by orientation
[const]Edgeswith_abs_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]Edgeswith_angle(double angle,
bool inverse)
Filters the edges by orientation
[const]Edgeswith_angle(double min_angle,
double max_angle,
bool inverse,
bool include_min_angle = true,
bool include_max_angle = false)
Filters the edges by orientation
[const]Edgeswith_angle(Edges::EdgeType type,
bool inverse)
Filters the edges by orientation type
[const]Edgeswith_length(unsigned int length,
bool inverse)
Filters the edges by length
[const]Edgeswith_length(variant min_length,
variant max_length,
bool inverse)
Filters the edges by length
[const]voidwrite(string filename)Writes the region to a file
[const]Edgesxor(const Edges other)Returns the boolean XOR between self and the other edge collection
Edgesxor_with(const Edges other)Performs the boolean XOR between self and the other edge collection in-place (modifying self)
[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 in-place (modifying self)

Public static methods and constants

[static,const]Edges::EdgeTypeDiagonalEdgesDiagonal edges are selected (-45 and 45 degree)
[static,const]PropertyConstraintDifferentPropertiesConstraintSpecifies to consider shapes only if their user properties are different
[static,const]PropertyConstraintDifferentPropertiesConstraintDropSpecifies to consider shapes only if their user properties are different
[static,const]MetricsEuclidianSpecifies Euclidian metrics for the check functions
[static,const]PropertyConstraintIgnorePropertiesSpecifies to ignore properties
[static,const]ZeroDistanceModeIncludeZeroDistanceWhenCollinearAndTouchingSpecifies that check functions should include edges when they are collinear and touch
[static,const]ZeroDistanceModeIncludeZeroDistanceWhenOverlappingSpecifies that check functions should include edges when they overlap
[static,const]ZeroDistanceModeIncludeZeroDistanceWhenTouchingSpecifies that check functions should include edges when they touch
[static,const]ZeroDistanceModeNeverIncludeZeroDistanceSpecifies that check functions should never include edges with zero distance.
[static,const]PropertyConstraintNoPropertyConstraintSpecifies not to apply any property constraint
[static,const]Edges::EdgeTypeOrthoDiagonalEdgesDiagonal or orthogonal edges are selected (0, 90, -45 and 45 degree)
[static,const]Edges::EdgeTypeOrthoEdgesHorizontal and vertical edges are selected
[static,const]MetricsProjectionSpecifies projected distance metrics for the check functions
[static,const]PropertyConstraintSamePropertiesConstraintSpecifies to consider shapes only if their user properties are the same
[static,const]PropertyConstraintSamePropertiesConstraintDropSpecifies to consider shapes only if their user properties are the same
[static,const]MetricsSquareSpecifies square metrics for the check functions

Deprecated methods (protected, public, static, non-static and constructors)

voidcreateUse of this method is deprecated. Use _create instead
voiddestroyUse of this method is deprecated. Use _destroy instead
[const]booldestroyed?Use of this method is deprecated. Use _destroyed? instead
[const]boolis_const_object?Use of this method is deprecated. Use _is_const_object? instead
[const]unsigned longsizeUse of this method is deprecated. Use count instead
Edgestransform_icplx(const ICplxTrans t)Use of this method is deprecated. Use transform instead
[const]Edgestransformed_icplx(const ICplxTrans t)Use of this method is deprecated. Use transformed instead

Detailed description

&

(1) Signature: [const] Edges & (const Edges other)

Description: Returns the boolean AND between self and the other edge collection

Returns:The result of the boolean AND operation

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.

The 'and' alias has been introduced in version 0.28.12.

Python specific notes:
This attribute is available as 'and_' in Python.

(2) Signature: [const] Edges & (const Region other)

Description: Returns the parts of the edges inside the given region

Returns:The edges inside the given region

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 'and' alias has been introduced in version 0.28.12.

Python specific notes:
This attribute is available as 'and_' in Python.

&=

(1) Signature: Edges &= (const Edges other)

Description: Performs the boolean AND between self and the other edge collection in-place (modifying self)

Returns:The edge collection after modification (self)

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.

Note that in Ruby, the '&=' operator actually does not exist, but is emulated by '&' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'and_with' instead.

The 'and_with' alias has been introduced in version 0.28.12.

(2) Signature: Edges &= (const Region other)

Description: Selects the parts of the edges inside the given region in-place (modifying self)

Returns:The edge collection after modification (self)

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. Note that in Ruby, the '&=' operator actually does not exist, but is emulated by '&' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'and_with' instead.

The 'and_with' alias has been introduced in version 0.28.12.

+

Signature: [const] Edges + (const Edges other)

Description: Returns the combined edge set of self and the other one

Returns:The resulting edge set

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.

The 'join' alias has been introduced in version 0.28.12.

+=

Signature: Edges += (const Edges other)

Description: Adds the edges of the other edge collection to self

Returns:The edge set after modification (self)

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.

Note that in Ruby, the '+=' operator actually does not exist, but is emulated by '+' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'join_with' instead.

The 'join_with' alias has been introduced in version 0.28.12.

-

(1) Signature: [const] Edges - (const Edges other)

Description: Returns the boolean NOT between self and the other edge collection

Returns:The result of the boolean NOT operation

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.

The 'not' alias has been introduced in version 0.28.12.

Python specific notes:
This attribute is available as 'not_' in Python.

(2) Signature: [const] Edges - (const Region other)

Description: Returns the parts of the edges outside the given region

Returns:The edges outside the given region

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 'not' alias has been introduced in version 0.28.12.

Python specific notes:
This attribute is available as 'not_' in Python.

-=

(1) Signature: Edges -= (const Edges other)

Description: Performs the boolean NOT between self and the other edge collection in-place (modifying self)

Returns:The edge collection after modification (self)

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.

Note that in Ruby, the '-=' operator actually does not exist, but is emulated by '-' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'not_with' instead.

The 'not_with' alias has been introduced in version 0.28.12.

(2) Signature: Edges -= (const Region other)

Description: Selects the parts of the edges outside the given region in-place (modifying self)

Returns:The edge collection after modification (self)

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.

Note that in Ruby, the '-=' operator actually does not exist, but is emulated by '-' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'not_with' instead.

This method has been introduced in version 0.24.The 'not_with' alias has been introduced in version 0.28.12.

DiagonalEdges

Signature: [static,const] Edges::EdgeType DiagonalEdges

Description: Diagonal edges are selected (-45 and 45 degree)

Python specific notes:
The object exposes a readable attribute 'DiagonalEdges'. This is the getter.

DifferentPropertiesConstraint

Signature: [static,const] PropertyConstraint DifferentPropertiesConstraint

Description: Specifies to consider shapes only if their user properties are different

When using this constraint - for example on a boolean operation - shapes are considered only if their user properties are different. Properties are generated on the output shapes where applicable.

Python specific notes:
The object exposes a readable attribute 'DifferentPropertiesConstraint'. This is the getter.

DifferentPropertiesConstraintDrop

Signature: [static,const] PropertyConstraint DifferentPropertiesConstraintDrop

Description: Specifies to consider shapes only if their user properties are different

When using this constraint - for example on a boolean operation - shapes are considered only if their user properties are the same. No properties are generated on the output shapes.

Python specific notes:
The object exposes a readable attribute 'DifferentPropertiesConstraintDrop'. This is the getter.

Euclidian

Signature: [static,const] Metrics Euclidian

Description: Specifies Euclidian metrics for the check functions

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.

Python specific notes:
The object exposes a readable attribute 'Euclidian'. This is the getter.

IgnoreProperties

Signature: [static,const] PropertyConstraint IgnoreProperties

Description: Specifies to ignore properties

When using this constraint - for example on a boolean operation - properties are ignored and are not generated in the output.

Python specific notes:
The object exposes a readable attribute 'IgnoreProperties'. This is the getter.

IncludeZeroDistanceWhenCollinearAndTouching

Signature: [static,const] ZeroDistanceMode IncludeZeroDistanceWhenCollinearAndTouching

Description: Specifies that check functions should include edges when they are collinear and touch

With this specification, the check functions will also check edges if they share at least one common point and are collinear. This is the mode that includes checking the 'kissing corner' cases when the kissing edges are collinear. This mode was default up to version 0.28.

Python specific notes:
The object exposes a readable attribute 'IncludeZeroDistanceWhenCollinearAndTouching'. This is the getter.

IncludeZeroDistanceWhenOverlapping

Signature: [static,const] ZeroDistanceMode IncludeZeroDistanceWhenOverlapping

Description: Specifies that check functions should include edges when they overlap

With this specification, the check functions will also check edges which are collinear and share more than a single point. This is the mode that excludes the 'kissing corner' cases.

Python specific notes:
The object exposes a readable attribute 'IncludeZeroDistanceWhenOverlapping'. This is the getter.

IncludeZeroDistanceWhenTouching

Signature: [static,const] ZeroDistanceMode IncludeZeroDistanceWhenTouching

Description: Specifies that check functions should include edges when they touch

With this specification, the check functions will also check edges if they share at least one common point. This is the mode that includes checking the 'kissing corner' cases. This mode is default for version 0.28.16 and later.

Python specific notes:
The object exposes a readable attribute 'IncludeZeroDistanceWhenTouching'. This is the getter.

NeverIncludeZeroDistance

Signature: [static,const] ZeroDistanceMode NeverIncludeZeroDistance

Description: Specifies that check functions should never include edges with zero distance.

With this specification, the check functions will ignore edges which are collinear or touch.

Python specific notes:
The object exposes a readable attribute 'NeverIncludeZeroDistance'. This is the getter.

NoPropertyConstraint

Signature: [static,const] PropertyConstraint NoPropertyConstraint

Description: Specifies not to apply any property constraint

When using this constraint - for example on a boolean operation - shapes are considered regardless of their user properties. Properties are generated on the output shapes where applicable.

Python specific notes:
The object exposes a readable attribute 'NoPropertyConstraint'. This is the getter.

OrthoDiagonalEdges

Signature: [static,const] Edges::EdgeType OrthoDiagonalEdges

Description: Diagonal or orthogonal edges are selected (0, 90, -45 and 45 degree)

Python specific notes:
The object exposes a readable attribute 'OrthoDiagonalEdges'. This is the getter.

OrthoEdges

Signature: [static,const] Edges::EdgeType OrthoEdges

Description: Horizontal and vertical edges are selected

Python specific notes:
The object exposes a readable attribute 'OrthoEdges'. This is the getter.

Projection

Signature: [static,const] Metrics Projection

Description: Specifies projected distance metrics for the check functions

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.

Python specific notes:
The object exposes a readable attribute 'Projection'. This is the getter.

SamePropertiesConstraint

Signature: [static,const] PropertyConstraint SamePropertiesConstraint

Description: Specifies to consider shapes only if their user properties are the same

When using this constraint - for example on a boolean operation - shapes are considered only if their user properties are the same. Properties are generated on the output shapes where applicable.

Python specific notes:
The object exposes a readable attribute 'SamePropertiesConstraint'. This is the getter.

SamePropertiesConstraintDrop

Signature: [static,const] PropertyConstraint SamePropertiesConstraintDrop

Description: Specifies to consider shapes only if their user properties are the same

When using this constraint - for example on a boolean operation - shapes are considered only if their user properties are the same. No properties are generated on the output shapes.

Python specific notes:
The object exposes a readable attribute 'SamePropertiesConstraintDrop'. This is the getter.

Square

Signature: [static,const] Metrics Square

Description: Specifies square metrics for the check functions

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.

Python specific notes:
The object exposes a readable attribute 'Square'. This is the getter.

[]

Signature: [const] const Edge ptr [] (unsigned long n)

Description: Returns the nth edge of the collection

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.

^

Signature: [const] Edges ^ (const Edges other)

Description: Returns the boolean XOR between self and the other edge collection

Returns:The result of the boolean XOR operation

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 'xor' alias has been introduced in version 0.28.12.

^=

Signature: Edges ^= (const Edges other)

Description: Performs the boolean XOR between self and the other edge collection in-place (modifying self)

Returns:The edge collection after modification (self)

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.

Note that in Ruby, the '^=' operator actually does not exist, but is emulated by '^' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'xor_with' instead.

The 'xor_with' alias has been introduced in version 0.28.12.

_const_cast

Signature: [const] Edges ptr _const_cast

Description: Returns a non-const reference to self.

Basically, this method allows turning a const object reference to a non-const one. This method is provided as last resort to remove the constness from an object. Usually there is a good reason for a const object reference, so using this method may have undesired side effects.

This method has been introduced in version 0.29.6.

_create

Signature: void _create

Description: Ensures the C++ object is created

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

Signature: void _destroy

Description: Explicitly destroys the object

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?

Signature: [const] bool _destroyed?

Description: Returns a value indicating whether the object was already 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?

Signature: [const] bool _is_const_object?

Description: Returns a value indicating whether the reference is a const reference

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

_manage

Signature: void _manage

Description: Marks the object as managed by the script side.

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

Signature: void _unmanage

Description: Marks the object as no longer owned by the script side.

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.

and

(1) Signature: [const] Edges and (const Edges other)

Description: Returns the boolean AND between self and the other edge collection

Returns:The result of the boolean AND operation

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.

The 'and' alias has been introduced in version 0.28.12.

Python specific notes:
This attribute is available as 'and_' in Python.

(2) Signature: [const] Edges and (const Region other)

Description: Returns the parts of the edges inside the given region

Returns:The edges inside the given region

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 'and' alias has been introduced in version 0.28.12.

Python specific notes:
This attribute is available as 'and_' in Python.

and_with

(1) Signature: Edges and_with (const Edges other)

Description: Performs the boolean AND between self and the other edge collection in-place (modifying self)

Returns:The edge collection after modification (self)

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.

Note that in Ruby, the '&=' operator actually does not exist, but is emulated by '&' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'and_with' instead.

The 'and_with' alias has been introduced in version 0.28.12.

(2) Signature: Edges and_with (const Region other)

Description: Selects the parts of the edges inside the given region in-place (modifying self)

Returns:The edge collection after modification (self)

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. Note that in Ruby, the '&=' operator actually does not exist, but is emulated by '&' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'and_with' instead.

The 'and_with' alias has been introduced in version 0.28.12.

andnot

(1) Signature: [const] Edges[] andnot (const Edges other)

Description: Returns the boolean AND and NOT between self and the other edge set

Returns:A two-element array of edge collections with the first one being the AND result and the second one being the NOT result

This method will compute the boolean AND and NOT between two edge sets simultaneously. Because this requires a single sweep only, using this method is faster than doing AND and NOT separately.

This method has been added in version 0.28.

(2) Signature: [const] Edges[] andnot (const Region other)

Description: Returns the boolean AND and NOT between self and the region

Returns:A two-element array of edge collections with the first one being the AND result and the second one being the NOT result

This method will compute the boolean AND and NOT simultaneously. Because this requires a single sweep only, using this method is faster than doing AND and NOT separately.

This method has been added in version 0.28.

assign

Signature: void assign (const Edges other)

Description: Assigns another object to self

bbox

Signature: [const] Box bbox

Description: Returns the bounding box of the edge collection

The bounding box is the box enclosing all points of all edges.

centers

Signature: [const] Edges centers (unsigned int length, double fraction)

Description: Returns edges representing the center part of the edges

Returns:A new collection of edges representing the part around the center

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

Signature: void clear

Description: Clears the edge collection

count

Signature: [const] unsigned long count

Description: Returns the (flat) number of edges in the edge collection

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.

Python specific notes:
This method is also available as 'len(object)'.

create

Signature: void create

Description: Ensures the C++ object is created

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

Signature: [const] unsigned long data_id

Description: Returns the data ID (a unique identifier for the underlying data storage)

This method has been added in version 0.26.

destroy

Signature: void destroy

Description: Explicitly destroys the object

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?

Signature: [const] bool destroyed?

Description: Returns a value indicating whether the object was already 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

Signature: void disable_progress

Description: Disable progress reporting

Calling this method will disable progress reporting. See enable_progress.

dup

Signature: [const] new Edges ptr dup

Description: Creates a copy of self

Python specific notes:
This method also implements '__copy__' and '__deepcopy__'.

each

Signature: [const,iter] Edge each

Description: Returns each edge of the region

Python specific notes:
This method enables iteration of the object.

each_merged

Signature: [const,iter] Edge each_merged

Description: Returns each edge of the region

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

Signature: void enable_progress (string label)

Description: Enable progress reporting

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.

enable_properties

Signature: void enable_properties

Description: Enables properties for the given container.

This method has an effect mainly on original layers and will import properties from such layers. By default, properties are not enabled on original layers. Alternatively you can apply filter_properties or map_properties to enable properties with a specific name key.

This method has been introduced in version 0.28.4.

enclosed_check

Signature: [const] EdgePairs enclosed_check (const Edges other, int d, bool whole_edges = false, Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max, ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)

Description: Performs an inside check with options

d:The minimum distance for which the edges are checked
other:The other edge collection against which to check
whole_edges:If true, deliver the whole edges
metrics:Specify the metrics type
ignore_angle:The threshold angle above which no check is performed
min_projection:The lower threshold of the projected length of one edge onto another
max_projection:The upper threshold of the projected length of one edge onto another
zero_distance_mode:Specifies how to handle edges with zero distance

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. 'zero_distance_mode' has been added in version 0.29.

enclosing_check

Signature: [const] EdgePairs enclosing_check (const Edges other, int d, bool whole_edges = false, Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max, ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)

Description: Performs an enclosing check with options

d:The minimum distance for which the edges are checked
other:The other edge collection against which to check
whole_edges:If true, deliver the whole edges
metrics:Specify the metrics type
ignore_angle:The threshold angle above which no check is performed
min_projection:The lower threshold of the projected length of one edge onto another
max_projection:The upper threshold of the projected length of one edge onto another
zero_distance_mode:Specifies how to handle edges with zero distance

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.

'zero_distance_mode' has been added in version 0.29.

end_segments

Signature: [const] Edges end_segments (unsigned int length, double fraction)

Description: Returns edges representing a part of the edge before the end point

Returns:A new collection of edges representing the end part

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

Signature: [const] Region extended (int b, int e, int o, int i, bool join)

Description: Returns a region with shapes representing the edges with the specified extensions

b:the parallel extension at the start point of the edge
e:the parallel extension at the end point of the edge
o:the perpendicular extension to the "outside" (left side as seen in the direction of the edge)
i:the perpendicular extension to the "inside" (right side as seen in the direction of the edge)
join:If true, connected edges are joined before the extension is applied
Returns:A region containing the polygons representing these extended edges

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

Signature: [const] Region extended_in (int e)

Description: Returns a region with shapes representing the edges with the given width

e:The extension width
Returns:A region containing the polygons representing these extended edges

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

Signature: [const] Region extended_out (int e)

Description: Returns a region with shapes representing the edges with the given width

e:The extension width
Returns:A region containing the polygons representing these extended edges

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

(1) Signature: [const] Region extents

Description: Returns a region with the bounding boxes of the edges

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.

(2) Signature: [const] Region extents (int d)

Description: Returns a region with the enlarged bounding boxes of the edges

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.

(3) Signature: [const] Region extents (int dx, int dy)

Description: Returns a region with the enlarged bounding boxes of the edges

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.

filter

Signature: void filter (const EdgeFilter ptr filter)

Description: Applies a generic filter in place (replacing the edges from the Edges collection)

See EdgeFilter for a description of this feature.

This method has been introduced in version 0.29.

filter_properties

Signature: void filter_properties (variant[] keys)

Description: Filters properties by certain keys.

Calling this method on a container will reduce the properties to values with name keys from the 'keys' list. As a side effect, this method enables properties on original layers.

This method has been introduced in version 0.28.4.

filtered

Signature: [const] Edges filtered (const EdgeFilter ptr filtered)

Description: Applies a generic filter and returns a filtered copy

See EdgeFilter for a description of this feature.

This method has been introduced in version 0.29.

flatten

Signature: void flatten

Description: Explicitly flattens an edge collection

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?

Signature: [const] bool has_valid_edges?

Description: Returns true if the edge collection is flat and individual edges can be accessed randomly

This method has been introduced in version 0.26.

hier_count

Signature: [const] unsigned long hier_count

Description: Returns the (hierarchical) number of edges in the edge collection

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

Signature: [const] Edges in (const Edges other)

Description: Returns all edges which are members of the other edge collection

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

Python specific notes:
This attribute is available as 'in_' in Python.

in_and_out

Signature: [const] Edges[] in_and_out (const Edges other)

Description: Returns all polygons which are members and not members of the other region

This method is equivalent to calling members_of and not_members_of, but delivers both results at the same time and is more efficient than two separate calls. The first element returned is the members_of part, the second is the not_members_of part.

This method has been introduced in version 0.28.

insert

(1) Signature: void insert (const Edge edge)

Description: Inserts an edge

Inserts the edge into the edge collection.

(2) Signature: void insert (const Box box)

Description: Inserts a box

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

(3) Signature: void insert (const Polygon polygon)

Description: Inserts a polygon

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

(4) Signature: void insert (const SimplePolygon polygon)

Description: Inserts a simple polygon

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

(5) Signature: void insert (const Path path)

Description: Inserts a path

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

(6) Signature: void insert (const Edges edges)

Description: Inserts all edges from the other edge collection into this one

This method has been introduced in version 0.25.

(7) Signature: void insert (const Region region)

Description: Inserts a region

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.

(8) Signature: void insert (const Shapes shapes)

Description: Inserts all edges from the shape collection into this edge collection

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.

(9) Signature: void insert (const Shapes shapes, const Trans trans)

Description: Inserts all edges from the shape collection into this edge collection (with transformation)

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.

(10) Signature: void insert (const Shapes shapes, const ICplxTrans trans)

Description: Inserts all edges from the shape collection into this edge collection with complex transformation

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.

(11) Signature: void insert (RecursiveShapeIterator shape_iterator)

Description: Inserts all shapes delivered by the recursive shape iterator into this edge collection

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.

(12) Signature: void insert (RecursiveShapeIterator shape_iterator, ICplxTrans trans)

Description: Inserts all shapes delivered by the recursive shape iterator into this edge collection with a transformation

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.

(13) Signature: void insert (Polygon[] polygons)

Description: Inserts all polygons from the array into this edge collection

(14) Signature: void insert (Edge[] edges)

Description: Inserts all edges from the array into this edge collection

insert_into

Signature: [const] void insert_into (Layout ptr layout, unsigned int cell_index, unsigned int layer)

Description: Inserts this edge collection into the given layout, below the given cell and into the given layer.

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

(1) Signature: [const] Edges inside (const Edges other)

Description: Returns the edges of this edge collection which are inside (completely covered by) edges from the other edge collection

Returns:A new edge collection containing the the selected edges

This method has been introduced in version 0.28.

(2) Signature: [const] Edges inside (const Region other)

Description: Returns the edges from this edge collection which are inside (completely covered by) polygons from the region

Returns:A new edge collection containing the the selected edges

This method has been introduced in version 0.28.

inside_check

Signature: [const] EdgePairs inside_check (const Edges other, int d, bool whole_edges = false, Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max, ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)

Description: Performs an inside check with options

d:The minimum distance for which the edges are checked
other:The other edge collection against which to check
whole_edges:If true, deliver the whole edges
metrics:Specify the metrics type
ignore_angle:The threshold angle above which no check is performed
min_projection:The lower threshold of the projected length of one edge onto another
max_projection:The upper threshold of the projected length of one edge onto another
zero_distance_mode:Specifies how to handle edges with zero distance

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. 'zero_distance_mode' has been added in version 0.29.

inside_outside_part

Signature: [const] Edges[] inside_outside_part (const Region other)

Description: Returns the partial edges inside and outside the given region

Returns:A two-element array of edge collections with the first one being the inside_part result and the second one being the outside_part result

This method will compute the results simultaneously. Because this requires a single sweep only, using this method is faster than doing inside_part and outside_part separately.

This method has been added in version 0.28.

inside_part

Signature: [const] Edges inside_part (const Region other)

Description: Returns the parts of the edges of this edge collection which are inside the polygons of the region

Returns:A new edge collection containing the edge parts inside the region

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

(1) Signature: [const] Edges interacting (const Edges other, unsigned long min_count = 1, unsigned long max_count = unlimited)

Description: Returns the edges of this edge collection which overlap or touch edges from the other edge collection

Returns:A new edge collection containing the edges overlapping or touching edges from the other edge collection

'min_count' and 'max_count' impose a constraint on the number of times an edge of this collection has to interact with (different) edges of the other collection to make the edge selected. An edge is selected by this method if the number of edges interacting with an edge of this collection is between min_count and max_count (including max_count).

'min_count' and 'max_count' have been introduced in version 0.29.

(2) Signature: [const] Edges interacting (const Region other, unsigned long min_count = 1, unsigned long max_count = unlimited)

Description: Returns the edges from this edge collection which overlap or touch polygons from the region

Returns:A new edge collection containing the edges overlapping or touching polygons from the region

'min_count' and 'max_count' impose a constraint on the number of times an edge of this collection has to interact with (different) polygons of the other region to make the edge selected. An edge is selected by this method if the number of polygons interacting with an edge of this collection is between min_count and max_count (including max_count).

'min_count' and 'max_count' have been introduced in version 0.29.

intersections

Signature: [const] Edges intersections (const Edges other)

Description: Computes the intersections between this edges and other edges

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?

Signature: [const] bool is_const_object?

Description: Returns a value indicating whether the reference is a const reference

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?

Signature: [const] bool is_deep?

Description: Returns true if the edge collection is a deep (hierarchical) one

This method has been added in version 0.26.

is_empty?

Signature: [const] bool is_empty?

Description: Returns true if the edge collection is empty

is_merged?

Signature: [const] bool is_merged?

Description: Returns true if the edge collection is merged

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

join

Signature: [const] Edges join (const Edges other)

Description: Returns the combined edge set of self and the other one

Returns:The resulting edge set

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.

The 'join' alias has been introduced in version 0.28.12.

join_with

Signature: Edges join_with (const Edges other)

Description: Adds the edges of the other edge collection to self

Returns:The edge set after modification (self)

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.

Note that in Ruby, the '+=' operator actually does not exist, but is emulated by '+' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'join_with' instead.

The 'join_with' alias has been introduced in version 0.28.12.

length

(1) Signature: [const] unsigned int length

Description: Returns the total length of all edges in the edge collection

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

(2) Signature: [const] unsigned int length (const Box rect)

Description: Returns the total length of all edges in the edge collection (restricted to a rectangle)

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)

map_properties

Signature: void map_properties (map<variant,variant> key_map)

Description: Maps properties by name key.

Calling this method on a container will reduce the properties to values with name keys from the 'keys' hash and renames the properties. Properties not listed in the key map will be removed. As a side effect, this method enables properties on original layers.

This method has been introduced in version 0.28.4.

members_of

Signature: [const] Edges members_of (const Edges other)

Description: Returns all edges which are members of the other edge collection

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

Python specific notes:
This attribute is available as 'in_' in Python.

merge

Signature: Edges merge

Description: Merge the edges

Returns:The edge collection after the edges have been merged (self).

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

Signature: [const] Edges merged

Description: Returns the merged edge collection

Returns:The edge collection after the edges have been 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=

Signature: void merged_semantics= (bool f)

Description: Enable or disable merged semantics

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

Python specific notes:
The object exposes a writable attribute 'merged_semantics'. This is the setter.

merged_semantics?

Signature: [const] bool merged_semantics?

Description: Gets a flag indicating whether merged semantics is enabled

See merged_semantics= for a description of this attribute.

Python specific notes:
The object exposes a readable attribute 'merged_semantics'. This is the getter.

move

(1) Signature: Edges move (const Vector v)

Description: Moves the edge collection

v:The distance to move the edge collection.
Returns:The moved edge collection (self).

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.

(2) Signature: Edges move (int x, int y)

Description: Moves the edge collection

x:The x distance to move the edge collection.
y:The y distance to move the edge collection.
Returns:The moved edge collection (self).

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

moved

(1) Signature: [const] Edges moved (const Vector v)

Description: Returns the moved edge collection (does not modify self)

v:The distance to move the edge collection.
Returns:The moved edge collection.

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.

(2) Signature: [const] Edges moved (int x, int v)

Description: Returns the moved edge collection (does not modify self)

x:The x distance to move the edge collection.
y:The y distance to move the edge collection.
Returns:The moved edge collection.

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

new

(1) Signature: [static] new Edges ptr new

Description: Default constructor

This constructor creates an empty edge collection.

Python specific notes:
This method is the default initializer of the object.

(2) Signature: [static] new Edges ptr new (const Edge edge)

Description: Constructor from a single edge

This constructor creates an edge collection with a single edge.

Python specific notes:
This method is the default initializer of the object.

(3) Signature: [static] new Edges ptr new (Polygon[] array)

Description: Constructor from a polygon array

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

Python specific notes:
This method is the default initializer of the object.

(4) Signature: [static] new Edges ptr new (Edge[] array)

Description: Constructor from an edge array

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

Python specific notes:
This method is the default initializer of the object.

(5) Signature: [static] new Edges ptr new (const Box box)

Description: Box constructor

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

Python specific notes:
This method is the default initializer of the object.

(6) Signature: [static] new Edges ptr new (const Polygon polygon)

Description: Polygon constructor

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

Python specific notes:
This method is the default initializer of the object.

(7) Signature: [static] new Edges ptr new (const SimplePolygon polygon)

Description: Simple polygon constructor

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

Python specific notes:
This method is the default initializer of the object.

(8) Signature: [static] new Edges ptr new (const Path path)

Description: Path constructor

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

Python specific notes:
This method is the default initializer of the object.

(9) Signature: [static] new Edges ptr new (const Shapes shapes, bool as_edges = true)

Description: Constructor of a flat edge collection from a Shapes container

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.

Python specific notes:
This method is the default initializer of the object.

(10) Signature: [static] new Edges ptr new (const RecursiveShapeIterator shape_iterator, bool as_edges = true)

Description: Constructor of a flat edge collection from a hierarchical shape set

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)

Python specific notes:
This method is the default initializer of the object.

(11) Signature: [static] new Edges ptr new (const RecursiveShapeIterator shape_iterator, const ICplxTrans trans, bool as_edges = true)

Description: Constructor of a flat edge collection from a hierarchical shape set with a transformation

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))

Python specific notes:
This method is the default initializer of the object.

(12) Signature: [static] new Edges ptr new (const RecursiveShapeIterator shape_iterator, DeepShapeStore dss, bool as_edges = true)

Description: Constructor of a hierarchical edge collection

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)

Python specific notes:
This method is the default initializer of the object.

(13) Signature: [static] new Edges ptr new (const RecursiveShapeIterator shape_iterator, DeepShapeStore dss, const ICplxTrans trans, bool as_edges = true)

Description: Constructor of a hierarchical edge collection with a transformation

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.

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
dbu    = 0.1 # the target database unit
r = RBA::Edges::new(layout.begin_shapes(cell, layer), dss, RBA::ICplxTrans::new(layout.dbu / dbu), false)

Python specific notes:
This method is the default initializer of the object.

(14) Signature: [static] new Edges ptr new (const RecursiveShapeIterator shape_iterator, string expr, bool as_pattern = true)

Description: Constructor from a text set

shape_iterator:The iterator from which to derive the texts
expr:The selection string
as_pattern:If true, the selection string is treated as a glob pattern. Otherwise the match is exact.

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.

Python specific notes:
This method is the default initializer of the object.

(15) Signature: [static] new Edges ptr new (const RecursiveShapeIterator shape_iterator, DeepShapeStore dss, string expr, bool as_pattern = true)

Description: Constructor from a text set

shape_iterator:The iterator from which to derive the texts
dss:The DeepShapeStore object that acts as a heap for hierarchical operations.
expr:The selection string
as_pattern:If true, the selection string is treated as a glob pattern. Otherwise the match is exact.

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.

Python specific notes:
This method is the default initializer of the object.

not

(1) Signature: [const] Edges not (const Edges other)

Description: Returns the boolean NOT between self and the other edge collection

Returns:The result of the boolean NOT operation

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.

The 'not' alias has been introduced in version 0.28.12.

Python specific notes:
This attribute is available as 'not_' in Python.

(2) Signature: [const] Edges not (const Region other)

Description: Returns the parts of the edges outside the given region

Returns:The edges outside the given region

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 'not' alias has been introduced in version 0.28.12.

Python specific notes:
This attribute is available as 'not_' in Python.

not_in

Signature: [const] Edges not_in (const Edges other)

Description: Returns all edges which are not members of the other edge collection

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

not_inside

(1) Signature: [const] Edges not_inside (const Edges other)

Description: Returns the edges of this edge collection which are not inside (completely covered by) edges from the other edge collection

Returns:A new edge collection containing the the selected edges

This method has been introduced in version 0.28.

(2) Signature: [const] Edges not_inside (const Region other)

Description: Returns the edges from this edge collection which are not inside (completely covered by) polygons from the region

Returns:A new edge collection containing the the selected edges

This method has been introduced in version 0.28.

not_interacting

(1) Signature: [const] Edges not_interacting (const Edges other, unsigned long min_count = 1, unsigned long max_count = unlimited)

Description: Returns the edges of this edge collection which do not overlap or touch edges from the other edge collection

Returns:A new edge collection containing the edges not overlapping or touching edges from the other edge collection

'min_count' and 'max_count' impose a constraint on the number of times an edge of this collection has to interact with (different) edges of the other collection to make the edge selected. An edge is not selected by this method if the number of edges interacting with an edge of this collection is between min_count and max_count (including max_count).

'min_count' and 'max_count' have been introduced in version 0.29.

(2) Signature: [const] Edges not_interacting (const Region other, unsigned long min_count = 1, unsigned long max_count = unlimited)

Description: Returns the edges from this edge collection which do not overlap or touch polygons from the region

Returns:A new edge collection containing the edges not overlapping or touching polygons from the region

'min_count' and 'max_count' impose a constraint on the number of times an edge of this collection has to interact with (different) polygons of the other region to make the edge selected. An edge is not selected by this method if the number of polygons interacting with an edge of this collection is between min_count and max_count (including max_count).

'min_count' and 'max_count' have been introduced in version 0.29.

not_members_of

Signature: [const] Edges not_members_of (const Edges other)

Description: Returns all edges which are not members of the other edge collection

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

not_outside

(1) Signature: [const] Edges not_outside (const Edges other)

Description: Returns the edges of this edge collection which are not outside (partially overlapped by) edges from the other edge collection

Returns:A new edge collection containing the the selected edges

This method has been introduced in version 0.28.

(2) Signature: [const] Edges not_outside (const Region other)

Description: Returns the edges from this edge collection which are not outside (partially overlapped by) polygons from the region

Returns:A new edge collection containing the the selected edges

This method has been introduced in version 0.28.

not_with

(1) Signature: Edges not_with (const Edges other)

Description: Performs the boolean NOT between self and the other edge collection in-place (modifying self)

Returns:The edge collection after modification (self)

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.

Note that in Ruby, the '-=' operator actually does not exist, but is emulated by '-' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'not_with' instead.

The 'not_with' alias has been introduced in version 0.28.12.

(2) Signature: Edges not_with (const Region other)

Description: Selects the parts of the edges outside the given region in-place (modifying self)

Returns:The edge collection after modification (self)

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.

Note that in Ruby, the '-=' operator actually does not exist, but is emulated by '-' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'not_with' instead.

This method has been introduced in version 0.24.The 'not_with' alias has been introduced in version 0.28.12.

or

Signature: [const] Edges or (const Edges other)

Description: Returns the boolean OR between self and the other edge set

Returns:The resulting edge collection

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 'or' alias has been introduced in version 0.28.12.

Python specific notes:
This attribute is available as 'or_' in Python.

or_with

Signature: Edges or_with (const Edges other)

Description: Performs the boolean OR between self and the other edge set in-place (modifying self)

Returns:The edge collection after modification (self)

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. Note that in Ruby, the '|=' operator actually does not exist, but is emulated by '|' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'or_with' instead.

The 'or_with' alias has been introduced in version 0.28.12.

outside

(1) Signature: [const] Edges outside (const Edges other)

Description: Returns the edges of this edge collection which are outside (not overlapped by) edges from the other edge collection

Returns:A new edge collection containing the the selected edges

This method has been introduced in version 0.28.

(2) Signature: [const] Edges outside (const Region other)

Description: Returns the edges from this edge collection which are outside (not overlapped by) polygons from the region

Returns:A new edge collection containing the the selected edges

This method has been introduced in version 0.28.

outside_part

Signature: [const] Edges outside_part (const Region other)

Description: Returns the parts of the edges of this edge collection which are outside the polygons of the region

Returns:A new edge collection containing the edge parts outside the region

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

Signature: [const] EdgePairs overlap_check (const Edges other, int d, bool whole_edges = false, Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max, ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)

Description: Performs an overlap check with options

d:The minimum distance for which the edges are checked
other:The other edge collection against which to check
whole_edges:If true, deliver the whole edges
metrics:Specify the metrics type
ignore_angle:The threshold angle above which no check is performed
min_projection:The lower threshold of the projected length of one edge onto another
max_projection:The upper threshold of the projected length of one edge onto another
zero_distance_mode:Specifies how to handle edges with zero distance

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.

'zero_distance_mode' has been added in version 0.29.

process

Signature: void process (const EdgeOperator ptr process)

Description: Applies a generic edge processor in place (replacing the edges from the Edges collection)

See EdgeProcessor for a description of this feature.

This method has been introduced in version 0.29.

processed

(1) Signature: [const] Edges processed (const EdgeOperator ptr processed)

Description: Applies a generic edge processor and returns a processed copy

See EdgeProcessor for a description of this feature.

This method has been introduced in version 0.29.

(2) Signature: [const] EdgePairs processed (const EdgeToEdgePairOperator ptr processed)

Description: Applies a generic edge-to-edge-pair processor and returns an edge pair collection with the results

See EdgeToEdgePairProcessor for a description of this feature.

This method has been introduced in version 0.29.

(3) Signature: [const] Region processed (const EdgeToPolygonOperator ptr processed)

Description: Applies a generic edge-to-polygon processor and returns an edge collection with the results

See EdgeToPolygonProcessor for a description of this feature.

This method has been introduced in version 0.29.

pull_interacting

(1) Signature: [const] Region pull_interacting (const Region other)

Description: Returns all polygons of "other" which are interacting with (overlapping, touching) edges of this edge set

Returns:The region after the polygons have been selected (from other)

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

(2) Signature: [const] Edges pull_interacting (const Edges other)

Description: Returns all edges of "other" which are interacting with polygons of this edge set

Returns:The edge collection after the edges have been selected (from other)

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

remove_properties

Signature: void remove_properties

Description: Removes properties for the given container.

This will remove all properties on the given container.

This method has been introduced in version 0.28.4.

select_inside

(1) Signature: Edges select_inside (const Edges other)

Description: Selects the edges from this edge collection which are inside (completely covered by) edges from the other edge collection

Returns:The edge collection after the edges have been selected (self)

This method has been introduced in version 0.28.

(2) Signature: Edges select_inside (const Region other)

Description: Selects the edges from this edge collection which are inside (completely covered by) polygons from the region

Returns:The edge collection after the edges have been selected (self)

This method has been introduced in version 0.28.

select_inside_part

Signature: Edges select_inside_part (const Region other)

Description: Selects the parts of the edges from this edge collection which are inside the polygons of the given region

Returns:The edge collection after the edges have been selected (self)

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

(1) Signature: Edges select_interacting (const Edges other, unsigned long min_count = 1, unsigned long max_count = unlimited)

Description: Selects the edges from this edge collection which overlap or touch edges from the other edge collection

Returns:The edge collection after the edges have been selected (self)

This is the in-place version of interacting - i.e. self is modified rather than a new collection is returned.

'min_count' and 'max_count' have been introduced in version 0.29.

(2) Signature: Edges select_interacting (const Region other, unsigned long min_count = 1, unsigned long max_count = unlimited)

Description: Selects the edges from this edge collection which overlap or touch polygons from the region

Returns:The edge collection after the edges have been selected (self)

This is the in-place version of interacting - i.e. self is modified rather than a new collection is returned.

'min_count' and 'max_count' have been introduced in version 0.29.

select_not_inside

(1) Signature: Edges select_not_inside (const Edges other)

Description: Selects the edges from this edge collection which are not inside (completely covered by) edges from the other edge collection

Returns:The edge collection after the edges have been selected (self)

This method has been introduced in version 0.28.

(2) Signature: Edges select_not_inside (const Region other)

Description: Selects the edges from this edge collection which are not inside (completely covered by) polygons from the region

Returns:The edge collection after the edges have been selected (self)

This method has been introduced in version 0.28.

select_not_interacting

(1) Signature: Edges select_not_interacting (const Edges other, unsigned long min_count = 1, unsigned long max_count = unlimited)

Description: Selects the edges from this edge collection which do not overlap or touch edges from the other edge collection

Returns:The edge collection after the edges have been selected (self)

This is the in-place version of not_interacting - i.e. self is modified rather than a new collection is returned.

'min_count' and 'max_count' have been introduced in version 0.29.

(2) Signature: Edges select_not_interacting (const Region other, unsigned long min_count = 1, unsigned long max_count = unlimited)

Description: Selects the edges from this edge collection which do not overlap or touch polygons from the region

Returns:The edge collection after the edges have been selected (self)

This is the in-place version of not_interacting - i.e. self is modified rather than a new collection is returned.

'min_count' and 'max_count' have been introduced in version 0.29.

select_not_outside

(1) Signature: Edges select_not_outside (const Edges other)

Description: Selects the edges from this edge collection which are not outside (partially overlapped by) edges from the other edge collection

Returns:The edge collection after the edges have been selected (self)

This method has been introduced in version 0.28.

(2) Signature: Edges select_not_outside (const Region other)

Description: Selects the edges from this edge collection which are not outside (partially overlapped by) polygons from the region

Returns:The edge collection after the edges have been selected (self)

This method has been introduced in version 0.28.

select_outside

(1) Signature: Edges select_outside (const Edges other)

Description: Selects the edges from this edge collection which are outside (not overlapped by) edges from the other edge collection

Returns:The edge collection after the edges have been selected (self)

This method has been introduced in version 0.28.

(2) Signature: Edges select_outside (const Region other)

Description: Selects the edges from this edge collection which are outside (not overlapped by) polygons from the region

Returns:The edge collection after the edges have been selected (self)

This method has been introduced in version 0.28.

select_outside_part

Signature: Edges select_outside_part (const Region other)

Description: Selects the parts of the edges from this edge collection which are outside the polygons of the given region

Returns:The edge collection after the edges have been selected (self)

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

Signature: [const] EdgePairs separation_check (const Edges other, int d, bool whole_edges = false, Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max, ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)

Description: Performs an overlap check with options

d:The minimum distance for which the edges are checked
other:The other edge collection against which to check
whole_edges:If true, deliver the whole edges
metrics:Specify the metrics type
ignore_angle:The threshold angle above which no check is performed
min_projection:The lower threshold of the projected length of one edge onto another
max_projection:The upper threshold of the projected length of one edge onto another
zero_distance_mode:Specifies how to handle edges with zero distance

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.

'zero_distance_mode' has been added in version 0.29.

size

Signature: [const] unsigned long size

Description: Returns the (flat) number of edges in the edge collection

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.

Python specific notes:
This method is also available as 'len(object)'.

space_check

Signature: [const] EdgePairs space_check (int d, bool whole_edges = false, Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max, ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)

Description: Performs a space check with options

d:The minimum distance for which the edges are checked
whole_edges:If true, deliver the whole edges
metrics:Specify the metrics type
ignore_angle:The threshold angle above which no check is performed
min_projection:The lower threshold of the projected length of one edge onto another
max_projection:The upper threshold of the projected length of one edge onto another
zero_distance_mode:Specifies how to handle edges with zero distance

If "whole_edges" is true, the resulting EdgePairs collection will receive the whole edges which contribute in the space 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.

'zero_distance_mode' has been added in version 0.29.

split_inside

(1) Signature: [const] Edges[] split_inside (const Edges other)

Description: Selects the edges from this edge collection which are and are not inside (completely covered by) edges from the other collection

Returns:A two-element list of edge collections (first: inside, second: non-inside)

This method provides a faster way to compute both inside and non-inside edges compared to using separate methods. It has been introduced in version 0.28.

(2) Signature: [const] Edges[] split_inside (const Region other)

Description: Selects the edges from this edge collection which are and are not inside (completely covered by) polygons from the other region

Returns:A two-element list of edge collections (first: inside, second: non-inside)

This method provides a faster way to compute both inside and non-inside edges compared to using separate methods. It has been introduced in version 0.28.

split_interacting

(1) Signature: [const] Edges[] split_interacting (const Edges other, unsigned long min_count = 1, unsigned long max_count = unlimited)

Description: Selects the edges from this edge collection which do and do not interact with edges from the other collection

Returns:A two-element list of edge collections (first: interacting, second: non-interacting)

This method provides a faster way to compute both interacting and non-interacting edges compared to using separate methods. It has been introduced in version 0.28. 'min_count' and 'max_count' have been introduced in version 0.29.

(2) Signature: [const] Edges[] split_interacting (const Region other, unsigned long min_count = 1, unsigned long max_count = unlimited)

Description: Selects the edges from this edge collection which do and do not interact with polygons from the other region

Returns:A two-element list of edge collections (first: interacting, second: non-interacting)

This method provides a faster way to compute both interacting and non-interacting edges compared to using separate methods. It has been introduced in version 0.28. 'min_count' and 'max_count' have been introduced in version 0.29.

split_outside

(1) Signature: [const] Edges[] split_outside (const Edges other)

Description: Selects the edges from this edge collection which are and are not outside (not overlapped by) edges from the other collection

Returns:A two-element list of edge collections (first: outside, second: non-outside)

This method provides a faster way to compute both outside and non-outside edges compared to using separate methods. It has been introduced in version 0.28.

(2) Signature: [const] Edges[] split_outside (const Region other)

Description: Selects the edges from this edge collection which are and are not outside (not overlapped by) polygons from the other region

Returns:A two-element list of edge collections (first: outside, second: non-outside)

This method provides a faster way to compute both outside and non-outside edges compared to using separate methods. It has been introduced in version 0.28.

start_segments

Signature: [const] Edges start_segments (unsigned int length, double fraction)

Description: Returns edges representing a part of the edge after the start point

Returns:A new collection of edges representing the start part

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

Signature: void swap (Edges other)

Description: Swap the contents of this edge collection with the contents of another one

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

(1) Signature: [const] string to_s

Description: Converts the edge collection to a string

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.

Python specific notes:
This method is also available as 'str(object)'.

(2) Signature: [const] string to_s (unsigned long max_count)

Description: Converts the edge collection to a string

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

transform

(1) Signature: Edges transform (const Trans t)

Description: Transform the edge collection (modifies self)

t:The transformation to apply.
Returns:The transformed edge collection.

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

(2) Signature: Edges transform (const ICplxTrans t)

Description: Transform the edge collection with a complex transformation (modifies self)

t:The transformation to apply.
Returns:The transformed edge collection.

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

(3) Signature: Edges transform (const IMatrix2d t)

Description: Transform the edge collection (modifies self)

t:The transformation to apply.
Returns:The transformed edge collection.

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.

(4) Signature: Edges transform (const IMatrix3d t)

Description: Transform the edge collection (modifies self)

t:The transformation to apply.
Returns:The transformed edge collection.

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

Signature: Edges transform_icplx (const ICplxTrans t)

Description: Transform the edge collection with a complex transformation (modifies self)

t:The transformation to apply.
Returns:The transformed edge collection.

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

(1) Signature: [const] Edges transformed (const Trans t)

Description: Transform the edge collection

t:The transformation to apply.
Returns:The transformed edge collection.

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

(2) Signature: [const] Edges transformed (const ICplxTrans t)

Description: Transform the edge collection with a complex transformation

t:The transformation to apply.
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.

(3) Signature: [const] Edges transformed (const IMatrix2d t)

Description: Transform the edge collection

t:The transformation to apply.
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.

(4) Signature: [const] Edges transformed (const IMatrix3d t)

Description: Transform the edge collection

t:The transformation to apply.
Returns:The transformed edge collection.

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

Signature: [const] Edges transformed_icplx (const ICplxTrans t)

Description: Transform the edge collection with a complex transformation

t:The transformation to apply.
Returns:The transformed edge collection.

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

Signature: [const] EdgePairs width_check (int d, bool whole_edges = false, Metrics metrics = Euclidian, variant ignore_angle = default, variant min_projection = 0, variant max_projection = max, ZeroDistanceMode zero_distance_mode = IncludeZeroDistanceWhenTouching)

Description: Performs a width check with options

d:The minimum width for which the edges are checked
whole_edges:If true, deliver the whole edges
metrics:Specify the metrics type
ignore_angle:The threshold angle above which no check is performed
min_projection:The lower threshold of the projected length of one edge onto another
max_projection:The upper threshold of the projected length of one edge onto another
zero_distance_mode:Specifies how to handle edges with zero distance

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.

'zero_distance_mode' has been added in version 0.29.

with_abs_angle

(1) Signature: [const] Edges with_abs_angle (double angle, bool inverse)

Description: Filter the edges by orientation

This method behaves like with_angle, but angles are always positive - i.e. there is no differentiation between edges sloping 'down' vs. edges sloping 'up.

This method has been added in version 0.29.1.

(2) Signature: [const] Edges with_abs_angle (double min_angle, double max_angle, bool inverse, bool include_min_angle = true, bool include_max_angle = false)

Description: Filter the edges by orientation

This method behaves like with_angle, but angles are always positive - i.e. there is no differentiation between edges sloping 'down' vs. edges sloping 'up.

This method has been added in version 0.29.1.

with_angle

(1) Signature: [const] Edges with_angle (double angle, bool inverse)

Description: Filters the edges by orientation

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_angle(0, false)

(2) Signature: [const] Edges with_angle (double min_angle, double max_angle, bool inverse, bool include_min_angle = true, bool include_max_angle = false)

Description: Filters the edges by orientation

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.

(3) Signature: [const] Edges with_angle (Edges::EdgeType type, bool inverse)

Description: Filters the edges by orientation type

Filters the edges in the edge collection by orientation. If "inverse" is false, only edges which have an angle of the given type are returned. If "inverse" is true, edges which do not conform to this criterion are returned.

This version allows specifying an edge type instead of an angle. Edge types include multiple distinct orientations and are specified using one of the OrthoEdges, DiagonalEdges or OrthoDiagonalEdges types.

This method has been added in version 0.28.

with_length

(1) Signature: [const] Edges with_length (unsigned int length, bool inverse)

Description: Filters the edges by 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.

(2) Signature: [const] Edges with_length (variant min_length, variant max_length, bool inverse)

Description: Filters the edges by length

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.

write

Signature: [const] void write (string filename)

Description: Writes the region to a file

This method is provided for debugging purposes. It writes the object to a flat layer 0/0 in a single top cell.

This method has been introduced in version 0.29.

xor

Signature: [const] Edges xor (const Edges other)

Description: Returns the boolean XOR between self and the other edge collection

Returns:The result of the boolean XOR operation

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 'xor' alias has been introduced in version 0.28.12.

xor_with

Signature: Edges xor_with (const Edges other)

Description: Performs the boolean XOR between self and the other edge collection in-place (modifying self)

Returns:The edge collection after modification (self)

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.

Note that in Ruby, the '^=' operator actually does not exist, but is emulated by '^' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'xor_with' instead.

The 'xor_with' alias has been introduced in version 0.28.12.

|

Signature: [const] Edges | (const Edges other)

Description: Returns the boolean OR between self and the other edge set

Returns:The resulting edge collection

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 'or' alias has been introduced in version 0.28.12.

Python specific notes:
This attribute is available as 'or_' in Python.

|=

Signature: Edges |= (const Edges other)

Description: Performs the boolean OR between self and the other edge set in-place (modifying self)

Returns:The edge collection after modification (self)

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. Note that in Ruby, the '|=' operator actually does not exist, but is emulated by '|' followed by an assignment. This is less efficient than the in-place operation, so it is recommended to use 'or_with' instead.

The 'or_with' alias has been introduced in version 0.28.12.