Frequently asked questions

The following are frequently asked questions about McCircMode.

I understand mcBorder and mcCenter, but I still don't know how to use mcRadius in Axis Coordinate System (ACS).

mcRadius is the most difficult circular mode for beginners to understand. Before we explain how to use it, you need to know how to define a plane.

In a space, there are unlimited planes. Each of them contains unlimited points and normal vectors (normals). A normal is a line perpendicular to the plane. To find the plane we need, we need to give a point and a normal. This point is the starting position of an axis group, and the normal is AuxPoint. When we set EndPoint for an axis group, the EndPoint must be on the same plane the starting position and AuxPoint defines.

Keep the following in mind:

Let's see some mcRadius examples in 3D and 2D so you better understand how mcRadius works.

3D

In 3D space, you have three axes to move. If you define an XY plane, the normal (AuxPoint) will be on Z-axis. Similarly, if you define an YZ plane, the normal will be on X-axis, and on an XZ plane the normal is on Y-axis.

Red Line: X-axis, Green Line: Y-axis, Arrows: normals

XY plane

YZ plane

XZ plane

Tilted plane: if your plane is tilted, the normals will be oblique. To calculate a point on the plane, you need to use the following plane equation:

(x-x0, y-y0, z-z0) x (a, b, c) = 0 -> a(x-x0) + b(y-y0) + c(z-z0) = 0.

(x, y, z): one point on the plane. It can be a starting point or EndPoint.

(x0, y0, z0): another point on the plane. It can be a starting point or EndPoint.

(a, b, c): a normal, AuxPoint.

The equation can be simplified to ax + by + cz + d = 0. d = -ax0 - by0 - cz0.

To see the result, send a MoveCircularAbsolute command with these points.

2D

On a 2D plane, you have two axes to move, but it's mandatory to use three values in AuxPoint and EndPoint. Since there is no third axis, the normal must be on Z-axis. It works like XY plane in 3D.

Example:

Starting point: (-200, 300, 0) -> To show the consistency with AuxPoint and EndPoint, we use three points. Z-axis must be zero.

AuxPoint: (0, 0, 200) -> 200 is the radius and normal. It must be on Z-axis.

EndPoint: (-600, 300, 0) -> Z-axis must be zero.

 

As the figure shows, the radius is 200. The axes are moving to the left. Either you set mcShortPath or mcLongPath. If AuxPoint is (0, 0, 200), the axes travel along the upper arc of the circle; if AuxPoint is (0, 0, -200), the axes travel along the lower arc.

Red Line: X-axis, Green Line: Y-axis

To see the result, send a MoveCircularAbsolute command with these points.

Can the radius value be negative?

Yes, the radius value can be positive or negative, depending on the direction your axis moves.

I can't use MoveCircularRelative or MoveCircularAdditive to get the correct result.

You need to remember that Relative and Additive use distance to move your axis, not position. When you move axes from A to B, you need to calculate the distance between A and B, and set the distance to AuxPoint and EndPoint. For example, your axes are moving from A (-6, 4, 4) to B (-9, 4, 7). The McCircMode mode is mcCenter, so AuxPoint is the center of the circle. You need to calculate the distance between the original and new center of the circle, the distance between the starting position and end position, and then set these two distance values to AuxPoint and EndPoint.

 

Example:

Starting position: (-6, 4, 4)

End position: (-9, 4, 7)

Distance = End position - Starting position = (-3, 0, 3)

EndPoint: (-3, 0, 3)

 

Original center of the circle: (-6, 4, 4). It is also the starting point.

New center of the circle: (-9, 4, 4)

Distance = New center - Original center = (-3, 0, 0)

AuxPoint = (-3, 0, 0)

 

For beginners, Absolute is more intuitive to use. If it is confusing to use distance, use MoveCircularAbsolute.