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 1813 0

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

admin 楼主

2018-7-12 11:09:03

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

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

x

) T" G/ y# ~# m0 k: a. K, X
# l$ m% o( H' @, SNX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点! s6 H9 [+ Z. ~& k

  u  }9 s7 L* f9 H4 T/ K, q) n[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata)
  S0 U) i0 U- x3 ?; ?6 T4 }{: _! k) j5 ]: c0 T
    int# s# z5 |3 N+ N( H2 p/ v) |
        irc;
7 E8 T& l+ J' F    double3 w6 Y% ]- B) w6 b5 h6 _
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },4 X5 q3 ^' h. x* Z0 H3 C& y0 o' P
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},& T- w9 U" s$ r3 j5 ]7 J
        mx[12];
6 o3 d6 Z* m2 ~- H$ f2 _, r: o. Y
    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));
$ F! U6 U0 Y1 Y- U0 \" h( {1 P    FTN(uf5940)(abs_mx, csys, mx, &irc);/ ?- L( _5 d7 B- l( M6 O
    FTN(uf5941)(adata->arc_center, mx);6 _% t# X. [- z2 V& ]9 `& y  F% [
}
! j0 Z1 i& n/ o4 \7 r' r
' |( U, ]: ~* }) Xstatic void map_point_to_matrix(tag_t matrix, double *pos)
# `! r8 M  f$ k( R/ m{
: _0 j, R8 @. h8 }2 S5 o/ {) ?    int& F1 e/ L9 w8 t+ ?; F/ Y
        irc;* i3 |: ]/ V. Y6 Q  o
    double
( I/ Q( @6 _8 p  K7 Q" z. |        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },5 m: s( C7 m# o; y% A) M  s; [
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},0 R3 f: y. M0 I2 B5 [
        mx[12];
& x" V' N) y8 I8 K3 D- T. l8 U8 V. U2 P$ c
    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));
% W$ w  F% i9 s+ \    FTN(uf5940)(abs_mx, csys, mx, &irc);
4 w, U, ~* r- l0 F5 N    FTN(uf5941)(pos, mx);; E2 B2 h# x# M1 a
}  E) b5 H2 u, c6 e& h. M

, c" ~  }, `& I, Q% S/*  This motion callback emulates the rubberbanding circle seen when
: B' u/ z) D9 @  G1 c0 F    using the interactive option Insert->Curve->Basic Curves...->Circle  */, N8 L$ v8 r/ U( b- }. O" Q! V

( O% B$ P, T+ }8 Z) g8 @# d- q2 ~1 Estatic void rubberband_circle_cb(double *screen_pos,
' }' c7 U3 e- \& E5 A& ?    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data)7 n& V9 `3 ^/ W+ V
{" u3 K3 z  b4 n4 X
    double  D  c" Q6 f; D) V
        axes[9];
; r" y+ j! {& G: }4 r    UF_CURVE_arc_p_t
4 `5 ~) B- @7 S$ `        my_data = (UF_CURVE_arc_p_t) client_data;
6 K7 w) T; y, N# @
; O% S2 o+ p/ i" T# c5 P    map_point_to_matrix(my_data->matrix_tag, screen_pos);
% E8 a. s& K* l2 S    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);
/ y+ F$ X$ @, R1 p; {. q8 t5 ]( ~8 t5 M, r
    if (my_data->radius > 0), _) u5 ~# |: T0 E  l
    {+ I* b1 O5 b' \# v2 k& Q
        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));
% u2 |3 \$ o% L* r! k' I2 H# T$ J. t: Z* Q
        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,
: Z7 U( E8 @1 [2 X            axes, my_data->arc_center, my_data->radius));' L: }9 X; J5 _6 M
    }
; q; n/ i! a0 B; b" M3 \2 h5 X}
; b7 F( f  y6 l. X1 \0 Z, k/ I; p( Q3 j0 `
static logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)* _5 Y  j4 a/ [) D5 a+ F
{
' |. J4 H' r7 S    int
) c8 w6 \) A, w# Z9 M% w; h4 E        resp;, p; t; m5 O- I# B, F& d
    tag_t* u) t: K" b. @) E! @
        view;
- @3 c; D3 \# x& J$ K: ?$ Z    char7 I6 Q2 Q! q0 t. g' `
        msg[133];4 G( }0 A1 H2 [; U3 m) Q
    double- r+ W& i7 U) g+ m% s3 T9 B6 L0 v
        on_arc[3];" M- Q4 c7 w2 n$ J6 D* O
/ A1 E) T( |% C" ?$ k
    sprintf(msg, "%s center", prompt);
; L9 A3 n8 n& @7 R    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,
% u" C; c( u0 R. k        the_data->arc_center, &view, &resp));/ b3 B! x. `: W: Q
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;7 [0 D% @/ |. V6 O+ H: A. C$ y+ a1 E
2 n$ B) }3 X+ ^* Z3 C
    the_data->matrix_tag = ask_wcs_matrix_tag();
) K: j! `' U; J( ]2 v" N! C    map_arc_center_from_abs(the_data);( o8 ^* v% C% l! }2 ]

5 ~! K9 T4 N& R$ ?( |    sprintf(msg, "%s point on arc", prompt);8 y. u: ^7 v& F. ]3 Q! Q
    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,( ^$ f, u$ ^* c7 Q! W
        (void *)the_data, on_arc, &view, &resp));! t1 B9 g# L/ I. `5 v3 R1 a
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;  P' Q! ~' N0 O6 u: Z
# f& v  p- _5 Z: q6 }
    map_point_to_matrix(the_data->matrix_tag, on_arc);9 Q+ A* m+ @5 u  Q& k- j4 k4 f
7 z4 E/ T3 b+ Y& W# U- L
    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);
0 f& ~1 L7 b9 C
/ w% G1 H0 _) @8 F) m    return TRUE;
' f2 q6 c+ g( U4 i' t}[/mw_shl_code]
  O3 X3 Y4 J' ]/ J; w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了