You could create an uncapped cylinder of the corresponding size with vtkCylinderSource filter, assign its output to a modelNode and crop the model with two markupsPlanes created by code with the dynamicModeler’s tool planeCut
You can make same GUI and set up event observers to make this easy to edit if you want.
On your method the radial simmetry of the aproximated cylinder will be limited by volume spacing. In the method I described it will be limited by the resolution factor you set up on the cylinderSource.
If you want more points along the cylinder’s height you should use vtkTubeFilter instead of vtkCylinderSource