• 0 Vote(s) - 0 Average
• 1
• 2
• 3
• 4
• 5

the addCurve Method in c# only takes a Mat type which is not a list but only a single position fro what i can see. in c# how would you pass it a list of points?
This code should show an example to convert an array of doubles to a Mat file that you can use for RoboDK.AddCurve()

// Create the list of points as an array of array of doubles
// The size is 4 points set as XYZijk. XYZ is the position and ijk is the tool Z axis (ijk is optional)
const int np = 4;
double[,] points_xyzijk = new double[np, 6] {{0,0,0, 0,0,1}, { 500, 0, 0, 0, 0, 1 }, { 500, 500, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 1 } };

// Convert a double array of arrays to a Mat object:
Mat points_mat = new Mat(6, np);
for (int c=0; c<np; c++)
{
for (int r=0; r<6; r++)
{
points_mat[r,c] = points_xyzijk[c,r];
}
}

// Load the mat file in RoboDK

// Rename the curve object
object_curve.setName("Imported Curve");

```public static Mat PointListToMat(Point[] pts, Vector ToolVec = null)        {            Vector tv = ToolVec;            if(ToolVec == null) tv = Vector.ZAxis();            // Create the list of points as an array of array of double            int np = pts.Length;                double[] xyzijk = new double[6];            // Convert a double array of arrays to a Mat object:            Mat points_mat = new Mat(6, np);            for (int c = 0; c < np; c++)            {                points_mat[0, c] = pts[c].X;                points_mat[1, c] = pts[c].Y;                points_mat[2, c] = pts[c].Z;                points_mat[3, c] = tv.X;                points_mat[4, c] = tv.Y;                points_mat[5, c] = tv.Z;                            }            return points_mat;        }```