The following commands describe topological parts of NURBS elements.

### NURBSVERT

NURBSVERTx, y, z, hard, tolerance

Vertex, a node of a NURBS body. Different from any vertex created by the VERT command, indexed separately from those. Can be used in NURBS bodies only, excluding planar-face bodies.

**x, y, z: **

coordinates of vertex**hard: **

`1: `

if the vertex should define a break when rendering smooth surfaces,`0: `

otherwise.**tolerance: **

maximum geometric distance between NURBS vertex and other entities (NURBS edge, NURBS face) which are topologically connected to it. If negative, tolerance will be some predefined default.### NURBSEDGE

NURBSEDGEvert1, vert2, curve, curveDomainBeg, curveDomainEnd, status, tolerance

Edge of a NURBS body. Different from any edge created by the EDGE command, indexed separately from those. Can be used in NURBS bodies only, excluding planar-face bodies.

**vert1, vert2: **

gdl-index of begin and end NURBS vertices- vert1 and vert2 can be equal. In this case the edge is a loop edge (and its curve is closed or has a closed part)
- vert1 and vert2 can be zero for a ring edge (which has no vertices and its curve is closed or has a closed part)

**curve: **

gdl-index of NURBS curve for the geometry of edge. Positive index, orientation of edge always coincide with orientation of the curve.**curveDomainBeg, curveDomainEnd: **

definition of the part of curve which geometrically represents the edge. The `curveDomainEnd`

must be greater than

`curveDomainBeg`

, they must not coincide, and both value must be in the usable domain of the curve.**status: **

status control of the edge:`status = j`_{1} + 2*j_{2} + 4*j_{3}

, where each j can be 0 or 1.`j`_{1}:

invisible edge (may be set only if `j`_{2}

is not set).`j`_{2}:

edge only visible if contour (may be set only if `j`_{1}

is not set).`j`_{3}:

smooth edge (edge does not define a break when rendering smooth surfaces).If both `j`

and _{1}`j`

are set, the edge will produce an error causing the whole NURBS-body to vanish._{2}

**tolerance: **

maximum geometric distance between NURBS edge and other entities (NURBS face) which are topologically connected to it. If negative, tolerance will be some predefined default.

`[curveDomainBeg, curveDomainEnd]`

must be closed, i.e. it evaluates equally at each endpoints. Any number of edges can be attached to a vertex. The color of a NURBS edge is defined by the last PEN statement.### NURBSTRIM

NURBSTRIMedge, curve, curveDomainBeg, curveDomainEnd, tolerance

### NURBSTRIMSINGULAR

NURBSTRIMSINGULARvertex, curve, curveDomainBeg, curveDomainEnd, tolerance

A bounding edge of a face. Used for trimming a face in the parameter space of the surface of the face. NURBSTRIMSINGULAR is used along singular sides of the surface (which side is contracted to one point on the surface). Connects the face to an edge (or to a vertex in singular case).

**edge: **

gdl-index of NURBS edge to which this trim is attached. Positive index, edge and trim are always oriented consistently.**vertex: **

gdl-index of NURBS vertex to which this trim is attached (singular case).**curve: **

gdl-index of a 2D NURBS curve. Positive index, curve and trim are always oriented consistently. It is defined on the domain (u-v parameter space) of the surface of the face.**curveDomainBeg, curveDomainEnd: **

definition of the part of curve which geometrically represents the trim. The `curveDomainEnd`

must be greater than `curveDomainBeg`

, they must not coincide, and both value must be in the usable domain of the curve.**tolerance: **

maximum geometric distance between 2D curve of NURBS trim and other entities (other NURBS trims) which are topologically connected to it. If negative, tolerance will be some predefined default.

`[curveDomainBeg, curveDomainEnd]`

interval should completely lie within the usable domain of the surface of the face (with given tolerance). For NURBSTRIMSINGULAR the 2D curve must lie along a singular side of the usable domain (u-v parameter space) of the surface of the face.The composition of the restricted 2D curve and the surface gives a 3D curve which should coincide with the restricted 3D curve of the edge. Therefore the 2D curve evaluated at `curveDomainBeg`

and `curveDomainEnd`

should coincide with the position of the appropriate vertex. In the singular case the composition of the 2D curve and the surface gives a 3D point, which should coincide with the given vertex.

Indexing of singular and non-singular trims is common.

Any number of trims can refer to each edge (so indirectly any number of face can be attached to an edge). The edge can be non-2-manifold. Two trims on one edge may belong to the same face, in this case edge is called a seam edge. For example a mantle of a cylinder can be one face with a seam edge.

### NURBSFACE

NURBSFACEn, surface, tolerance, trim1, trim2, ..., trimn

Face of a NURBS body. Different from any polygon created by the PGON command, indexed separately from those. Can be used in NURBS bodies only, excluding planar-face bodies.

**n: **

number of bounding edges (including optional hole-separator zeros).**surface: **

gdl-index of a NURBS surface supporting the face. Positive index, orientation of face is always identical to the orientation of surface.**trimi: **

gdl-index of NURBS trim bounding the face.- The trims are listed in a counter-clockwise (mathematical positive) order on the surface for the outer contour loop and clockwise (negative) for hole contour loop(s).
- May be zero, which indicates end of contour (hole-separator).
- Negative index means trim and the contour (of face) have opposite orientation.

**tolerance: **

if negative, tolerance will be some predefined default.The trims must connect at common vertices: the end vertex of a trim is the same as the begin vertex of the next trim in the face. (The vertices of a trim are the vertices of the edge of the trim for a non-singular trim.)

The consecutive trims – as 2D curves – also connect in the domain (parameter space) of the face, defining one or more closed contour loops on it. The first loop is always an outer loop which separates an infinite outer and a finite inner region on the plane. The potential subsequent loops are hole contours.

The 2D curve of each trim should completely lie inside the usable domain of the surface of the face and should not intersect itself or curves of other trims of the face. Each trim must be used in only one face.

The material and section attributes of a face are determined by the last MATERIAL and SECT_ATTRS (or SECT_FILL) statements respectively. The color of the edges inside the face created for polygonal segmentations is defined by the last PEN statement. This is practically visible on silhouettes coming from the internal of this face.

### NURBSFACE{2}

NURBSFACE{2}n, surface, tolerance, wrap_method, wrap_flags, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, trim1, trim2, ..., trimn

Similar to NURBSFACE command., extended with the ability to describe texture mapping on the NURBS face like in

PGON{3} command.