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

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

admin 楼主

2018-7-12 11:09:03

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

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

x

  J, g$ o( @  t& ?  w( Y7 d. d' X" P6 d
NX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点& P5 v$ q- }# ?+ x/ F
& R& u# b7 H) a3 Q% v
[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata)
8 ~; o7 V3 m; S% z& N{
% ?8 f; P4 D! c3 ~8 ~6 Z3 Q, h    int. k5 @/ {7 C, O+ v. Z# s% C
        irc;
* z3 {0 B5 o$ F6 M    double8 Y' Q- \+ N+ R+ Y
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },/ v8 L" |! K1 o* P
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
% T% i& K+ v& A) v1 i( k: y& g        mx[12];
7 L: G  w/ s  n5 f! A0 K
7 A1 a8 C2 }- m7 X) e4 \6 a    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));! F6 W8 D: T8 o. V
    FTN(uf5940)(abs_mx, csys, mx, &irc);: N  }; q0 F; _5 i) f( x- W3 A
    FTN(uf5941)(adata->arc_center, mx);
7 Q- m4 X: O  y& p7 j) h! `}3 @. `9 A& [8 M. K: ?1 s

! S6 n2 Q  E: Q# k& ]* vstatic void map_point_to_matrix(tag_t matrix, double *pos)' M! C8 S( R% C6 |! |: w
{
& W! |2 M" |9 f* R# s: ~0 l% b    int& p6 Z. o7 l; N" w' b
        irc;
* d  t3 x# b& A% H% l; Z. T" y    double
# P4 H* U- n& y8 v8 _' w8 s        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 }," M6 r( c3 x  W' h
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
: P. n( A3 V) M, V        mx[12];
3 ?! K! B% W* V+ |- X8 u: [. P& I% n4 q+ T. ]+ y. Q
    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));
0 u8 u, S2 I, n% r3 G    FTN(uf5940)(abs_mx, csys, mx, &irc);
3 F# T' R0 B2 n+ ^: m: X    FTN(uf5941)(pos, mx);
9 E7 q; F) j. l}
8 C  r/ N) c# F6 N- l* p
% s1 m; d" G5 u4 f/*  This motion callback emulates the rubberbanding circle seen when( \; C0 P" U! u2 L: z
    using the interactive option Insert->Curve->Basic Curves...->Circle  */
6 A4 U2 G# ~$ a* S
$ u8 f5 h3 D8 o& C% i2 @) Q4 gstatic void rubberband_circle_cb(double *screen_pos,1 |- s, {, e2 D1 B, |7 f# @7 C3 R
    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data)$ u% c; [, M$ l; S4 s( }
{
1 H& x# i: e' E    double- C: |3 d7 Q$ T/ Y
        axes[9];9 I+ ~5 L1 e/ X- F% J/ A
    UF_CURVE_arc_p_t
) o/ `( V# b4 ]% d) M# J4 R        my_data = (UF_CURVE_arc_p_t) client_data;
) y. K( K5 E0 E+ h2 i; ?
; F2 ?  ]; o; f    map_point_to_matrix(my_data->matrix_tag, screen_pos);6 T3 `8 ?+ S: P  w8 {- C* e% c
    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);
, M$ }* ^) v/ @# j8 I* P" g7 Z: \. H
    if (my_data->radius > 0), ?6 I; d: O5 F. n7 A& |
    {
# R/ k6 l+ b$ l9 E9 [1 g        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));" Q$ L5 B/ ~& R1 v

' G  x+ N! l/ E        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,2 O9 M( Q' _+ s9 {9 Q
            axes, my_data->arc_center, my_data->radius));
0 @% H: J4 i2 q* M1 t$ Q9 T  p    }) J; Z  f  Q6 K* M* j) a4 n* |, X' J
}
0 {) L  P/ G% ~# K/ C0 |
. K: X0 d6 N# Z4 N0 F& {/ cstatic logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)
: N9 }5 @/ J% d4 z- Y( Z5 d* N  G{
/ i5 k5 w( K' {6 P: }    int
8 b- v3 T0 `. i8 B% O5 d        resp;9 q! j1 k5 @. E& s- O
    tag_t# [) a  I" Z6 U4 l
        view;: V3 f' A* r  |' j2 r" {
    char9 j2 L8 F4 W# l4 f0 u
        msg[133];# M2 b$ f! [2 M( j1 c
    double4 C; n  u; I9 T8 e% T, M3 ~. ~
        on_arc[3];' a9 I' a! ?- _/ l) J9 L1 L

$ @: {; `. O/ V7 P9 B    sprintf(msg, "%s center", prompt);
7 ]! b  S) L) r& Q; m# g  P2 U1 A    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,5 w$ H% D0 x2 m, n: b
        the_data->arc_center, &view, &resp));
2 Y1 J! u7 u* ]    if (resp != UF_UI_PICK_RESPONSE) return FALSE;9 N- X: {1 G4 ]
/ J# @' t4 L- V, U0 ]1 |
    the_data->matrix_tag = ask_wcs_matrix_tag();
6 B8 S: `0 X9 q6 E! |4 s: z    map_arc_center_from_abs(the_data);
: |9 A0 J; t/ N
8 X  p& A8 x8 O7 H! y  A    sprintf(msg, "%s point on arc", prompt);/ a; P2 Y/ I& D: E
    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,
& F9 I9 D& ?& O  k" H! z        (void *)the_data, on_arc, &view, &resp));
! N# `- J- ]# ~" o    if (resp != UF_UI_PICK_RESPONSE) return FALSE;6 S$ ]8 o" _- r& a9 l; B3 F
5 p; X' n" m, E- K. m. u
    map_point_to_matrix(the_data->matrix_tag, on_arc);% Z2 U% h7 {6 `4 J- l7 C( U( k
% A: H+ ?5 \" I' A  \- x% E
    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);
2 |4 A2 ^  S* S2 |" }# O8 y& E/ Z) V
    return TRUE;
$ [% @1 P4 w( ^* m: D" Q  \: {}[/mw_shl_code]1 G0 O3 N& h5 w0 ?( M  H: r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了