查看: 3216|回复: 0

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

[复制链接]

6

主题

4

回帖

60

积分

管理员

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

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

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

×
NX 二次开发中创建曲线命令及获取点,线,圆弧信息源码- X, J1 N  ]5 R6 h' B8 j, q" G& F

/ [# v; A. s7 G5 J& K
  1. <p>static void do_UGopenapi()
    . y4 d% X# r5 M0 |
  2. {: ?* r3 x8 G+ e+ V8 _
  3. /*
    ! E% y( V" p. Q$ I2 R" [- m
  4. Create Curve# L6 h1 [' U; b7 w& Z4 H7 T
  5. */
    7 g. B& E* o; S# ]
  6. // create line
    2 a! U2 l/ G& U% O+ h3 X
  7. UF_CURVE_line_t line_coords;
    : F. M% V7 C" \$ O- m0 [/ z/ R
  8. tag_t line;3 r# O  y2 h4 f$ i
  9. line_coords.start_point[0]=0;
    . Q' `* }. }7 X7 i* F- ]7 p
  10. line_coords.start_point[1]=0;+ G4 E" Z# R/ P$ h; p  N; q
  11. line_coords.start_point[2]=0;0 L$ K3 _. Z% x( ?: z! |' Y
  12. line_coords.end_point[0]=100;: n6 {4 y8 X8 d" l1 n
  13. line_coords.end_point[1]=100;
    # D. H1 U* g6 S. T
  14. line_coords.end_point[2]=100;6 q  f, i; a3 E) j
  15. UF_CURVE_create_line(&line_coords,&line);</p><p> //create arc
    # o, p. {. R' T# I. O* N
  16. UF_CURVE_arc_t arc_coords;
    : v0 ?5 G" `3 x( h, y- ?/ ]. w+ [7 p
  17. tag_t arc,marix,wcs;# n4 A# g0 F2 h1 d& a3 u6 ~9 m5 f
  18. UF_CSYS_ask_wcs(&wcs);
    ( @7 z2 }# O" a; Q; i
  19. UF_CSYS_ask_matrix_of_object(wcs,&marix);  I) D- ~/ M! |. L
  20. arc_coords.arc_center[0]=0;
    7 w8 x1 @1 X$ [8 [. t# ]: \- O' I
  21. arc_coords.arc_center[1]=0;
    . |7 C* [' s+ r
  22. arc_coords.arc_center[2]=0;9 j- V! P, c$ u, `" v4 B
  23. arc_coords.start_angle=90*DEGRA;
    ; g1 F. }5 [; a- G; n
  24. arc_coords.end_angle=270*DEGRA;- p" p- r" V# Q8 `' O' v! U& ^
  25. arc_coords.radius=100;' a; Q: U* m. i9 J- s4 |2 s% t
  26. arc_coords.matrix_tag=marix;
    8 t! @9 M, n- D$ ~: W# a; ~7 Z8 w
  27. UF_CURVE_create_arc(&arc_coords,&arc);# B/ f) i; m; W7 G4 G" T
  28. // create point
    2 e; _0 h* C( C3 J6 V; i  ?
  29. double point_coords[3]={100,100,100};
    7 A# h6 v2 r* ?  J1 `2 D/ c
  30. tag_t point;
    # J% I/ O8 i' X  V
  31. UF_CURVE_create_point(point_coords,&point);
    * r3 Y" I7 L0 t  `
  32. 9 E0 E5 ^5 w2 w  F  ?$ s
  33. // create Plane
    0 Y7 i) ]  l# K  U2 ?
  34. double    origin_point[3]={100,100,100};. m& `9 h2 v$ \" Z( K+ q" g, \
  35. double    plane_normal[3]={1,0,0};
    2 |& D; \" @0 X; Y4 K
  36. tag_t     plane_tag;    , z! E1 b4 z3 m; a  q
  37. UF_MODL_create_plane(origin_point,plane_normal,&plane_tag);</p><p> /*
    9 e- L6 }9 v& M- S% K; u
  38. Get the curve information( M0 ]( |) C& @! A1 h
  39.   */2 ]/ }6 Q8 k8 I2 ^
  40. UF_UI_open_listing_window();
    4 ]4 ?: ?! Q8 {. e7 V4 x; I
  41. char msg[132];
    3 F$ |/ _$ a0 @
  42. // get line information2 S' `6 l3 ?5 d
  43. UF_CURVE_line_t line_info;/ o* p1 c& e5 B% S$ Y/ I
  44. UF_CURVE_ask_line_data(line,&line_info);
    - T" p' _  a5 h, f; Q
  45. sprintf(msg,"line coords:\n\t%lf,%lf,%lf;\n\t%lf,%lf,%lf",line_info.start_point[0],
    - z/ |8 ^' D3 D+ ^
  46.   line_info.start_point[1],line_info.start_point[2],line_info.end_point[0],line_info.end_point[1],
    ; [6 _* f8 C, `1 M* p# p
  47.   line_info.end_point[2]);$ z$ @! @8 N- K) T- u  P1 Q# a8 d
  48. UF_UI_write_listing_window(msg);
    : n1 N. m; @- t% [8 ]; t5 B/ l# U
  49. //get the point information
    + I! |/ c& Z. N+ s4 ?2 w( m4 O- V5 l
  50. double point_info[3];  |9 y+ _0 t5 Q
  51. UF_CURVE_ask_point_data(point,point_info);
    8 k( H2 E- X' T6 h3 }5 ^% l
  52. sprintf(msg,"\npoint coords:\n\t%lf,%lf,%lf",point_info[0],point_info[1],point_info[2]);4 Y8 j- T$ G) g8 z9 p! a9 p' A
  53. UF_UI_write_listing_window(msg);</p><p> //get the arc information6 Y! u5 B& I" f, ~" m
  54. UF_CURVE_arc_t arc_info;9 s* K# @+ t- k0 h" m) o4 L8 G1 F
  55. UF_CURVE_ask_arc_data(arc,&arc_info);
    ) p+ C5 R# j! u" |
  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;",
    0 k: Z: d5 |+ x6 s4 r' o1 F
  57.   arc_info.arc_center[0],arc_info.arc_center[1],arc_info.arc_center[2],7 G* G% v; H3 l8 G) q
  58.   arc_info.start_angle*RADEG,arc_info.end_angle*RADEG,arc_info.radius
    % H# t* w0 a! \9 g+ y. c- Q
  59.   );
    ) E9 r' l6 |: K; G$ a/ }
  60. UF_UI_write_listing_window(msg);
    : z8 Q3 _5 B; }8 e0 b
  61. // calculate the arc length9 z( u) t/ J% Y$ u6 s
  62. double arc_length;
    6 `; s  `" M' x) h' k  ^
  63. UF_CURVE_ask_arc_length(arc,0,1,UF_MODL_UNITS_PART,&arc_length);) H: C4 Y- e) X1 ~( e  V8 ?
  64. sprintf(msg,"\nArc Length:\n\t%lf",arc_length);
    7 J1 x$ a. A5 Z/ k" U
  65. UF_UI_write_listing_window(msg);* ~* l/ E4 C) k% N" ^2 R. x% Y
  66. }. G- N5 q' _# Z9 |% l  ]$ b
  67. </p><p> </p>
复制代码

, f) c! v) G( t( h8 C
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

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

本版积分规则

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