ROTATELN
Rotates a point distribution (specified by ifirst,ilast,istride) about a line. The copy option allows the user to make a copy of the original points as well as the rotated points, while nocopy just keeps the rotated points themselves. The line of rotation defined by x1 through z2 needs to be defined such that the endpoints extend beyond the point distribution being rotated. theta (in degrees) is the angle of rotation whose positive direction is determined by the right-hand-rule, that is, if the thumb of your right hand points in the direction of the line (1 to 2), then your fingers will curl in the direction of rotation. xcen,ycen,zcen is the point where the line can be shifted to before rotation takes place.
If the copy option is chosen, the new points will have only coordinate values (xic, yic, zic); no values will be set for any other mesh object attribute for these points.

Note:  The end points of the  line segment must extend well beyond the point set being rotated.

FORMAT: rotateln /ifirst,ilast,istride/ [no] copy / x1,y1,z1/x2,y2,z2/theta/xcen,ycen,zcen/
 
EXAMPLE:
* input.cylrot use rotateln and trans to move cylinder
* create a cylinder centered around  x=.5,z=.5, radius = .1
* the cylinder is aligned parallel to the y-axis.
* inside a box of width =2 , length=2 ,height=1
* the regions are air for the cylinder - solid outside the cyl.
* points are spread by surrounding the whole object with
* a cylinder shell of points and then creating rays between
* these points and the major axis of the cylinder.  Points
* are distributed along these rays inside the cylindrical region.
* a background rectangular grid of points is spread outside the
* cylinder.
cmo/create/3dmesh
surface/box1/reflect /box/-1.0,-1.0,0.0/ 1.0, 1.0, 1.0/
surface/h1/intrface /cylinder/ 0.5, -1.,0.5/ 0.5, 1.0, 0.5/.1/
region/H1/ le box1 and le h1 /
region/Fill/ le box1 and gt h1 /
mregion/Air/ le box1 and lt h1 /
mregion/Solid/Fill
createpts/xyz/11,11,1/-1.,-1.,1.1/1.0,1.0,1.1/,1,1,0/
pset/rays/seq/1,0,0/
regnpts/Fill/11/pset,get,rays/xyz/ 0.0,0.0,-0.1/1.0,1.0,-0.1/ &
0.0,1.0,-0.1/0,0/
* the rz command always distributes points with the z-axis as
* the axis of symmetry
* use the rotateln and trans commands to move the point
* distribution after it is created.
createpts/rtz/1,13,11/5.,0.,-1./5.,360.,1./0,1,1/0,0,0/
pset/ray1/seq/0,0,0/
rotateln/pset,get,ray1/nocopy/-100.,0.,0./100.,0.,0./-90./0.,0.,0./
trans/pset,get,ray1/0.,0.,0./0.5,0.,0.5/
regnpts/H1/3/pset,get,ray1/rtz/0.5,-1.1,0.5/0.5,1.1,0.5/0,0/
filter/1,0,0/
cmo/setatt//itp1/pset,get,rays/21
cmo/setatt//itp1/pset,get,ray1/21
setpts
connect
settets
dump/gmv/gmv.cylrot/3dmesh
finish

click here for image