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

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

admin 楼主

2018-7-12 11:09:03

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

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

x
& b- W& Z- N' ?# w  j

8 D; o# j* `- X2 J1 UNX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点8 J/ C5 v% p/ p; C

' N. F* ?* x! K9 A5 p+ v[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata)
( n  W6 ^" ]- G) s. K, @{
4 u9 i* E9 l& g( q    int
0 ]) C) l/ D! h2 c        irc;+ m% f; R, @/ t2 Z/ K& y
    double9 M" T" @/ |# L2 f
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },; ?0 Z! H5 [  \! v1 Z- b
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
7 \. `. N; o' W        mx[12];
3 l! L. n4 O4 W* n  V: m; x) a( z& \5 e1 |! q# z$ \( V6 w* c# `' y
    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));' z6 c( U" d  h/ E- @. A) \0 Y
    FTN(uf5940)(abs_mx, csys, mx, &irc);1 o  D% S7 o1 v2 k
    FTN(uf5941)(adata->arc_center, mx);
& l. {5 d: i0 K' p3 J$ \' t}3 C/ t# R% R. ?( c4 F# |7 Y

4 z5 z. j2 m7 U$ O3 g) X7 D# Bstatic void map_point_to_matrix(tag_t matrix, double *pos)
2 P8 w4 k( A. ]- l* q+ n. Y% g{; a6 h  f2 p: ]4 j3 `3 O4 ]$ T. @5 v
    int6 ^) F8 Y7 |" i) {: s8 C) F
        irc;
8 M/ ~6 t  S. V, X1 B    double
) y( G. P' X, d& Q! c- ~, U1 M        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 }," x/ g& Q8 k* [) l1 a
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
" T0 l7 J- Q  c* c5 z        mx[12];5 L3 W, I- a3 u# ~8 A
% d3 j& ~3 Z" D, d0 f! F" I
    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));. |& N! b: L" I' W, \) w
    FTN(uf5940)(abs_mx, csys, mx, &irc);
% o1 {: i9 G+ _7 F    FTN(uf5941)(pos, mx);
! {, \4 R: B) o6 |7 U. s}' h9 L/ q: l  f( u
3 g+ l. A8 r4 o+ V9 y8 J
/*  This motion callback emulates the rubberbanding circle seen when- n: [2 J0 p! q  |
    using the interactive option Insert->Curve->Basic Curves...->Circle  *// a( ?: ~# N+ H/ X# I* ?
( z# J& O, q& e, }
static void rubberband_circle_cb(double *screen_pos,
! t, w% x, G( @6 W/ R+ t9 }0 A" E    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data). d; T' ]% q, w3 x: o& F/ t
{8 l# }# n* z, b: Q9 c5 s2 c, r
    double+ @9 o, d3 A& S8 ~# k, B
        axes[9];* Y' t7 z, L: b$ E' }* T2 G
    UF_CURVE_arc_p_t
+ U- I4 m1 m2 c        my_data = (UF_CURVE_arc_p_t) client_data;
9 `* ?. L7 c6 O0 H1 W
) B% l- P9 @: q/ e  }% O) @) F    map_point_to_matrix(my_data->matrix_tag, screen_pos);
) |. M! g9 g5 e6 c% V2 F    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);; [3 |  q) [  _! o
% O9 b  L, A  B/ M0 A4 O
    if (my_data->radius > 0): ]. S& g( G# k% ?$ K
    {: _# i1 t% e( V- `: [* @/ J
        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));, p) q( d5 q' [* F# `3 ?) q  C3 g! A
0 G# y- a) x+ y$ q3 U- l
        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,
! B/ j, [3 I6 J  O# r& _            axes, my_data->arc_center, my_data->radius));
. \) j% M* [+ B( a    }
; U! j, j; l" s, Y' ~( U' j}
2 x) v( {+ r4 {9 q: B. ]  n  g1 u3 o$ r4 ]8 B% m/ W
static logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)- h9 }8 _* `) E9 ~& c
{% @- F$ K" ?; v, A+ ^
    int% i4 @+ N6 T& E- G1 H( T
        resp;5 B6 y* N2 O- }1 S# k/ n9 P; w, P) ~, W
    tag_t8 \! x: y2 x& x' K- \
        view;
6 ]: V% u8 R: n" Q    char
$ Q" g! D5 |8 q" R  S( f4 t* {5 t        msg[133];! `9 @, _( |2 z6 W1 L4 g
    double
# H; O7 v8 j& }5 |" q) W        on_arc[3];
, [* U3 |) w1 y& _; o; f2 {0 w1 j. Y0 j' B2 U2 _! A! s" E9 ?
    sprintf(msg, "%s center", prompt);
* T$ D. w( C* ]  i  Q" z# _7 `4 g    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,
/ U7 k0 T5 x+ T* i' Q) j  i        the_data->arc_center, &view, &resp));
" k. B: R: g0 a    if (resp != UF_UI_PICK_RESPONSE) return FALSE;5 l3 S- H3 e5 R2 l. s/ _: H

# W) v( y; T1 M# w& T9 Y- q    the_data->matrix_tag = ask_wcs_matrix_tag();9 o" _% R/ U) s1 A$ ~4 b" f
    map_arc_center_from_abs(the_data);
" ~2 ~' U0 c) I# X& ?: m6 z  Y3 x; W- \
. a, ^' n9 c2 t( U6 V    sprintf(msg, "%s point on arc", prompt);
* s8 w6 ~! F1 A2 Y/ l& a# t: c4 S    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,
" o  {/ D7 {/ ^. ^7 k1 k! a( \        (void *)the_data, on_arc, &view, &resp));
" e9 X' S+ p' H$ S1 p. A4 [    if (resp != UF_UI_PICK_RESPONSE) return FALSE;4 n+ `, R4 M& z" K' F
. p) t5 T9 a% v% l* r$ ?" Z& M  G" J
    map_point_to_matrix(the_data->matrix_tag, on_arc);
' N, `  @: t3 l* Q
5 B1 U( e! _" o& f6 N, ~. m    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);
: p$ U" O0 l( s$ C, B* e$ y
: \/ }  T- ~+ ]0 y$ O1 c) Q    return TRUE;0 t7 n6 @7 i; U( c! E1 v
}[/mw_shl_code]
/ r( K( b" {! @2 y5 G
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了