请选择 进入手机版 | 继续访问电脑版

NX二次开发

 找回密码
 立即注册
查看: 419|回复: 0

[已解决] UF_MODL_ask_curve_points 【线的离散点】

[复制链接]

4

主题

105

帖子

679

积分

终身VIP会员

Rank: 6Rank: 6

积分
679
发表于 2020-7-15 15:39:32 | 显示全部楼层 |阅读模式
本帖最后由 elan 于 2020-7-15 18:30 编辑
  1.                 tag_t selEdge = TYSelEdgeDlg();
  2.                 if (selEdge)
  3.                 {
  4.                         //selEdge = 103297;
  5.                         double ctol = 0;
  6.                         double atol = 0.0;
  7.                         double stol = 1;
  8.                         double temp_pt[3];
  9.                         double *pts;
  10.                         int numpts;
  11.                         tag_t pt_tag;
  12.                         UF_CALL(UF_MODL_ask_curve_points(selEdge, ctol, atol, stol, &numpts, &pts));
  13.                         for (int i = 0; i < 3 * numpts; ++i)
  14.                         {
  15.                                 temp_pt[0] = pts[i];
  16.                                 temp_pt[1] = pts[++i];
  17.                                 temp_pt[2] = pts[++i];
  18.                                 UF_CURVE_create_point(temp_pt, &pt_tag);
  19.                         }
  20.                         lw->WriteLine(UHelper::FormString(numpts));
  21.                         UF_free(pts);
  22.                 }
复制代码
  1. void getCurvePointSet(tag_t mCurve_id, int *n_pts, double **pts)
  2. {
  3.         *n_pts = 0;
  4.         *pts = NULL;
  5.         logical is_line(false);
  6.         UF_EVAL_p_t evaluator;
  7.         UF_CALL(UF_EVAL_initialize(mCurve_id, &evaluator));
  8.         UF_CALL(UF_EVAL_is_line(evaluator, &is_line));
  9.         if (is_line)
  10.         {
  11.                 UF_EVAL_line_t line;
  12.                 UF_EVAL_ask_line(evaluator, &line);
  13.                 *n_pts = 2;
  14.                 *pts = (double *)malloc(6*sizeof(double));
  15.                 (*pts)[0] = line.start[0];
  16.                 (*pts)[1] = line.start[1];
  17.                 (*pts)[2] = line.start[2];
  18.                 (*pts)[3] = line.end[0];
  19.                 (*pts)[4] = line.end[1];
  20.                 (*pts)[5] = line.end[2];
  21.         }
  22.         else
  23.         {
  24.                 double ctol(0.0);
  25.                 double atol(0.0);
  26.                 double stol(1.0);
  27.                 double temp_pt[3];
  28.                 double *ufPts = NULL;
  29.                 int numpts(0);
  30.                 tag_t pt_tag(NULL_TAG);
  31.                 UF_CALL(UF_MODL_ask_curve_points(mCurve_id, ctol, atol, stol, &numpts, &ufPts));
  32.                 if (numpts)
  33.                 {
  34.                         *pts = (double *)malloc((numpts * 3)*sizeof(double));
  35.                         memcpy(*pts, ufPts, (numpts * 3)*sizeof(double));
  36.                         *n_pts = numpts;
  37.                         UF_free(ufPts);
  38.                 }
  39.         }
  40.         UF_EVAL_free(evaluator);
  41. }
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋| ( 蜀ICP备16014681号

GMT+8, 2020-9-23 07:19 , Processed in 0.076738 second(s), 23 queries .

Powered by www.nxopen.cn

© 2001-2013 nxopen.cn

快速回复 返回顶部 返回列表