PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

[资料] 【NX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点

[复制链接]

2018-7-12 11:09:03 1859 0

admin 发表于 2018-7-12 11:09:03 |阅读模式

admin 楼主

2018-7-12 11:09:03

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

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

x
0 D! u: n6 b% [! D# J
* C3 z; n* b5 J! P- e, C( m8 M! Q
NX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点
% F: t5 v/ {! D# s$ l$ F
: }4 o& u! H4 x) n8 c- n$ k1 ~[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata)
- H7 K' L6 U3 R, v5 i{" f, A: y- }' {" Z2 f
    int( D* Y. ?. w3 S3 e. V0 I9 g; K
        irc;  M% [+ g1 U; M& `: C+ P
    double; t, l& u) b. K) M; H+ _6 G
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },3 K1 Q8 S3 O( M" e
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},! P4 {$ m  C  d
        mx[12];
" a$ C5 l9 Q3 k" s4 N7 s8 R. x' O; T# Q
    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));' H2 {- p% E6 v+ E
    FTN(uf5940)(abs_mx, csys, mx, &irc);/ y5 X5 D8 a+ o: w$ o
    FTN(uf5941)(adata->arc_center, mx);
  ~! }- K1 J$ J}  L9 [9 b$ o+ G5 b: b+ I) R$ a

' S4 a" D  Y0 s, Istatic void map_point_to_matrix(tag_t matrix, double *pos)2 ?% W* Q# H$ b2 T
{
% Q. }2 i6 u) s8 r+ T    int
9 P% C2 Z: W5 U6 [: Y& w% r        irc;. q9 U! y  K! a  Q0 W5 a
    double
  E. N! Q) `# b3 B  ]# ], M        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },9 b6 z0 w- _' R
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},* b6 R0 y1 j6 T; y/ n7 m. Q
        mx[12];
1 }. ?& h& P) F5 Q, j6 Y& n; s1 w3 o
9 i  ?  S. A7 C5 C    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));
9 {* B" f! G  s! N) y    FTN(uf5940)(abs_mx, csys, mx, &irc);
' d! d: t3 g  b& }  h& W4 d    FTN(uf5941)(pos, mx);+ d! D1 I, y+ v( Z
}2 O+ |4 P: B: E/ }/ h/ t, K  [& ]
+ L- u5 g  c) e) A/ u
/*  This motion callback emulates the rubberbanding circle seen when4 U4 j" C+ V" w( X
    using the interactive option Insert->Curve->Basic Curves...->Circle  */1 W! p& s6 U; s- C; U& h" ?
: p$ n: g( g' N, W  B% u
static void rubberband_circle_cb(double *screen_pos,$ D) C( R( J. C4 r
    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data)
, R6 j+ U9 f  q- e/ s{: x+ @' o" l/ ~4 |
    double/ E3 J" e' |- g6 Y
        axes[9];
- |9 O! d; s" k- T0 \  o    UF_CURVE_arc_p_t; w$ V+ [6 F9 S5 d9 f: x2 j) s9 s: I
        my_data = (UF_CURVE_arc_p_t) client_data;$ E, T+ k$ H" v7 |8 s
/ F0 _5 M" A) m+ |2 f, G
    map_point_to_matrix(my_data->matrix_tag, screen_pos);' u' [+ A0 {0 Z: G
    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);
$ O' A/ S) d! ]: A* H* _" ^+ ]* K! k/ [% @
    if (my_data->radius > 0)
* Q' V$ n- E; t: |% J2 J6 g! R* q    {1 h. x3 Q/ g- R
        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));
7 V% c/ ~& P0 m3 }0 d
( u+ N0 C, D# q+ @$ d        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,
& ~/ V' A+ ^) t3 E. ~: Z& h8 H2 d            axes, my_data->arc_center, my_data->radius));
! S. ?$ X- j, y. ?    }
2 s0 Q" @! K1 R/ Y) P; Y$ X}
, A. Y2 ~. y7 }2 E& j
5 L! }" ^5 J2 J5 ]+ Fstatic logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)
! c* Q2 r* n) ^: c; ~3 q6 |* c{$ r& a- q% _) c, s3 e9 p$ p$ u2 g- q" ^
    int7 h9 R& I- }* x& |" N
        resp;6 v5 ]8 ?( q$ P9 H4 H6 {
    tag_t; w& ?& [+ Y" y
        view;
: W% Q3 h" L/ t8 @    char7 G5 o  p& `+ }3 x2 m- N
        msg[133];
% T" h/ f  X- c9 r4 N/ f/ @    double8 D6 n4 n: [# n
        on_arc[3];
% V1 ^9 i8 e9 |3 `2 v  o- y7 M5 k! V
    sprintf(msg, "%s center", prompt);
* q8 t5 f% G: O6 [4 x2 v    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,
- t' U- t$ k: i' L0 C        the_data->arc_center, &view, &resp));
( s. l; ?$ a; a    if (resp != UF_UI_PICK_RESPONSE) return FALSE;$ |  t+ _/ }/ K2 b4 Z+ f* g

( W, A. E1 {1 f    the_data->matrix_tag = ask_wcs_matrix_tag();- V2 R4 d% F" z8 a# }
    map_arc_center_from_abs(the_data);! z9 ~4 O6 K  b2 s
  i* Q4 U$ J" ]0 O' V+ X) f
    sprintf(msg, "%s point on arc", prompt);
8 z5 r5 C' i9 b' o0 n' e    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,2 a; ^1 f0 M% }7 I/ B% c
        (void *)the_data, on_arc, &view, &resp));4 T  I: [4 \* G, b9 `( G. M! [
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;( v  y& y7 F3 S. R+ F0 A7 Y

1 ?, v( c- L7 G    map_point_to_matrix(the_data->matrix_tag, on_arc);8 l# U1 v! w: Y2 f/ e

1 f6 k2 h! n: [+ C+ w+ g    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);$ C, z" v" @" d

- g( M& L; B: L4 }1 l    return TRUE;
0 |4 ^7 E1 Z- W3 ]}[/mw_shl_code]8 o5 s6 v$ m; B" u4 j
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了