PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[资料] 【NX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点

[复制链接]

2018-7-12 11:09:03 1897 0

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

admin 楼主

2018-7-12 11:09:03

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

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

x
6 K$ x2 R3 [) j) C) F7 E
& S* z1 }  {: l* w6 n
NX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点
% e/ O3 J& O& V; L6 x5 n$ T/ z! Q5 L; f  N
[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata)
8 @1 D8 A4 \3 p+ {, m& T& Y6 m{
& S6 O  g+ M* ^# H, l/ K    int
  j& ^8 F* R9 `: B        irc;
$ s; \2 B# X, |; o    double6 U. y# ~; ?' i. K
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },# @- k7 R& Z0 v. F4 ^
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
" c+ b$ x. \" R; K8 n$ t2 g- U5 g        mx[12];
% ]% i- j7 \$ o0 K- t. W; C4 L+ s- T- g7 ]3 |
    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));! q3 Y" x0 M! H1 Z2 k
    FTN(uf5940)(abs_mx, csys, mx, &irc);( k# Y: B5 |) n2 y
    FTN(uf5941)(adata->arc_center, mx);( ~: a& _, N+ [6 Q
}4 ~6 I5 Y) b3 X; g) e) B. U
$ _) n! K2 K3 O' N3 d
static void map_point_to_matrix(tag_t matrix, double *pos)3 S" P0 X, @: V3 p+ f( E
{, ^3 D+ X& C& q* I
    int1 a3 t! f5 L2 `
        irc;/ f+ R. X; [* q6 x  P# X
    double8 V$ w" e2 U- S6 m" P* C0 ^8 w* e
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },, i- B# l& t2 \) y& f/ X+ l3 g
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
0 V# \( |; O6 b$ X& U# k        mx[12];/ j2 G* M; z. K/ \- Y

2 O) i8 @  y* v6 n    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));* ?: y( |9 V5 I: z" \5 t+ F+ R# C- a
    FTN(uf5940)(abs_mx, csys, mx, &irc);
1 Z- r, o8 ?- p$ X3 ~7 d1 }1 K    FTN(uf5941)(pos, mx);2 W  p: m  N; c! X2 r1 d
}6 ~  e  f/ P- z+ U$ [3 y/ X/ Y6 a
! E( I! t4 }2 v" h
/*  This motion callback emulates the rubberbanding circle seen when
2 Q9 g/ O' H0 v2 F    using the interactive option Insert->Curve->Basic Curves...->Circle  */) }2 r" l* S0 H7 @2 N' Z+ Q

% Z0 F6 Y) Y3 x# d" e( E( @static void rubberband_circle_cb(double *screen_pos,- @2 e& e$ L' f/ ?; _
    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data)$ n& Y6 K1 R+ t; f* J! O8 y
{: |5 m3 t$ s, c; U+ [
    double
. B6 h& `1 I/ o) R  S2 O        axes[9];
% K+ T: w6 @4 w6 E3 L9 Q" F; I7 G    UF_CURVE_arc_p_t  g5 R) i. q3 U& ]" p' H
        my_data = (UF_CURVE_arc_p_t) client_data;+ ~' B  c7 i: y

' N7 A. x' l: P- G5 R    map_point_to_matrix(my_data->matrix_tag, screen_pos);- y0 t# G! W$ f! J. E" l' N  Z
    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);
5 P: e" Z/ y0 h8 f1 n+ t" \
4 J/ y" \" n8 n5 Z6 h  _    if (my_data->radius > 0)1 T5 t; R, b6 b( [5 B3 H
    {: d  ?$ B3 l' ]9 {8 r6 q
        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));6 N& I' u& y' V6 V4 t6 ~8 \
8 ]9 p0 q  S& y$ [' `
        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,3 E* j/ r3 h! a' g6 r; W
            axes, my_data->arc_center, my_data->radius));- ?* M% w5 Q, c3 r1 f$ D
    }+ l3 ]' H2 u+ B, X9 c& [$ k
}+ G4 G! m% w9 h* @

. K/ Q- s0 M1 Z* \) {4 ustatic logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)1 _& Q8 Y9 ~3 N) O0 j
{1 Z. u3 ^* h" f" Q5 K
    int2 }) C  Q9 X8 J' W
        resp;9 t- M' t4 x& b( O; l& R+ N6 A
    tag_t0 U8 t# j* s# u/ o+ H; Q
        view;
* U! {1 r+ x& j; I, ~( o" I7 n5 D    char- P) h( h( B3 y) U, K$ g" G
        msg[133];3 ]* m4 Y, A% x: h" K) o7 e
    double
; L8 u) T: k( ~1 W: j        on_arc[3];$ }3 i! ~- i7 [' f; s+ j2 a) [" c+ ?) U

7 m. @3 k5 i. U0 C! n3 s    sprintf(msg, "%s center", prompt);
+ G" b+ R: g; S+ s' |- A7 X    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,
6 b$ H( Z/ `3 s$ ?6 X        the_data->arc_center, &view, &resp));
/ \1 c6 y' ]& C    if (resp != UF_UI_PICK_RESPONSE) return FALSE;# A, i1 V8 \: I! Y
& h# c1 u) A& {& z+ B
    the_data->matrix_tag = ask_wcs_matrix_tag();5 a6 H" h3 v; _* g" C) H- b6 M
    map_arc_center_from_abs(the_data);4 k2 Q$ x7 Q8 ~- a7 r
' S' e  ~, G, T& a" i1 N3 [
    sprintf(msg, "%s point on arc", prompt);
. s6 ~5 r1 B- {+ x0 q    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,
& B4 R" S% t& s, G* D8 y        (void *)the_data, on_arc, &view, &resp));
7 @6 e7 h8 n4 V+ w1 o/ q% I% a8 \& j    if (resp != UF_UI_PICK_RESPONSE) return FALSE;
, W/ f( v2 N( e5 z; z& L5 |& b  b4 K/ a, j: D' G1 B6 O
    map_point_to_matrix(the_data->matrix_tag, on_arc);
$ h' p* Q2 L# A& |5 r
8 k/ D; X( H8 Y3 P    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);
! F& D6 Z! R, H+ i$ \
4 O% ~( G, o. E1 b    return TRUE;
) s4 u5 Q. p8 Z0 Y" \. a}[/mw_shl_code]4 U$ Q; {5 w. M$ o
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了