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:
- AuxPoint is a normal vector perpendicular to the plane we specify. Its length is the circle radius.
- The distance between the starting point and EndPoint cannot be longer than twice the radius (diameter).
- The facing direction of the plane is determined by the normal (AuxPoint).
- Since the starting point and EndPoint are on the plane, they are perpendicular to AuxPoint. We can get an equation from that:
StartEnd x AuxPoint = 0
StartEnd = the vector from the starting point to EndPoint.
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.
- XY plane example:
- Tilted plane example:
Starting point: (100, 100, 0)
AuxPoint: (0, 0, 300)
EndPoint: (600, 400, 0)
Starting point: (600, 600, 500)
AuxPoint: (500, -200, 400)
EndPoint: (200, 200, 800) or (400, 300, 600)
Plane equation: 5x - 2y + 4z = 3800
To confirm whether the starting point and Endpoint is on the plane, replace x, y, z with either point in the plane equation.
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.