X3DNurbsControlCurveNode : X3DNode {
  default-container-field: children
  MFVec2d  [in,out] controlPoint []
    range: (-Inf,Inf)
}

X3DParametricGeometryNode : X3DGeometryNode {
}

X3DNurbsSurfaceGeometryNode : X3DParametricGeometryNode {
  SFNode   [in,out] controlPoint  []
    range: X3DCoordinateNode
    change: chGeometry
  SFNode   [in,out] texCoord      []
    range: X3DTextureCoordinateNode|NurbsTextureCoordinate
    change: chGeometry
  SFInt32  [in,out] uTessellation 0
    range: (-Inf,Inf)
    change: chGeometry
  SFInt32  [in,out] vTessellation 0
    range: (-Inf,Inf)
    change: chGeometry
  MFDouble [in,out] weight        []
    range: (0,Inf)
    change: chGeometry
  SFBool   []       solid         TRUE
    change: chGeometry
  SFBool   []       uClosed       FALSE
    change: chGeometry
  SFInt32  []       uDimension    0
    range: [0,Inf)
    change: chGeometry
  MFDouble []       uKnot         []
    range: (-Inf,Inf)
    change: chGeometry
  SFInt32  []       uOrder        3
    range: [2,Inf)
    change: chGeometry
  SFBool   []       vClosed       FALSE
    change: chGeometry
  SFInt32  []       vDimension    0
    range: [0,Inf)
    change: chGeometry
  MFDouble []       vKnot         []
    range: (-Inf,Inf)
    change: chGeometry
  SFInt32  []       vOrder        3
    range: [2,Inf)
    change: chGeometry
}

Contour2D : X3DNode {
  default-container-field: trimmingContour
  MFNode [in]     addChildren
    range: NurbsCurve2D|ContourPolyline2D
  MFNode [in]     removeChildren
    range: NurbsCurve2D|ContourPolyline2D
  MFNode [in,out] children       []
    range: NurbsCurve2D|ContourPolyline2D
    change: chEverything
}

ContourPolyline2D : X3DNurbsControlCurveNode {
  default-container-field: geometry
}

CoordinateDouble : X3DCoordinateNode {
  MFVec3d [in,out] point    []
    range: (-Inf,Inf)
    change: chCoordinate
}

NurbsCurve : X3DParametricGeometryNode {
  SFNode   [in,out] controlPoint []
    range: X3DCoordinateNode
    change: chGeometry
  SFInt32  [in,out] tessellation 0
    range: (-Inf,Inf)
    change: chGeometry
  MFDouble [in,out] weight       []
    range: (0,Inf)
    change: chGeometry
  SFBool   []       closed       FALSE
    change: chGeometry
  MFDouble []       knot         []
    range: (-Inf,Inf)
    change: chGeometry
  SFInt32  []       order        3
    range: [2,Inf)
    change: chGeometry
}

NurbsCurve2D : X3DNurbsControlCurveNode {
  SFInt32  [in,out] tessellation 0
    range: (-Inf,Inf)
  MFDouble [in,out] weight       []
    range: (0,Inf)
  SFBool   []       closed       FALSE
  MFDouble []       knot         []
    range: (-Inf,Inf)
  SFInt32  []       order        3
    range: [2,Inf)
}

NurbsOrientationInterpolator : X3DChildNode {
  SFFloat    [in]     set_fraction
    range: (-Inf,Inf)
  SFNode     [in,out] controlPoint []
    range: X3DCoordinateNode
  MFDouble   [in,out] knot          []
    range: (-Inf,Inf)
  SFInt32    [in,out] order         3
    range: (2,Inf)
  MFDouble   [in,out] weight        []
    range: (-Inf,Inf)
  SFRotation [out]    value_changed
}

NurbsPatchSurface : X3DNurbsSurfaceGeometryNode {
}

NurbsPositionInterpolator : X3DChildNode {
  SFFloat  [in]     set_fraction
    range: (-Inf,Inf)
  SFNode   [in,out] controlPoint  []
    range: X3DCoordinateNode
  MFDouble [in,out] knot          []
    range: (-Inf,Inf)
  SFInt32  [in,out] order         3
    range: (2,Inf)
  MFDouble [in,out] weight        []
    range: (-Inf,Inf)
  SFVec3f  [out]    value_changed
}

NurbsSet : X3DChildNode, X3DBoundedObject {
  MFNode  [in]     addGeometry
    range: X3DNurbsSurfaceGeometryNode
  MFNode  [in]     removeGeometry
    range: X3DNurbsSurfaceGeometryNode
  MFNode  [in,out] geometry          []
    range: X3DNurbsSurfaceGeometryNode
  SFFloat [in,out] tessellationScale 1.0
    range: (0,Inf)
  SFVec3f []       bboxCenter        0 0 0
    range: (-Inf,Inf)
  SFVec3f []       bboxSize          -1 -1 -1
    range: [0,Inf) or -1 -1 -1
}

NurbsSurfaceInterpolator : X3DChildNode {
  SFVec2f  [in]     set_fraction
    range: (-Inf,Inf)
  SFNode   [in,out] controlPoint     []
    range: X3DCoordinateNode
  MFDouble [in,out] weight           []
    range: (-Inf,Inf)
  SFVec3f  [out]    position_changed
  SFVec3f  [out]    normal_changed
  SFInt32  []       uDimension       0
    range: [0,Inf)
  MFDouble []       uKnot            []
    range: (-Inf,Inf)
  SFInt32  []       uOrder           3
    range: [2,Inf)
  SFInt32  []       vDimension       0
    range: [0,Inf)
  MFDouble []       vKnot            []
    range: (-Inf,Inf)
  SFInt32  []       vOrder           3
    range: [2,Inf)
}

NurbsSweptSurface : X3DParametricGeometryNode {
  SFNode [in,out] crossSectionCurve []
    range: X3DNurbsControlCurveNode
    change: chGeometry
  SFNode [in,out] trajectoryCurve   []
    range: NurbsCurve
    change: chGeometry
  SFBool []       ccw               TRUE
    change: chGeometry
  SFBool []       solid             TRUE
    change: chGeometry
}

NurbsSwungSurface : X3DParametricGeometryNode {
  SFNode [in,out] profileCurve      []
    range: X3DNurbsControlCurveNode
    change: chGeometry
  SFNode [in,out] trajectoryCurve   []
    range: X3DNurbsControlCurveNode
    change: chGeometry
  SFBool []       ccw               TRUE
    change: chGeometry
  SFBool []       solid             TRUE
    change: chGeometry
}

NurbsTextureCoordinate : X3DNode {
  default-container-field: texCoord
  MFVec2f  [in,out] controlPoint []
    range: (-Inf,Inf)
  MFFloat  [in,out] weight       []
    range: (0,Inf)
  SFInt32  []       uDimension   0
    range: [0,Inf)
  MFDouble []       uKnot        []
    range: (-Inf,Inf)
  SFInt32  []       uOrder       3
    range: [2,Inf)
  SFInt32  []       vDimension   0
    range: [0,Inf)
  MFDouble []       vKnot        []
    range: (-Inf,Inf)
  SFInt32  []       vOrder       3
    range: [2,Inf)
}

NurbsTrimmedSurface : X3DNurbsSurfaceGeometryNode {
  MFNode   [in]     addTrimmingContour
    range: Contour2D
  MFNode   [in]     removeTrimmingContour
    range: Contour2D
  MFNode   [in,out] trimmingContour       []
    range: Contour2D
    change: chGeometry
}
