dbCreateMultipleCurvedPolygons
dbCreateMultipleCurvedPolygons(
d_cellViewId
txl_layerPurpose
l_curvedPoints
)
=> list(d_curvedPolygonIds) / nil
Description
(Virtuoso MultiTech Framework) Creates multiple curved polygons in the specified cellview on the specified layer or layer-purpose pair using the specified points.
Arguments
|
d_cellViewId
|
Database ID of a cellview.
|
|
txl_layerPurpose
|
Name, number, or a list of layers or layer-purpose pairs.
|
|
l_curvedPoints
|
list(boundary [l_holes])
List of one boundary and zero or more holes forming a complex closed curve. Each boundary or hole is represented by a dbClosedCurve, which is a list of vertexes. In a vertex, pairs of adjacent vertexes represent edges, which can be straight or circular:
-
A straight edge is indicated by two end points without an arc qualifier on the beginning edge.
-
A circular edge may be indicated by explicitly specifying the center or implicitly specifying the center. The explicit specification requires the center to be on the DBU grid. The implicit specification does not require the center to be on the DBU grid.
The points list can be a mix of explicit center-based or implicit angle-based specifications. Each element in the list describes a vertex on the curved shape.
|
|
|
L_curvedPoints := (elem)*
elem := {<x:float> <y:float> ([("arc" | "arcByCenter") ("cw" | "ccw")] | ["arcByAngle" <angle:float>])}
Here, keywords for explicit specification are "arc" and "arcByCenter" followed by "cw"(clockwise), or "ccw" (counter clockwise), to specify the direction. Keywords for implicit specification, where you do not define the center explicitly, are "arcCentralAngle" and "arcByAngle". In implicit specification, to specify a clockwise arc, specify a negative value for the angle specification.
In dbCreateMultipleCurvedPolygons, this information is used to split the boundary into multiple polygons by the holes. It is possible to choose the holes in such a way that the original boundary is no longer a single shape and is split. When it is possible to split the original boundary, dbCreateMultipleCurvedPolygons is used to create one or more polygons, depending on into how many polygons the boundary was split.
|
Value Returned
|
list(d_curvedPolygonIds)
|
|
|
List of IDs of created curved polygons.
|
|
nil
|
An error occurred.
|
Example
The boundary is sliced into two by a big hole shape to create two polygons.
solid = '(
(180 0 "arcCentralAngle" 90)
(200 20)
(200 80 "arcCentralAngle" 90)
(180 100)
(20 100 "arcCentralAngle" 90)
(0 80)
(0 20 "arcCentralAngle" 90)
(20 0)
)
hole = '(
(50 0)
(100 0)
(100 100)
(50 100)
)
dbCreateMultipleCurvedPolygons(cv '("BD4" "drawing") list(solid list(hole)))
Return to top