PLM之家PLMHome-工业软件践行者

[二次开发源码] NX 二次开发中创建曲线命令及获取点,线,圆弧信息源码

[复制链接]

2013-11-27 15:21:12 3044 0

admin 发表于 2013-11-27 15:21:12 |阅读模式

admin 楼主

2013-11-27 15:21:12

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
NX 二次开发中创建曲线命令及获取点,线,圆弧信息源码
- A6 n! i9 C" @
, I+ \) H% d" _$ F6 y6 K: Y( D4 A
  1. <p>static void do_UGopenapi()
    0 h+ r. S6 F, d2 Z' Y; c% ?; B' c
  2. {# a$ Q: ^. Q' g. [0 v8 G6 d* v/ U" i( i4 R
  3. /*
      w8 ^2 {) B6 _+ l4 [( H% E( H
  4. Create Curve
    # u+ w  Z" w2 B1 K2 v2 ?: u" N/ b
  5. */8 ]8 I! s3 O& d  c! w
  6. // create line' }( [3 g( E5 P; h3 O: w
  7. UF_CURVE_line_t line_coords;5 t5 J, }% O9 X4 w8 ?. y& b
  8. tag_t line;* |  {' V( M$ \5 H6 O9 V
  9. line_coords.start_point[0]=0;  c! l# v0 c5 k+ m
  10. line_coords.start_point[1]=0;: D  H. `7 X6 n+ |* p
  11. line_coords.start_point[2]=0;
    4 }4 ^9 w+ L( u3 L- D) [) N9 z' A7 F
  12. line_coords.end_point[0]=100;
    , w9 ^1 h5 ?8 W7 v5 z; @
  13. line_coords.end_point[1]=100;
    : p2 w( ]& Q3 O% ]0 y) b" p
  14. line_coords.end_point[2]=100;
    % L9 @. L. S, [3 r+ y/ C" g8 k7 }
  15. UF_CURVE_create_line(&line_coords,&line);</p><p> //create arc
    ) [1 u* R3 U( ~. C* w
  16. UF_CURVE_arc_t arc_coords;
    - {1 [! L3 D& e- z+ b# x
  17. tag_t arc,marix,wcs;
    3 v% f# F& S7 i, {) R
  18. UF_CSYS_ask_wcs(&wcs);
    , M; Y1 Y5 J& \) ~# ?0 E
  19. UF_CSYS_ask_matrix_of_object(wcs,&marix);& A  H& R2 _- g; o3 ]0 Q
  20. arc_coords.arc_center[0]=0;
    % z) a; D& B8 S! O! @( h7 W* ]
  21. arc_coords.arc_center[1]=0;! {+ |: J) [' m8 n# A1 ^
  22. arc_coords.arc_center[2]=0;# o; ]0 q& w& T
  23. arc_coords.start_angle=90*DEGRA;
    ; Y) D% ?7 x2 h& d
  24. arc_coords.end_angle=270*DEGRA;
    ( X( |; \' ]9 G1 v& M: \
  25. arc_coords.radius=100;/ L; A4 `; ]& j0 {6 S8 e% j' M
  26. arc_coords.matrix_tag=marix;
    * ?/ e$ M+ ^- P' w' [2 t' P
  27. UF_CURVE_create_arc(&arc_coords,&arc);: p& r* N; v6 r! D' l5 |
  28. // create point
    - G, s$ ^0 s8 T5 M
  29. double point_coords[3]={100,100,100};
    9 W0 G: C6 N5 ^/ h& K) x8 f
  30. tag_t point;! A1 C' c1 ?: P  `# m; s7 a
  31. UF_CURVE_create_point(point_coords,&point);
    , t/ a" `9 B4 Y, P: c0 z

  32. 8 S( V# F! F& k7 L/ c4 q
  33. // create Plane
    ; P* P$ Z0 i! q. a
  34. double    origin_point[3]={100,100,100};# j" G) e: x- K5 V- s
  35. double    plane_normal[3]={1,0,0};
    4 ~9 B* @9 ]6 U' J9 s" E
  36. tag_t     plane_tag;    " a5 @9 ^  i' q8 S1 G, p* H
  37. UF_MODL_create_plane(origin_point,plane_normal,&plane_tag);</p><p> /*" a- r* ?* Z9 a# A. L# s6 B
  38. Get the curve information- X+ A' ^; q8 Q) M2 W
  39.   */
    1 j0 D4 |1 `, c% s& R
  40. UF_UI_open_listing_window();2 u! A. m6 _+ |; e* p# D+ x
  41. char msg[132];3 Q0 C) ]) F+ U" o' u1 q. u! y
  42. // get line information; Y- X5 R; N4 g5 H5 ?- h
  43. UF_CURVE_line_t line_info;) c# P( H, `% S' }# I5 `
  44. UF_CURVE_ask_line_data(line,&line_info);3 N- u% g! u( C! ^
  45. sprintf(msg,"line coords:\n\t%lf,%lf,%lf;\n\t%lf,%lf,%lf",line_info.start_point[0],
    . B2 }4 a9 N- G. {
  46.   line_info.start_point[1],line_info.start_point[2],line_info.end_point[0],line_info.end_point[1],* a! X; I1 @- s% \8 w; Y6 Y9 {
  47.   line_info.end_point[2]);5 e" |8 x% g2 F/ e* _' \& L. N& D
  48. UF_UI_write_listing_window(msg);  {# D/ ^1 J/ n; B
  49. //get the point information
    1 s" j1 r* k- Q) H3 y
  50. double point_info[3];# u& b8 n3 L! b6 ~* q+ j! b: U
  51. UF_CURVE_ask_point_data(point,point_info);
    : r4 v8 X! S% ~9 I
  52. sprintf(msg,"\npoint coords:\n\t%lf,%lf,%lf",point_info[0],point_info[1],point_info[2]);
    & }9 G& M" x6 b5 g. B
  53. UF_UI_write_listing_window(msg);</p><p> //get the arc information
    5 K6 k, U* b( Y) h/ i# t- z
  54. UF_CURVE_arc_t arc_info;, |- v7 O7 u& Q0 O/ v* r
  55. UF_CURVE_ask_arc_data(arc,&arc_info);3 E9 m) C0 l/ Z1 ]* G
  56. sprintf(msg,"\nArc Center coords:\n\t%lf,%lf,%lf;\nArc start Angle:\n\t%lf;\nArc End Angle:\n\t%lf;\nArc Radius:\n\t%lf;",( K. }- Z6 ~0 l- l0 X
  57.   arc_info.arc_center[0],arc_info.arc_center[1],arc_info.arc_center[2],. e6 \; h' I( h: M  c& k7 Q& P* \
  58.   arc_info.start_angle*RADEG,arc_info.end_angle*RADEG,arc_info.radius2 A# M! \: ]" O" U. z1 C1 |$ d
  59.   );
    4 h1 o' \$ o. U* g9 f
  60. UF_UI_write_listing_window(msg);
    9 d* W( Y  C$ R1 c
  61. // calculate the arc length
    8 O; d# B6 a2 u! U
  62. double arc_length;
    3 G1 p# G" S" R. B3 Q
  63. UF_CURVE_ask_arc_length(arc,0,1,UF_MODL_UNITS_PART,&arc_length);  L& j3 q. K, n- i0 n; F2 a
  64. sprintf(msg,"\nArc Length:\n\t%lf",arc_length);
    2 y- A. R: [& ?% B6 ]- w3 K
  65. UF_UI_write_listing_window(msg);8 R3 T' X! n9 d0 c+ l3 B& K4 E0 [
  66. }9 d+ y3 c( G5 x4 B' V
  67. </p><p> </p>
复制代码

% O# i: a1 ]! g1 R2 g& a; Z
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了