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

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

[复制链接]

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

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

admin 楼主

2013-11-27 15:21:12

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

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

x
NX 二次开发中创建曲线命令及获取点,线,圆弧信息源码
& ]% o1 R$ G7 C% q9 Q! c5 E+ ]. }; |' m
  1. <p>static void do_UGopenapi()$ f3 m: h% N' {& D- }  e) Z+ S2 J
  2. {
    . m* f; f0 u. |/ L2 i' E
  3. /*9 z( J# r3 c$ a: a' u9 n
  4. Create Curve
    & o/ \+ ]( y! Q* }/ U
  5. *// i9 `, j  P; |# d" d9 @
  6. // create line  y# K; s/ {7 R+ l
  7. UF_CURVE_line_t line_coords;% }- N* ^( i* f$ O) I8 E! N8 }. h
  8. tag_t line;
    ( @+ M' [/ P' t( J
  9. line_coords.start_point[0]=0;
    # b3 n0 P1 }4 z. E3 p4 W
  10. line_coords.start_point[1]=0;
    ( J9 L0 Q, a' P+ }: L/ B7 T9 _
  11. line_coords.start_point[2]=0;# D4 J9 ~& u/ T" G- _7 z6 t* _
  12. line_coords.end_point[0]=100;
    $ v6 H. P& l) N! y
  13. line_coords.end_point[1]=100;8 ]$ O# [- K/ r% j2 K1 n
  14. line_coords.end_point[2]=100;
    2 D( |& q( X" x/ j7 u! ]
  15. UF_CURVE_create_line(&line_coords,&line);</p><p> //create arc/ P. e4 X' B  J1 C! q6 f
  16. UF_CURVE_arc_t arc_coords;
    6 p" _* v0 ?* @8 h* u% o" L" ]
  17. tag_t arc,marix,wcs;! W: ^3 d# ^9 R; T
  18. UF_CSYS_ask_wcs(&wcs);
    2 [# `. H; P' z/ r* t' }* t  i6 f8 u5 [
  19. UF_CSYS_ask_matrix_of_object(wcs,&marix);, ^; ]2 h. B0 g! h7 g- b2 j
  20. arc_coords.arc_center[0]=0;" d0 I% _1 ^9 t; a, [: ]% S
  21. arc_coords.arc_center[1]=0;
    " W1 u: d6 ?2 h) ?3 K. o: p9 Z! i( B
  22. arc_coords.arc_center[2]=0;
    7 k' d  r: A. R+ E+ M" {; T7 d0 p0 R
  23. arc_coords.start_angle=90*DEGRA;
    ( J; h# ~  [% J! w* j1 c7 U
  24. arc_coords.end_angle=270*DEGRA;
    ; w( Q% s% ]. O  ^
  25. arc_coords.radius=100;
      d8 |. O0 J- I0 s9 A0 ~" x
  26. arc_coords.matrix_tag=marix;
    6 v* }: f, P- i& _6 B
  27. UF_CURVE_create_arc(&arc_coords,&arc);5 a& L" r9 _+ ~2 @  r, H
  28. // create point
    & f0 M7 N8 Y+ Z: S
  29. double point_coords[3]={100,100,100};4 p9 v) \$ p! W
  30. tag_t point;, e! Z. E6 H. f7 r- O  P* E
  31. UF_CURVE_create_point(point_coords,&point);* N  L) i  |  d6 |- `8 G! k* g$ v
  32. 1 m: M# |* ?' `- y
  33. // create Plane8 ]8 x& ~6 W2 W9 W
  34. double    origin_point[3]={100,100,100};
    & W/ T' M' |$ T3 [- w% ~
  35. double    plane_normal[3]={1,0,0};' D- K* j6 b: W9 T. I8 i6 x6 Q
  36. tag_t     plane_tag;    ) a) P5 r; l$ M, b
  37. UF_MODL_create_plane(origin_point,plane_normal,&plane_tag);</p><p> /*
    - w# D4 q4 C: [/ b
  38. Get the curve information
    - J) e. u+ ]2 e" l
  39.   */
    3 U! j3 T8 s$ |/ M* O, Z. P
  40. UF_UI_open_listing_window();' g8 s! H+ u0 z' z( k
  41. char msg[132];
    0 @$ Q9 N/ B* A8 N
  42. // get line information
    5 E2 n' ~  ?5 m' E& y& T; |
  43. UF_CURVE_line_t line_info;
    ' C  M- \4 w- v! J
  44. UF_CURVE_ask_line_data(line,&line_info);3 y0 ^! C: b, [& t% Y, m
  45. sprintf(msg,"line coords:\n\t%lf,%lf,%lf;\n\t%lf,%lf,%lf",line_info.start_point[0]," _. J9 C2 F5 X* c' \7 M$ ^
  46.   line_info.start_point[1],line_info.start_point[2],line_info.end_point[0],line_info.end_point[1],% V) G1 u7 e) }- \: v; S. }
  47.   line_info.end_point[2]);
    % c* D- ]  g# ]8 H; B0 o
  48. UF_UI_write_listing_window(msg);
    " P! U& `# H4 Q' u" O- z9 {: H
  49. //get the point information
    / T$ j" v( F1 \  `/ O! d
  50. double point_info[3];' E! x& I* ?( J$ G- f) F" ?: ^
  51. UF_CURVE_ask_point_data(point,point_info);: b7 b# a5 ]# y1 h, P* ~5 V: D
  52. sprintf(msg,"\npoint coords:\n\t%lf,%lf,%lf",point_info[0],point_info[1],point_info[2]);2 L: }' |* E9 P! p
  53. UF_UI_write_listing_window(msg);</p><p> //get the arc information
    5 B! I- g& I, A7 R6 ]
  54. UF_CURVE_arc_t arc_info;% ?2 B: G6 z8 ?; u3 G
  55. UF_CURVE_ask_arc_data(arc,&arc_info);
    " W+ J/ E; T7 L; C0 f1 z
  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;",
    ! N# b% ~, _: I; [- b7 M
  57.   arc_info.arc_center[0],arc_info.arc_center[1],arc_info.arc_center[2],5 q0 ?7 T) S6 ~* H: c  h
  58.   arc_info.start_angle*RADEG,arc_info.end_angle*RADEG,arc_info.radius" _) t" W! S0 J" W
  59.   );
    8 _! t# T+ \; _) i
  60. UF_UI_write_listing_window(msg);
    % T0 a/ y; K9 j2 S4 @" G& q
  61. // calculate the arc length6 y1 ?) g- ]; n8 r( p$ M9 `
  62. double arc_length;
    - ?: H8 s2 A: k- U) A& x
  63. UF_CURVE_ask_arc_length(arc,0,1,UF_MODL_UNITS_PART,&arc_length);
    $ m. U: R% [# o
  64. sprintf(msg,"\nArc Length:\n\t%lf",arc_length);# t" |. d, G) r6 `- H
  65. UF_UI_write_listing_window(msg);, _3 `4 }: d, ]7 `' b4 ^
  66. }& m0 I3 i) F4 ^+ k
  67. </p><p> </p>
复制代码
7 J5 c; r5 n2 I) q* b
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了