(points: Sequence[Point23Input], 
                        subdivisions: int = DEFAULT_SUBDIVISIONS, 
                        extrude_height: float = DEFAULT_EXTRUDE_HEIGHT, 
                        show_controls: bool =False,
                        center: bool=True)
return shape
Return a closed OpenSCAD polygon object through all of `points`, 
    extruded to `extrude_height`. If `show_controls` is True, return red 
    cylinders at each of the specified control points; this makes it easier to
    move determine which points should move to get a desired shape.

    NOTE: if `extrude_height` is 0, this function returns a 2D `polygon()`
    object, which OpenSCAD can only combine with other 2D objects 
    (e.g. `square`, `circle`, but not `cube` or `cylinder`). If `extrude_height`
    is nonzero, the object returned will be 3D and only combine with 3D objects.
Return a closed OpenSCAD polygon object through all of `points`, 
    extruded to `extrude_height`. If `show_controls` is True, return red 
    cylinders at each of the specified control points; this makes it easier to
    move determine which points should move to get a desired shape.
Return a closed OpenSCAD polygon object through all of points extruded to extrude_height . If show_controls is True return red cylinders at each of the specified control points ; this makes it easier to move determine which points should move to get a desired shape .
def catmull_rom_polygon(points: Sequence[Point23Input], 
                        subdivisions: int = DEFAULT_SUBDIVISIONS, 
                        extrude_height: float = DEFAULT_EXTRUDE_HEIGHT, 
                        show_controls: bool =False,
                        center: bool=True) -> OpenSCADObject:
    """
    Return a closed OpenSCAD polygon object through all of `points`, 
    extruded to `extrude_height`. If `show_controls` is True, return red 
    cylinders at each of the specified control points; this makes it easier to
    move determine which points should move to get a desired shape.

    NOTE: if `extrude_height` is 0, this function returns a 2D `polygon()`
    object, which OpenSCAD can only combine with other 2D objects 
    (e.g. `square`, `circle`, but not `cube` or `cylinder`). If `extrude_height`
    is nonzero, the object returned will be 3D and only combine with 3D objects.
    """
    catmull_points = catmull_rom_points(points, subdivisions, close_loop=True)
    shape = polygon(catmull_points)
    if extrude_height > 0:
        shape = linear_extrude(height=extrude_height, center=center)(shape)

    if show_controls:
        shape += control_points(points, extrude_height, center)
    return shape
def catmull_rom_polygon ( points : Sequence [ Point23Input ] , subdivisions : int = DEFAULT_SUBDIVISIONS , extrude_height : float = DEFAULT_EXTRUDE_HEIGHT , show_controls : bool = False , center : bool = True ) -> OpenSCADObject : catmull_points = catmull_rom_points ( points , subdivisions , close_loop = True ) shape = polygon ( catmull_points ) if extrude_height > 0 : shape = linear_extrude ( height = extrude_height , center = center ) ( shape ) if show_controls : shape += control_points ( points , extrude_height , center ) return shape