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

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

[复制链接]

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

2471

主题

1276

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
NX 二次开发中创建曲线命令及获取点,线,圆弧信息源码
7 L- F; Z" g2 H; o8 ^( v% [
, u$ x& B: ?8 X2 D; b
  1. <p>static void do_UGopenapi(). u9 [$ o5 b. r2 u
  2. {
      f, z5 H+ v3 j
  3. /*
    + I+ N+ W! c8 l: @7 C
  4. Create Curve
    2 [& y+ n5 T' P+ w. ]0 Z
  5. */
    % B1 |$ a5 s6 Z8 ~
  6. // create line9 \# [3 V' P: }! V- r5 U6 Q
  7. UF_CURVE_line_t line_coords;9 U# Q% n" q' y9 z
  8. tag_t line;
    3 w* }4 c' U7 T: N# t* m% p! T* ?
  9. line_coords.start_point[0]=0;  M8 e1 Q+ N2 L
  10. line_coords.start_point[1]=0;
    6 M/ E# o! r4 U$ _8 J' R
  11. line_coords.start_point[2]=0;
    . x; \/ y  h$ K$ Z+ p" e( H7 k/ c
  12. line_coords.end_point[0]=100;
    ) M5 s# g8 ?7 Q9 j% U5 z
  13. line_coords.end_point[1]=100;
    + @6 \. W; n7 ^' ]
  14. line_coords.end_point[2]=100;* I3 Z% V5 G9 I* L8 m5 y! _
  15. UF_CURVE_create_line(&line_coords,&line);</p><p> //create arc/ f- I$ ]/ ^4 J
  16. UF_CURVE_arc_t arc_coords;
    * T' h1 ^1 P5 W' ~/ f7 m  q
  17. tag_t arc,marix,wcs;1 Z4 ]2 r; p+ w! B+ g1 @3 ~
  18. UF_CSYS_ask_wcs(&wcs);) W" J/ n7 J# R& p
  19. UF_CSYS_ask_matrix_of_object(wcs,&marix);
    2 |" j3 v% q1 v  U# y9 C1 m% r
  20. arc_coords.arc_center[0]=0;1 z8 d: T* G1 @
  21. arc_coords.arc_center[1]=0;6 k+ J5 e; d; m. f0 v& C: r5 k
  22. arc_coords.arc_center[2]=0;0 X, i1 u( q$ L' x8 B
  23. arc_coords.start_angle=90*DEGRA;
    4 h& b  x+ p7 n" `" S: s: u
  24. arc_coords.end_angle=270*DEGRA;5 w" j5 ?0 J6 ^  P! k
  25. arc_coords.radius=100;
    6 A& r/ b$ G) z
  26. arc_coords.matrix_tag=marix;! z1 e) v8 I( c6 g
  27. UF_CURVE_create_arc(&arc_coords,&arc);7 L9 u' Q9 o; e0 U- A: P
  28. // create point   w( N" h6 R8 f- V; L8 V' X8 z
  29. double point_coords[3]={100,100,100};
    ) a" @/ w4 }" n/ {( O
  30. tag_t point;# I; N% U+ {+ S3 ^7 k' u$ R
  31. UF_CURVE_create_point(point_coords,&point);! q) G+ V+ n  Z, k

  32. & w) b6 Q2 l& X5 Y
  33. // create Plane+ ^/ |0 e! ]( [2 F$ i0 r
  34. double    origin_point[3]={100,100,100};/ C( V( Q* t- F2 L+ T: c5 \
  35. double    plane_normal[3]={1,0,0};
    ! V' Q- b& \; }) B% z
  36. tag_t     plane_tag;    2 z# u% k& e( y/ Y, y, |, q5 W
  37. UF_MODL_create_plane(origin_point,plane_normal,&plane_tag);</p><p> /*
    * |0 r2 o) }5 Y4 c( F
  38. Get the curve information2 I$ g, d$ t! J, c4 n6 v) |
  39.   */6 u" o# E" b  P  Q
  40. UF_UI_open_listing_window();
    1 K$ F% Y0 |. p/ b2 p, z- t9 a, t
  41. char msg[132];
    ! y) L7 Z; u9 }# s
  42. // get line information
    3 g% o$ Z$ S9 l
  43. UF_CURVE_line_t line_info;
    $ N+ G! U) Q7 w& F1 K8 V5 Z% Y
  44. UF_CURVE_ask_line_data(line,&line_info);& A; r/ E/ J5 P" M7 I- w5 O
  45. sprintf(msg,"line coords:\n\t%lf,%lf,%lf;\n\t%lf,%lf,%lf",line_info.start_point[0],9 J7 |9 k$ D8 r. G; L* e; Z
  46.   line_info.start_point[1],line_info.start_point[2],line_info.end_point[0],line_info.end_point[1],1 `5 V' ?, i5 c" {% D% K9 x
  47.   line_info.end_point[2]);
    * U3 M+ X/ S1 x5 |+ r/ d
  48. UF_UI_write_listing_window(msg);
    ' k9 `' s8 ~# K. R
  49. //get the point information
    6 K0 F7 o$ v$ G3 i) Z
  50. double point_info[3];( d, V" _) R* P
  51. UF_CURVE_ask_point_data(point,point_info);
    " r2 y+ J8 C" e5 a1 M
  52. sprintf(msg,"\npoint coords:\n\t%lf,%lf,%lf",point_info[0],point_info[1],point_info[2]);" E3 X5 S! ?6 U4 N1 P
  53. UF_UI_write_listing_window(msg);</p><p> //get the arc information
    . D/ D# B; p6 e6 y& G  b( \. c
  54. UF_CURVE_arc_t arc_info;
    3 X, D* i- s1 Z: q( k) x! P
  55. UF_CURVE_ask_arc_data(arc,&arc_info);, S- e$ D2 s$ a" D
  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;",) O" X- U) W+ G) R; s4 c* z
  57.   arc_info.arc_center[0],arc_info.arc_center[1],arc_info.arc_center[2],
    : c' V) T( M2 v# {; B
  58.   arc_info.start_angle*RADEG,arc_info.end_angle*RADEG,arc_info.radius
    . k0 k, h7 s) [& o9 e: W
  59.   );+ y6 ?3 D! M' K7 |( P" E# q4 f
  60. UF_UI_write_listing_window(msg);* `" K5 A6 g3 P& M
  61. // calculate the arc length# A) F' [# g( z/ }. a6 K
  62. double arc_length;5 t- _; T% \, c$ b$ T
  63. UF_CURVE_ask_arc_length(arc,0,1,UF_MODL_UNITS_PART,&arc_length);9 `- R) Y! \- s9 x; ^
  64. sprintf(msg,"\nArc Length:\n\t%lf",arc_length);3 W. l- W! O1 p! O* v( x
  65. UF_UI_write_listing_window(msg);# Z* L% T4 L0 L  E; W) f% v
  66. }# ^" U) g% F/ k
  67. </p><p> </p>
复制代码

5 l9 ~0 E9 T' h' A# k# |
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了