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

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

admin 楼主

2018-7-12 11:09:03

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

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

x
+ J9 e3 k1 V. w8 }7 J0 r$ ^

% Y. z/ x# Z) N; k1 gNX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点. c) w( \5 V; O; |+ V' Z

7 H7 [8 t1 P) e[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata)3 A$ j* g) P# i% f4 |
{" H8 y' K- V/ k- n; |  }5 i
    int/ h( A; u8 G9 X: g' T' w
        irc;
: D. t! o7 J6 [    double( D9 J/ H+ ]8 ~3 G; i3 X$ t* \
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },% m; P# _# _$ n; V7 R! [" F$ j* v
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
1 U* B3 c/ b) C: [, Y% G        mx[12];3 e# j% V- `/ U/ b4 u4 j
, n6 r0 L. W4 H( D& }( c
    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));3 F6 I6 P4 B* f; v( K; B6 I
    FTN(uf5940)(abs_mx, csys, mx, &irc);! s$ E1 @' |( j
    FTN(uf5941)(adata->arc_center, mx);$ q/ ?, @2 }; h0 ~! S  ^
}; o; l& z) a) [. S! ~

6 ?2 n, Q; E5 ^0 Jstatic void map_point_to_matrix(tag_t matrix, double *pos)1 H# t8 q0 }3 w# W  H
{
7 q- K9 ?' `+ m1 \6 M; |% X- x    int" I  Y5 N% h1 J' z; y$ b5 ]: S3 {
        irc;
. A1 \4 ?7 e* G0 q, j- t    double) I+ ]" k/ j/ _% W( t5 {3 m& L
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },; g. ]8 |2 q) ^' E! ~/ j
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},3 o4 p/ v' B  a4 P
        mx[12];7 T: a/ L- g4 ~9 Z: ?' p0 D7 B

' e9 t: C% d7 g4 q9 y  {    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));
+ I" N% v+ N. R8 f4 J7 o  m    FTN(uf5940)(abs_mx, csys, mx, &irc);/ L8 a& P+ ?  [" b% `
    FTN(uf5941)(pos, mx);" R' [5 m3 I0 N+ j, `0 g
}# T- c" v0 y9 Y" ^1 D/ r! ^# v6 U, j
" {# a+ Q9 \) T' e3 X
/*  This motion callback emulates the rubberbanding circle seen when
2 q& [5 H2 W( P5 K  v+ N    using the interactive option Insert->Curve->Basic Curves...->Circle  */8 O1 P( p, \' J9 D) e7 P+ y- C$ M
% V* ?* T- B: i5 e: v
static void rubberband_circle_cb(double *screen_pos,
& h1 f" E$ _% p, _    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data)
( {4 n+ Y* v; O4 n$ {{
" {3 X, }0 `, }8 `; }" f/ _* k    double. U0 C3 b% _4 Z2 P' O
        axes[9];
5 E- J- i5 a. k7 D. k    UF_CURVE_arc_p_t  U% ?( k; z+ F# r
        my_data = (UF_CURVE_arc_p_t) client_data;; z) w5 {9 a& r/ h) z' G7 v

. T& E; B) R% V/ _& `    map_point_to_matrix(my_data->matrix_tag, screen_pos);, A- M9 M' |6 g  d% m7 B
    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);
0 Y! r: {- r" f4 n% |) S: y
1 ^2 b. C4 ]( k    if (my_data->radius > 0)
2 U& f  e( k- K, I+ w    {
# \' `  q3 ]8 g+ }" v( p        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));; v* @! H/ [$ Z- Y0 o/ J8 e

3 [0 W3 w  p2 {/ M7 m; r, B: _5 Y        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,% @0 H) ]. Q! m( b2 V' C; M1 R
            axes, my_data->arc_center, my_data->radius));4 d1 }& h" ?: g3 O$ a' S
    }
7 ~2 h6 t. b& k! d% f9 z# ~( ^}
) B" V* K# d. P- O' g7 z: O8 U& [) H: d( T
static logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)1 |0 l) g+ E" Q  O4 U3 F7 D
{
4 d; [& X: V! V4 `) Z    int
& S. H: v' L. ~# L3 q1 b        resp;5 M: `* p$ a( x0 z
    tag_t+ x# ~$ s; ^8 O+ y# R7 D/ r
        view;7 A$ U8 _; u; r3 }  W+ W
    char
- b: p9 U7 b; k4 N' @        msg[133];
. g3 |/ |& D& j9 d$ j    double9 s& y4 \- L: a5 f
        on_arc[3];
2 F  P, D% q! t" E6 N. T6 U, W/ O$ ^' r+ f% X' A" ~. ?# X
    sprintf(msg, "%s center", prompt);
5 \$ V1 a% \4 m% `    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,
+ W( U* Q: w+ U% C! @        the_data->arc_center, &view, &resp));  j8 y0 i1 v0 \1 Q2 {, r
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;
' j' @2 n6 b5 X' \) r- g' j
5 C, y$ M' H% G: d    the_data->matrix_tag = ask_wcs_matrix_tag();3 p" w) h2 C/ s( _
    map_arc_center_from_abs(the_data);+ J+ P  ~: q2 S7 a% ?+ p5 E

! E/ U; z" t# G) W% D3 H    sprintf(msg, "%s point on arc", prompt);' o& G5 {! d) {2 P' P
    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,' T/ j! ~+ y* ^  M
        (void *)the_data, on_arc, &view, &resp));
6 j; h6 m; v; B1 K    if (resp != UF_UI_PICK_RESPONSE) return FALSE;
; f! u0 X( l* ]" ~3 Y6 T( S. b* \6 a6 H- ~7 \# }) S) ]
    map_point_to_matrix(the_data->matrix_tag, on_arc);5 I% U; I- ^: @6 u2 J+ O8 J! M

, L+ e- ~/ q- M# K0 B    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);
% Y( v5 U, c! ?' k0 `* \; f/ ~8 N' o* v+ w% H7 K: h
    return TRUE;
5 x$ z; X2 ]9 i& T+ B  R$ a}[/mw_shl_code]( O( a3 e: G- ]+ m7 ?0 ^, g& I4 n1 {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了