The CylinderMesh object applies a 'cylinder' mesh to the BasePart it is parented to.
What does a CylinderMesh do?
A CylinderMesh gives the BasePart it was applied to a cylinder shaped mesh.
The mesh applied gives the same appearance as that due to the SpecialMesh.MeshType of a SpecialMesh being set to 'Cylinder' or Part.Shape being set to 'Cylinder'. However, unlike those two cases, it is orientated so that the height of the cylinder is along the BasePart's Y axis.
The dimensions of the mesh scale relative to the BasePart.Size of the BasePart. This scale is uniformly along the BasePart's Y axis and maintaining a 1:1 ratio for the part's X and Z axis, using the lowest value. This means the BasePart can be resized normally, but the cross section of the cylinder will always remain a circle and cannot be stretched or compressed.
Note as the CylinderMesh object does not include a texture the DataModelMesh.VertexColor property does not do anything.
Why use a CylinderMesh?
The advantage of using a mesh over setting the Part.Shape property of a part to 'Cylinder' is that the DataModelMesh.Scale and DataModelMesh.Offset properties are exposed. These allow the position and dimensions of the mesh that is displayed to be changed without changing the BasePart.Position or BasePart.Size of the Part the mesh is parented to.
The key difference between a CylinderMesh or a SpecialMesh with SpecialMesh.MeshType set to 'Cylinder' is the orientation of the cylinder mesh. With a CylinderMesh, the height of the cylinder is aligned with the height (Y axis) of the part. With a SpecialMesh (or Part with Part.Shape set to 'Cylinder'), the height of the cylinder is aligned with the X axis.
1local part = Instance.new("Part")2part.Position = Vector3.new(0, 2, 0)3part.Size = Vector3.new(10, 2, 5)4part.Anchored = true56local mesh = Instance.new("CylinderMesh")7mesh.Parent = part89mesh.Scale = Vector3.new(1, 1, 1)10mesh.Offset = Vector3.new(0, 0, 0)1112local adornment = Instance.new("SelectionBox")13adornment.Adornee = part14adornment.Parent = part1516part.Parent = workspace