Generate xyz coordinates of a tube made of multiple rings
Thanks for sharing your code.

For the generation of your z-coordinate you can write something like:

def generate_z_coordinate(n, x0, x1):
    """Generate the z-coordinate for the n first ring.
       :param n: the number of ring
       :param x0: x0 coordinate
       :param x1: x1 coordinate
       :return: A list of the z-coordinate for the n rings
    """
    tmp = 0
    rings = []
    for i in range(0,n):
        if i % 2 == 0:
            x = x0
        else:
            x = x1
        rings.append(np.ones(x.shape) * tmp)
        tmp += 2
    return rings


I used tmp because I lack a better name, but there is probably a better way to name it.

And saving in the csv:

def save(filename, rings, x0, y0, x1, y1):
    """Save rings coordinate into filename
       :param filename: Name of the file to save data in
       :param rings: list of z-coordinate for the rings
       :param x0: x0 coordinate
       :param y0: y0 coordinate
       :param x1: x1 coordinate
       :param y1: y1 coordinate
    """
    for i, elt in enumerate(rings):
        name = filename + str(i) + '.csv'
        if i % 2 == 0:
            x = x0
            y = y0
            z = rings[i]
        else:
            x = x1
            y = y1
            z = rings[i]

        np.savetxt(name, np.c_[x, y, z], delimiter=' ', fmt='%10f') 


I am not sure it is more readable than your version but it's more scalable. Depend on what you need.

Also try to be consistant in your code and follow Python style guide(see PEP8):


write bLength = 1.6 instead of bLength=1.6
theta = np.linspace(0, 2 * np.pi, numPoints, endpoint=False)


You can use flake8 or black or PyLint to lint your code