08-11-2017, 10:14 AM

Hi Lovu,

NO, PMAC can't draw an ellipse directly.

However, if you manipulate your axis scaling, then you should be able to "stretch" a circle to ellipse.

the way to achieve this is, figuring out correct scale on each axis and then implement the scaling in transformation matrix.

to do this:

1. You need to calculate unit NORMAL vector XYZ direction component length. let's say they are Lx Ly Lz, and Lx^2+Ly^2+Lz^2 = 1

2. you need to define your ellipse's "long-axis" vector, and this will be the direction you want to stretch the circle. and of course, this vector has to be normal to NORMAL vector of the circle.

3. get XYZ direction components of this long-axis vector, let's say it's [Ax, Ay, Az]. and then you find the scaling between each direction. X-axis direction scaling will be Sx=Ax/Lx, and so on

4. Put these 3 values in transformation matrix. This part I won't explain here. Please see Turbo PMAC User Manual, Axis Transformation Matrices section.

5. In motion program, go to the short-axis position of your ellipse, and then to TSELn command, which will use transformation n to do the following move.

6. pmatch is the next command. This is to make sure that the axis position calculation is correct from current motor position after the scaling provided in matrix n. at this point, you should not see a position jump because the short-axis direction should have a unit scaling.

7. draw the circle with circle command.

8. when it finishes, do command TSEL0 to deselect the transformation.

Although we haven't tried it, this should work.

NO, PMAC can't draw an ellipse directly.

However, if you manipulate your axis scaling, then you should be able to "stretch" a circle to ellipse.

the way to achieve this is, figuring out correct scale on each axis and then implement the scaling in transformation matrix.

to do this:

1. You need to calculate unit NORMAL vector XYZ direction component length. let's say they are Lx Ly Lz, and Lx^2+Ly^2+Lz^2 = 1

2. you need to define your ellipse's "long-axis" vector, and this will be the direction you want to stretch the circle. and of course, this vector has to be normal to NORMAL vector of the circle.

3. get XYZ direction components of this long-axis vector, let's say it's [Ax, Ay, Az]. and then you find the scaling between each direction. X-axis direction scaling will be Sx=Ax/Lx, and so on

4. Put these 3 values in transformation matrix. This part I won't explain here. Please see Turbo PMAC User Manual, Axis Transformation Matrices section.

5. In motion program, go to the short-axis position of your ellipse, and then to TSELn command, which will use transformation n to do the following move.

6. pmatch is the next command. This is to make sure that the axis position calculation is correct from current motor position after the scaling provided in matrix n. at this point, you should not see a position jump because the short-axis direction should have a unit scaling.

7. draw the circle with circle command.

8. when it finishes, do command TSEL0 to deselect the transformation.

Although we haven't tried it, this should work.