X3DProductStructureChildNode : X3DChildNode {
  SFString [in,out] name ""
}

CADAssembly : X3DGroupingNode, X3DProductStructureChildNode {
  MFNode   [in]     addChildren
  MFNode   [in]     removeChildren
  MFNode   [in,out] children       []       [X3DProductStructureChildNode, X3DGroupingNode]
  SFNode   [in,out] metadata       NULL     [X3DMetadataObject]
  SFString [in,out] name           ""
  SFVec3f  []       bboxCenter     0 0 0    (-Inf,Inf)
  SFVec3f  []       bboxSize       -1 -1 -1 [0,Inf) or -1 -1 -1
}

CADFace : X3DProductStructureChildNode, X3DBoundedObject {
  SFNode   [in,out] metadata   NULL     [X3DMetadataObject]
  SFString [in,out] name       ""
  SFNode   [in,out] shape      NULL     [X3DShapeNode, LOD]
  SFVec3f  []       bboxCenter 0 0 0    (-Inf, Inf)
  SFVec3f  []       bboxSize   -1 -1 -1 [0, Inf) or -1 -1 -1
}

CADLayer : X3DGroupingNode {
  MFNode   [in]     addChildren
  MFNode   [in]     removeChildren
  MFNode   [in,out] children       []       [X3DChildNode]
  SFNode   [in,out] metadata       NULL     [X3DMetadataObject]
  SFString [in,out] name           ""
  MFBool   [in,out] visible        []
  SFVec3f  []       bboxCenter     0 0 0    (-Inf,Inf)
  SFVec3f  []       bboxSize       -1 -1 -1 [0,Inf) or -1 -1 -1
}

CADPart : X3DGroupingNode, X3DProductStructureChildNode {
  MFNode     [in]     addChildren
  MFNode     [in]     removeChildren
  SFVec3f    [in,out] center           0 0 0    (-Inf,Inf)
  MFNode     [in,out] children         []       [CADFace]
  SFNode     [in,out] metadata         NULL     [X3DMetadataObject]
  SFString   [in,out] name             ""
  SFRotation [in,out] rotation         0 0 1 0  [-1,1] or (-Inf,Inf)
  SFVec3f    [in,out] scale            1 1 1    (0,Inf)
  SFRotation [in,out] scaleOrientation 0 0 1 0  [-1,1] or (-Inf,Inf)
  SFVec3f    [in,out] translation      0 0 0    (-Inf,Inf)
  SFVec3f    []       bboxCenter       0 0 0    (-Inf,Inf)
  SFVec3f    []       bboxSize         -1 -1 -1 [0,Inf) or -1 -1 -1
}

IndexedQuadSet : X3DComposedGeometryNode {
  MFInt32 [in]     set_index       []   [0,Inf)
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] coord           NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE
  SFBool  []       colorPerVertex  TRUE
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
  MFInt32 []       index           []   [0,Inf)
}

QuadSet : X3DComposedGeometryNode {
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] coord           NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE
  SFBool  []       colorPerVertex  TRUE
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
}

