线程评级:
c# addCurve
# 1
在c#中的addCurve方法只需要一个垫子类型,这不是一个列表,但只有一个单一的位置,我可以看到。在c#中,你如何传递一个点列表?
这段代码应该展示了一个示例,将一个双精度数组转换为一个可以用于RoboDK.AddCurve()的Mat文件。

//创建点列表作为双精度数组的数组
//大小为4点,设置为XYZijk。XYZ为位置,ijk为工具Z轴(ijk可选)
Const int np = 4;
双[,]points_xyzijk = new双(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}};

//将数组的双数组转换为Mat对象:
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];



//在RoboDK中加载mat文件
RoboDK。项目object_curve = RDK.AddCurve(points_mat);

//重命名曲线对象
object_curve。setName(“进口曲线”);


更多信息请点击这里:
//www.w5838.com/doc/en/CsAPI/api/Robo...ctionType_
# 3
完美的感谢工作,这不是最直观的方式来创建一个对象。下面是我编辑的代码,以防它帮助别人。为了速度和清晰度,我删除了一个循环,并直接索引了double[]

代码:
PointListToMat(Point[] pts, Vector ToolVec = null)

向量tv = ToolVec;
if(ToolVec == null) tv = Vector.ZAxis();

//创建点列表为array of double的数组
int np = pts.Length;

Double [] xyzijk = new Double [6];

//将数组的双数组转换为Mat对象:
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;



返回points_mat;




浏览此线程的用户:
1客人(年代)