查看: 3146|回复: 0

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

[复制链接]

4

主题

3

回帖

44

积分

管理员

积分
44
发表于 2013-11-27 15:21:12 | 显示全部楼层 |阅读模式

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

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

×
NX 二次开发中创建曲线命令及获取点,线,圆弧信息源码
/ O; e# s( K2 P( V3 `8 C0 F) a5 f* t
& @$ T9 ~* `" `+ o+ B8 d
  1. <p>static void do_UGopenapi(). ^; y# i2 [2 E, ?7 T/ t5 d' |% i
  2. {8 a. l. M( x1 Z( d6 B6 D
  3. /*
    3 g7 U! s) m9 y. C
  4. Create Curve
    7 Q# r4 {3 O  d* Q; E
  5. */
    5 J# [5 z3 u7 {; {; u. d% m
  6. // create line: t% Y: c- R0 y0 e
  7. UF_CURVE_line_t line_coords;
    8 E' @. `# b3 b! ?+ j
  8. tag_t line;) {  x; z9 E4 t6 ~& ^5 U4 Z- i
  9. line_coords.start_point[0]=0;
    * V8 l. m  w9 R) w# T, l
  10. line_coords.start_point[1]=0;
    ( k* m2 T& ~! p+ `- f/ C
  11. line_coords.start_point[2]=0;$ v$ O2 A7 `' t- d: A/ o, c8 N
  12. line_coords.end_point[0]=100;; c3 J  q* p8 E! m% P
  13. line_coords.end_point[1]=100;8 ^0 @5 G) Z+ K2 \& Y& J/ t$ O
  14. line_coords.end_point[2]=100;" c4 d. ?# _) U4 E6 H  o) g& M( k( \
  15. UF_CURVE_create_line(&line_coords,&line);</p><p> //create arc
    : ]. A. u, q* \5 `) r) L& W
  16. UF_CURVE_arc_t arc_coords;) p2 [4 X: [7 [4 n: _" d
  17. tag_t arc,marix,wcs;- @$ l9 d  |1 r5 c" ~, q
  18. UF_CSYS_ask_wcs(&wcs);
    & w' w4 b( O" o1 t5 |2 k% _' m
  19. UF_CSYS_ask_matrix_of_object(wcs,&marix);1 g' w9 Z% ^4 y
  20. arc_coords.arc_center[0]=0;
    2 I2 I  d1 M- v7 S+ z( H
  21. arc_coords.arc_center[1]=0;  }1 }, M+ ]( v
  22. arc_coords.arc_center[2]=0;0 J/ ~' x3 [0 D
  23. arc_coords.start_angle=90*DEGRA;
    ; C4 ^, H2 b2 ]$ a8 z7 E' o
  24. arc_coords.end_angle=270*DEGRA;
    % ], k  C5 W& x, Y) _4 l
  25. arc_coords.radius=100;
    + z9 r* \. l5 c/ @8 D, W- F
  26. arc_coords.matrix_tag=marix;6 U+ o; X# q( e) d! @! j
  27. UF_CURVE_create_arc(&arc_coords,&arc);
    3 j$ m8 q: d& q( n6 H' }
  28. // create point 6 |& S2 \2 ^/ }1 n6 M6 _
  29. double point_coords[3]={100,100,100};' |' u4 M$ U! v9 I6 a& ^. T% U
  30. tag_t point;
    . v* }# V. \# R: j9 ]( X
  31. UF_CURVE_create_point(point_coords,&point);+ f+ Y2 s, r) z. J1 G" {' [

  32. " [4 l0 O) N1 L  a1 U
  33. // create Plane4 M( n  D: O; e. C+ o7 J  S
  34. double    origin_point[3]={100,100,100};9 }! d1 j: x" i0 A
  35. double    plane_normal[3]={1,0,0};
    , Q  K- \# A( T& `- c
  36. tag_t     plane_tag;   
    ; n4 x) \0 N) v% ~8 b# ?; J' ^
  37. UF_MODL_create_plane(origin_point,plane_normal,&plane_tag);</p><p> /*; ~2 v5 K3 Z$ Z8 B, k- S6 L
  38. Get the curve information
    / C- z- y( C& f" ^2 ~3 V
  39.   */6 R) J7 F% K7 z& L6 w
  40. UF_UI_open_listing_window();, H, g# @7 p. h3 k( |5 k
  41. char msg[132];
    * B9 \. x. B$ `  R% `" z# F6 z) A
  42. // get line information
    , w( l8 B, ]& ^4 H/ H3 W( Q
  43. UF_CURVE_line_t line_info;
    ; _7 T- v+ o$ W
  44. UF_CURVE_ask_line_data(line,&line_info);# k; m; B5 V" y, B9 O. l: [
  45. sprintf(msg,"line coords:\n\t%lf,%lf,%lf;\n\t%lf,%lf,%lf",line_info.start_point[0],) r( M+ F6 K: f2 V) G1 D" @
  46.   line_info.start_point[1],line_info.start_point[2],line_info.end_point[0],line_info.end_point[1],- R; [. f0 y% n* t: V" E$ Z# w
  47.   line_info.end_point[2]);, c& ]0 f/ k" P  k  E: l
  48. UF_UI_write_listing_window(msg);
    4 _* l# i3 m& g
  49. //get the point information9 \, }1 F8 N! y2 X
  50. double point_info[3];
    2 g4 G1 b* o; L0 Y* T5 @- R
  51. UF_CURVE_ask_point_data(point,point_info);
    * }  n' L1 U1 Y+ e- X4 L" ?+ A/ }
  52. sprintf(msg,"\npoint coords:\n\t%lf,%lf,%lf",point_info[0],point_info[1],point_info[2]);
    / c% M# b. U2 }1 y5 r& o, Y
  53. UF_UI_write_listing_window(msg);</p><p> //get the arc information2 f1 D8 b7 J4 z
  54. UF_CURVE_arc_t arc_info;
    + ^! X$ `; S. c
  55. UF_CURVE_ask_arc_data(arc,&arc_info);+ c! P7 v( f! p( m4 @# R( |  H
  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;",7 j* h$ i! w, Y  r" V
  57.   arc_info.arc_center[0],arc_info.arc_center[1],arc_info.arc_center[2],0 U( R! G# U5 P: @& D
  58.   arc_info.start_angle*RADEG,arc_info.end_angle*RADEG,arc_info.radius
    $ ?( I* `; p5 m1 }% @" U9 v
  59.   );
    6 ]7 a* R  |7 k7 L( I
  60. UF_UI_write_listing_window(msg);
    6 P  p3 D: f. X9 E) @+ z$ y
  61. // calculate the arc length
    ; P1 Y4 \: s. E! Z! [
  62. double arc_length;: w3 r0 `/ @2 s  {
  63. UF_CURVE_ask_arc_length(arc,0,1,UF_MODL_UNITS_PART,&arc_length);! B: I7 z& E: Y2 b) X4 Y* Z
  64. sprintf(msg,"\nArc Length:\n\t%lf",arc_length);5 R: C/ f: d6 c
  65. UF_UI_write_listing_window(msg);
    4 @0 \$ b$ P( z
  66. }$ t+ q) h. s. {0 U/ ?
  67. </p><p> </p>
复制代码

$ J0 {( L+ s' X; j9 d% G# I. i
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部