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

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

admin 楼主

2018-7-12 11:09:03

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

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

x

; a. \' ~2 c9 M% n( `7 F
2 Z1 H, v: R, BNX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点
8 y. j4 w4 a2 A* c5 S# a; o" M  K/ B4 k4 B2 v
[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata)
2 h* h- Q. l- ?; Q2 h{
9 a+ c  e! d# G    int' B1 h' l/ P( A5 H/ e
        irc;
- c- J. ^$ |9 Q1 m/ y    double
9 Z' f: O6 D5 q* C3 q8 a# ~        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },
% _% p4 `- C5 o        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},$ @3 O* g- l1 P, k2 w! ?0 U; n
        mx[12];
% ]0 N5 s+ U: \) c, ~
# I( U: }0 O, ]- o- P. K    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));: c$ j0 I* `6 [) |6 V0 n( _
    FTN(uf5940)(abs_mx, csys, mx, &irc);6 S6 L6 i8 G' b; H: s: R( _' s+ F
    FTN(uf5941)(adata->arc_center, mx);) b; m: z2 f  B# W* `% N6 k
}4 i2 H/ ]6 a* K+ i2 R

3 }( d' S/ _( N/ {2 p/ a. kstatic void map_point_to_matrix(tag_t matrix, double *pos)
( c# n  V9 O  ~5 \7 m: w{
& l% [* m: E% P! g: U    int
- `0 o& I) d4 h4 n( t        irc;
. ]1 X# q* E+ _7 ^, |6 ~    double
7 p4 ^2 `' w4 r7 F" \4 n3 n0 G' j        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },
9 o' {1 h  L: F0 n- Z/ \' o5 l        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
, z$ L8 r  i9 L) K* Q" X9 v3 O. G        mx[12];
+ |  }8 K. @, a% s+ R7 j  g/ {
# m2 {0 x# T+ j; h% U( d    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));4 S& Z) F6 I, q# N) y
    FTN(uf5940)(abs_mx, csys, mx, &irc);6 g0 Y# a$ l: B  Y4 r  p
    FTN(uf5941)(pos, mx);( {4 I8 t1 N6 y* d5 z6 n
}  r" Z9 j6 E. @" w+ s+ {' v6 J
  @% F& B2 B' [, m2 z9 B$ i
/*  This motion callback emulates the rubberbanding circle seen when
4 Q: ~* L, i! c$ k+ y0 H    using the interactive option Insert->Curve->Basic Curves...->Circle  */
0 R# y. h( ?, I
3 L' E0 S4 L) J9 \static void rubberband_circle_cb(double *screen_pos,+ ?  P3 R! L8 e! q- T7 i/ ]# N4 f
    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data)+ S6 e: S/ O, B7 P, C- M; g" N
{
, c. N7 ^) w  S; Q0 A& H, F$ ^    double7 |$ P1 p( i" z# o# B
        axes[9];/ u* |4 D/ X! u0 T* J
    UF_CURVE_arc_p_t
. W- c/ E. C  O- j        my_data = (UF_CURVE_arc_p_t) client_data;: [: T) [5 p8 A# @2 x

& N' _9 E/ I$ B" _+ e    map_point_to_matrix(my_data->matrix_tag, screen_pos);
: V2 B& M1 R3 H3 C    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);
3 Q% y0 y, A$ b0 Q  I
! E, V+ p9 \9 r    if (my_data->radius > 0)- [2 x: y6 U2 k* `! n( C
    {
  R9 k1 h- x  z% v8 X9 |3 t        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));' u* [2 `( K. n
$ ?" n* L3 H% N; I0 x0 c0 G
        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,
4 n1 q' ^; X$ j& o            axes, my_data->arc_center, my_data->radius));
2 J: I+ C  h' o    }2 b- @! i1 t9 n2 P: i
}
4 \; \, s& \& ~  o/ i* E
1 W( g0 ^$ R7 S* q. t) X/ G" estatic logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)
  S" [" ^( P1 S{& b2 P* X0 z. j7 [
    int
* p) M  C0 L4 o$ }        resp;5 O+ ^  ~" V5 d
    tag_t
' k. }- Z" B/ u+ |        view;
# {4 J( D! ?# @1 q7 ]0 L    char; p- g. d8 @; i+ I) F( C
        msg[133];
% O2 }1 b5 q$ a! g    double; o8 P( A/ B$ O; g# ^) X; F
        on_arc[3];7 l' ]' Y$ R; `# Z3 S
/ m3 W. W" l% {) w+ m6 s
    sprintf(msg, "%s center", prompt);
5 p) B  o5 v/ W! u& e    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,3 J& ]% `% `! X" g' g
        the_data->arc_center, &view, &resp));
# a1 u! y+ d8 w7 w0 v2 E- o    if (resp != UF_UI_PICK_RESPONSE) return FALSE;6 G9 B. G3 n  h3 n3 ?$ G

! b8 N; S! U* F' p, [! N  K    the_data->matrix_tag = ask_wcs_matrix_tag();: d. q% X4 a# U% m6 `, t& k
    map_arc_center_from_abs(the_data);  \' e% p5 a: m/ G! b* a: X- a

" t& j. m" v0 T7 Q    sprintf(msg, "%s point on arc", prompt);
  V' Q% G$ u" q3 V+ t    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,% ?- Q; q2 j. {6 P
        (void *)the_data, on_arc, &view, &resp));/ O, @. [9 t* Y. q
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;6 o$ ^7 H2 O+ z( {

+ \% m$ f' f  D. J    map_point_to_matrix(the_data->matrix_tag, on_arc);) ^( E/ x+ r* M& V+ F

) W. D& ?$ J9 Y4 p    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);: M; L0 s( [2 O" ?2 G5 R! O, e
4 A8 V! l: }! H& P
    return TRUE;7 N' w% j) |4 I! p0 P% f( v# h& Y
}[/mw_shl_code]
6 i$ |% l8 D: T; I7 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二次开发专题模块培训报名开始啦

    我知道了