|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
NX 二次开发中创建曲线命令及获取点,线,圆弧信息源码
. P- B+ _, W& Z, H9 j. X8 ~) h* C. G/ u6 Y
- <p>static void do_UGopenapi()
9 d1 F6 b" b3 Y/ X; c: Y: W - {
3 k+ G3 E: w7 H9 `# |3 N - /* x" Z% l" m5 ~: D4 R
- Create Curve( m$ a! p1 v* u9 `5 b$ [
- */6 v- I9 k) M) \- r& I) n. k
- // create line0 T) L6 C/ N/ Z
- UF_CURVE_line_t line_coords;
, \; q( w- v# E/ B* ^ - tag_t line;
5 p* Q5 Z0 k" B0 } - line_coords.start_point[0]=0;# r/ L4 s1 i# k+ E6 H/ P
- line_coords.start_point[1]=0;1 e+ c# e/ ]5 S' N! P; Z( E
- line_coords.start_point[2]=0;- E; P0 L1 V8 y5 U
- line_coords.end_point[0]=100;: K2 b, e; H2 s" X/ r6 s
- line_coords.end_point[1]=100;7 l" r' H6 r( a% ]
- line_coords.end_point[2]=100;
6 _8 R: I/ g; q5 s: _ - UF_CURVE_create_line(&line_coords,&line);</p><p> //create arc" A/ Q4 P1 a5 g. v, `
- UF_CURVE_arc_t arc_coords;
' C$ }# Z) U7 c6 a1 r; P$ | - tag_t arc,marix,wcs;
0 E2 \/ h* j( \: e# | - UF_CSYS_ask_wcs(&wcs);# ]3 `1 e- @0 {& b, m
- UF_CSYS_ask_matrix_of_object(wcs,&marix); _! }/ E; o; I1 I& _
- arc_coords.arc_center[0]=0;+ {, R2 i/ z' _8 d
- arc_coords.arc_center[1]=0;* }/ g$ W3 Z4 ^5 D9 {& r
- arc_coords.arc_center[2]=0;# ~5 ?) |5 }1 s) F
- arc_coords.start_angle=90*DEGRA;. s: m7 Z0 E& R; q. [1 M0 w
- arc_coords.end_angle=270*DEGRA;! O. u; t: o- @ b$ H
- arc_coords.radius=100;# A) Q3 H J0 a9 T, f) I# B
- arc_coords.matrix_tag=marix;
& u8 |; C& I6 j: L2 a* v - UF_CURVE_create_arc(&arc_coords,&arc);6 {' ?6 T" G9 {, B3 d' g# M) ~
- // create point - w0 m6 H) o# ^# `4 y( ^& r
- double point_coords[3]={100,100,100};- j, v+ T. C; h7 |9 m& V2 U
- tag_t point;
* M8 i9 u2 ]/ C/ Z - UF_CURVE_create_point(point_coords,&point);5 C$ B7 n/ ]6 y& G
- ; W6 l) C7 W3 W% F9 x9 Z1 ?
- // create Plane
0 ^6 m; s; i( ] - double origin_point[3]={100,100,100};" S4 Y5 z9 m5 t3 ]- w8 f
- double plane_normal[3]={1,0,0};/ a8 Q7 d6 e6 r4 X6 S
- tag_t plane_tag;
" t b0 F' }" l* J6 N2 B8 L - UF_MODL_create_plane(origin_point,plane_normal,&plane_tag);</p><p> /*: `1 Y, T* Z; W
- Get the curve information5 a. L# @+ Z$ n, T. U: `
- */
4 h/ Q, W6 h3 u; `% A' U% [ - UF_UI_open_listing_window();3 _* v' }( j2 K& T3 ?
- char msg[132];; b2 K/ D7 ~8 c7 H
- // get line information
; d5 G$ J) u& X2 X$ p% f - UF_CURVE_line_t line_info;& X2 E M+ W5 q B
- UF_CURVE_ask_line_data(line,&line_info);! u6 `3 M ~& {3 n: V m
- sprintf(msg,"line coords:\n\t%lf,%lf,%lf;\n\t%lf,%lf,%lf",line_info.start_point[0],7 ]+ c1 b9 \$ ]$ m- N+ o
- line_info.start_point[1],line_info.start_point[2],line_info.end_point[0],line_info.end_point[1],) R1 i$ y r, o7 h# q# i% |
- line_info.end_point[2]);0 w" G+ h+ z2 P4 ~' q
- UF_UI_write_listing_window(msg);
4 S9 `2 r6 j, Z* R - //get the point information
3 _7 i% w. o) F/ {% |7 X# x - double point_info[3];
+ p! ?2 Z1 E0 J4 p$ M& K - UF_CURVE_ask_point_data(point,point_info);
- p7 ]# r; O( T& W. {/ y- I# b - sprintf(msg,"\npoint coords:\n\t%lf,%lf,%lf",point_info[0],point_info[1],point_info[2]);
2 g/ R( F' Q7 y( C* ^ - UF_UI_write_listing_window(msg);</p><p> //get the arc information+ L* y1 E( x' @' r& j
- UF_CURVE_arc_t arc_info;, a+ U! Z! n6 h1 w
- UF_CURVE_ask_arc_data(arc,&arc_info);
+ p) u2 O! a5 P* I' Z - 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;",
# H7 D$ J! q7 U9 k5 q" B. c - arc_info.arc_center[0],arc_info.arc_center[1],arc_info.arc_center[2],, E% v( B% b v% ^/ s$ O/ G J
- arc_info.start_angle*RADEG,arc_info.end_angle*RADEG,arc_info.radius: ~* F' ?; N# ]" W/ F$ q
- );
: G$ Z' {6 T$ C - UF_UI_write_listing_window(msg);
& z o9 b. y3 d- e/ V - // calculate the arc length1 S5 s1 F: D9 X4 e4 k* i; L* ~: i$ A, y
- double arc_length;' Q- \! F! h: d; l% E! z
- UF_CURVE_ask_arc_length(arc,0,1,UF_MODL_UNITS_PART,&arc_length);( s% `8 T2 J0 E! y
- sprintf(msg,"\nArc Length:\n\t%lf",arc_length);
' P, V8 l; ?- z- r - UF_UI_write_listing_window(msg);
+ J( C3 Y+ g: E- |% N - }# }0 Q/ G' u6 F! K
- </p><p> </p>
复制代码
8 _" T( T; J% v* x! M |
|