if(OrderU == 1 && OrderV == 1 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 1, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 1 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 1, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 1 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 1, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 1 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 1, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 1 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 1, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 2 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 2, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 2 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 2, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 2 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 2, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 2 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 2, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 2 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 2, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 3 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 3, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 3 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 3, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 3 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 3, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 3 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 3, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 3 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 3, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 4 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 4, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 4 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 4, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 4 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 4, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 4 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 4, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 4 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 4, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 5 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 5, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 5 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 5, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 5 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 5, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 5 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 5, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 1 && OrderV == 5 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 1, 5, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 1 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 1, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 1 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 1, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 1 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 1, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 1 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 1, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 1 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 1, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 2 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 2, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 2 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 2, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 2 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 2, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 2 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 2, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 2 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 2, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 3 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 3, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 3 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 3, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 3 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 3, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 3 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 3, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 3 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 3, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 4 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 4, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 4 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 4, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 4 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 4, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 4 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 4, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 4 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 4, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 5 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 5, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 5 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 5, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 5 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 5, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 5 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 5, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 2 && OrderV == 5 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 2, 5, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 1 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 1, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 1 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 1, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 1 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 1, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 1 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 1, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 1 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 1, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 2 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 2, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 2 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 2, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 2 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 2, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 2 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 2, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 2 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 2, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 3 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 3, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 3 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 3, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 3 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 3, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 3 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 3, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 3 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 3, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 4 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 4, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 4 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 4, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 4 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 4, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 4 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 4, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 4 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 4, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 5 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 5, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 5 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 5, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 5 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 5, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 5 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 5, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 3 && OrderV == 5 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 3, 5, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 1 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 1, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 1 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 1, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 1 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 1, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 1 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 1, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 1 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 1, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 2 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 2, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 2 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 2, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 2 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 2, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 2 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 2, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 2 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 2, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 3 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 3, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 3 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 3, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 3 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 3, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 3 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 3, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 3 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 3, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 4 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 4, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 4 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 4, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 4 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 4, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 4 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 4, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 4 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 4, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 5 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 5, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 5 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 5, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 5 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 5, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 5 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 5, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 4 && OrderV == 5 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 4, 5, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 1 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 1, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 1 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 1, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 1 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 1, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 1 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 1, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 1 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 1, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 2 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 2, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 2 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 2, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 2 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 2, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 2 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 2, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 2 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 2, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 3 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 3, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 3 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 3, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 3 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 3, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 3 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 3, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 3 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 3, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 4 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 4, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 4 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 4, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 4 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 4, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 4 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 4, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 4 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 4, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 5 && OrderW == 1)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 5, 1>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 5 && OrderW == 2)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 5, 2>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 5 && OrderW == 3)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 5, 3>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 5 && OrderW == 4)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 5, 4>(ThisPoints, CtrlWeights, ExtractionOperator));
if(OrderU == 5 && OrderV == 5 && OrderW == 5)
    p_temp_geometry = GeometryType::Pointer(new Bezier3D<PointType, 5, 5, 5>(ThisPoints, CtrlWeights, ExtractionOperator));
