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

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

admin 楼主

2018-7-12 11:09:03

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

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

x
; @% S8 F( M# `) F4 C
- p8 P5 v0 i  g' x7 t3 t* o- Z
NX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点0 L& U1 `6 K, }, i
8 }, r6 a  n# _
[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata); C. p$ k$ d  v7 M8 d1 O' K1 j  c
{
$ G# l4 A! b8 o. n, t! @    int
; o6 [. X$ \# n7 F+ a  L- p+ _        irc;$ I# _( E! \- d$ w
    double
0 l  @+ @. Q4 [9 C        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },* m. n; G( j# G* c
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
9 D) Q1 T' c4 S+ @2 n, Q        mx[12];
% n0 Y% r* Y2 T3 B
  V7 W' R: Z& h; J( t# E& U    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));
& i# d0 n' [+ a2 ]0 q' u    FTN(uf5940)(abs_mx, csys, mx, &irc);# u! l" g; R2 ]& S: z1 w! ?5 Y
    FTN(uf5941)(adata->arc_center, mx);8 @' P6 P) m! u8 f, O! F
}
) f/ @7 h1 w  `8 ^2 h! L" Q6 J2 o: b8 _* r4 C: E
static void map_point_to_matrix(tag_t matrix, double *pos)
6 z3 X0 g9 Q) }! S; m{
& y/ n  A! t/ o5 E    int
5 m5 s! v1 ]/ l9 ^  ^        irc;
; m/ I+ T6 ], T; h( R    double
8 j. D, n; c/ B8 z3 z        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },
$ A4 k: E  i) s3 H. S        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
9 f9 F( J( v3 H6 B$ k* c  Y        mx[12];
; ~# V+ l8 ?- e7 G* P( f4 |2 b9 Q( T( V5 ~' m3 M0 ~
    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));. n8 R; @. {. c/ P
    FTN(uf5940)(abs_mx, csys, mx, &irc);
# a: x# X* Z0 T$ O/ K; Z    FTN(uf5941)(pos, mx);3 ~+ y" a; r: R) ^7 @/ t7 J
}* W# {" v( e: T+ j6 S8 j( V
0 Q, N0 v! P/ d( p/ Z
/*  This motion callback emulates the rubberbanding circle seen when
. X5 d, F7 W! o: V    using the interactive option Insert->Curve->Basic Curves...->Circle  */5 H7 }) J$ ]4 v( N
' j0 Z1 D* x% q3 Q6 v
static void rubberband_circle_cb(double *screen_pos,
" W6 j9 ?4 z3 O; X/ b/ \    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data)
9 D" s$ G+ u( g! H9 K! _{
& p8 P' `: x, U; O+ r    double/ ?: c; g2 o  o# e
        axes[9];6 Q* b$ O- n: O  [; O
    UF_CURVE_arc_p_t1 [5 H6 z( {! _, n. N! I+ w+ v
        my_data = (UF_CURVE_arc_p_t) client_data;6 x6 E: e* w) [6 h8 M
% Z4 u  R9 E$ }# T* |- ^( H9 {/ q. G
    map_point_to_matrix(my_data->matrix_tag, screen_pos);& ~' m- o' n$ c& L' h" N  m0 {
    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);
* x% Q+ T( d1 }' A0 w2 R0 `
6 ~0 ?) {# n( i    if (my_data->radius > 0)5 _: q$ ^0 n. Q6 a: m, n
    {# ?0 l9 A, \- z( @
        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));
, [: u( n1 i+ a' P
3 z& ?) ~( U( f7 n2 P4 s. z3 h$ ]        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,
! K. v4 }1 g/ y/ w' J            axes, my_data->arc_center, my_data->radius));
) Z6 k. @* w0 v( b! ^5 z+ z' q    }
. R5 _) Q+ U: g4 Q( ]6 \( _}
4 G0 i& O: N: n& o  m2 n+ a" \
! ?, c- K6 U& J, b# Hstatic logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)
" J$ Q/ `$ a% W+ F- Q{6 F: o% B0 H- U% ^
    int) x' W' e. q5 F$ a! Y& O+ A
        resp;
: @" \" P6 F2 x5 @/ H3 q( K    tag_t2 v- z9 y, n  S9 X! V- W
        view;/ U+ O+ E# S! h( P  k, c' D
    char' k/ E+ R' w3 @% V' S, \2 ^
        msg[133];
- s3 H0 G4 C+ O" a& Z# s" y    double
" U0 @+ a" D1 F' [        on_arc[3];
2 {% G$ I& D7 h9 J8 W' t* c; t3 x* S: B8 {4 H" ?  s8 E# X; x$ f! l
    sprintf(msg, "%s center", prompt);8 U" |' }& s, o, h; S+ H8 d
    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,' b( c2 r6 i9 M9 D& t
        the_data->arc_center, &view, &resp));7 n9 q) U8 H+ [/ V! Z' \. F
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;( L: y# e6 F$ C8 d
  X5 t1 `4 A) y. V) q6 v
    the_data->matrix_tag = ask_wcs_matrix_tag();
$ F  Y! _3 o4 w! J% }    map_arc_center_from_abs(the_data);
. g! X7 J1 o5 j# b9 Y) G) q2 s3 ]- X  n/ M6 T  Z+ X
    sprintf(msg, "%s point on arc", prompt);' C+ g$ {1 b: F. }5 T+ i
    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,
0 ?+ A0 H9 S! u: R# E0 n9 m- p        (void *)the_data, on_arc, &view, &resp));0 ]9 m, m0 E/ B" H: k
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;1 g7 G1 T9 x* y4 V' `4 `' X

" G( I' N/ V  l; y  S    map_point_to_matrix(the_data->matrix_tag, on_arc);! C+ E  ]: q6 l7 Y1 h/ y$ t  j

% n* K1 B# O3 e! w5 n3 |/ V, y    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);8 r2 P4 \; Z& N
" Z0 g! P5 d5 S) E. _4 w5 o1 X3 P) {
    return TRUE;
/ O) j; A$ E8 O4 i- X}[/mw_shl_code]
' X' P7 {! Q$ o& c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了