Circular Movement

moveCircle3d

moveCircle3d(cx:=LREAL, cy:=LREAL, cz:=LREAL, nx:=LREAL, ny:=LREAL, nz:=LREAL, angle:=LREAL, height:=LREAL)

Move circular by rotating around the center cx,cy,cz and the normal vector nx,ny,nz by the given angle. If height is nonzero, a helix is described. If angle is greater than a full circle, a multiturn circle or a multiturn helix is described. The rotation is performed according to the right hand rule. Using a negative angle or flipping the normal will reverse the direction of rotation. The angle value is interpreted using the current angle unit. The parameters x, y, z, cx, cy, cz are interpreted using the current length unit.

Circular Movement 1:

The radius must be nonzero.

Example:

The resulting path of the following example is shown in Figure “ExampleMoveCircle3D”. The invocation of moveCircle3D describes a helical movement. It starts at the current point that is [40,10,0]. The center axis of the helix is defined by the point [30,10,0] and direction [gSin(22.5),0,gCos(22.5)]. Compared to the workingplane normal [0,0,1] the axis is tilted by 22.5 degree in X-direction. The angle of 720+90 degree describes a multiturn helix. It exhibits a height of 30 with respect to the center axis. The endpoint of the helix is not explicitly programmed to avoid redundancy. If the user requires these coordinates, they can be retrieved by the frameGet(…) function, as demonstrated. The approximate coordinates are shown in Figure “ExampleMoveCircle3D”.

{
VAR
    x,y,z: LREAL;
END_VAR

!N10 G01 X40 Y10 F6000
moveCircle3D(cx:=30, cy:=10, cz:=0, nx:=gSin(22.5), ny:=0, nz:=gCos(22.5), angle:=720+90, height:=30);
frameGet(x=>x,y=>y,z=>z);
}
M02
Circular Movement 2:

Figure “ExampleMoveCircle3D”.