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

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

admin 楼主

2018-7-12 11:09:03

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

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

x

6 P" U. m( b! j
/ ~$ u( z, @6 s$ c6 Z. UNX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点
7 [6 P) x6 J2 x) e) a# z- u3 d0 h! E- T, t4 ]; N. d9 O
[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata)0 s" ?& X) {. j2 d% i) l; S7 g2 _
{
$ C  h9 F# n- x- @# O- f/ t    int
- w' O1 M* P9 Z9 E2 ]( j# l3 {        irc;( ?( g" [* L2 z  J
    double! |% B8 Q2 e' k, q. ]$ K; C+ y% `
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },) ]& f4 ]/ A$ q  u
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
% t7 U- H) O# L. N7 [% g        mx[12];; q& i6 E  x, F: u! u# X

5 I1 y6 y! ]0 j    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));1 G4 V( t4 Q1 v
    FTN(uf5940)(abs_mx, csys, mx, &irc);3 b4 f/ H+ {! ^" p; C: A
    FTN(uf5941)(adata->arc_center, mx);
1 K- i: X8 L7 o7 c4 H# v0 t  b}# _, G. L4 l: X2 `
  Q8 g# J+ E: ]! ?! S( N
static void map_point_to_matrix(tag_t matrix, double *pos)
, L, h  D& P4 S% N, I- K+ a{
6 P/ t/ R9 V  t& s, b: L6 G    int
3 i$ e& R% z& H4 t        irc;+ t3 D6 f' m( M
    double
  {) G2 x; T8 n1 W/ S) q        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },  c9 Y" G$ f! ~, C3 f+ R
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},3 L: o) n) ?' J, I2 q& I9 H
        mx[12];
2 D7 q5 e; b- p: y
: X! f' ?- h6 X    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));
; G* c1 X6 R+ u: T) R3 i7 i9 u    FTN(uf5940)(abs_mx, csys, mx, &irc);
6 j3 U$ ?  n* t1 J5 l9 J    FTN(uf5941)(pos, mx);
, ^0 t6 W" K3 U}, g' P+ x8 R+ N9 j' f2 }* h

6 j1 D/ V& ]' I/ A$ a9 h: B3 u/*  This motion callback emulates the rubberbanding circle seen when
/ Y; @5 C9 A6 R8 [2 h3 C  ?    using the interactive option Insert->Curve->Basic Curves...->Circle  *// w  ~3 w% @( w8 J& L7 I& y

( s; u& H8 _1 [5 Y/ Y0 }' t* cstatic void rubberband_circle_cb(double *screen_pos,! ?8 p7 ?  ~: b; i
    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data), M- S) ]" @+ E: J% X
{" N0 r9 a& w1 L$ u: m( D. M
    double- x8 i. A8 W- K/ _
        axes[9];
! y4 P6 W; P& Z    UF_CURVE_arc_p_t
8 ~1 f3 y5 q" a2 W8 l1 }! e$ n9 S  `        my_data = (UF_CURVE_arc_p_t) client_data;
1 {% |0 t: f3 ?! f+ Z! d1 M
" v. h1 D: o$ j3 l& t# T! M6 c) T    map_point_to_matrix(my_data->matrix_tag, screen_pos);: z5 @& {* e4 T  |3 r' k2 k  y
    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);6 ]: [# w6 c7 M+ B$ |4 _3 |( L& X
4 S  j) i6 n" C+ E, z0 H7 M' @
    if (my_data->radius > 0)% e$ m! C- B* u! Z' Q
    {% t' X# F/ r. z' S: Q4 K( b8 g# R
        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));
5 _/ \: S& h3 Z* x$ `6 O% ^% S8 L$ p/ ~- g
        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,
1 n% _* n; A) V2 f0 M4 G            axes, my_data->arc_center, my_data->radius));! C+ K6 A* b. Q% V) ?
    }
. _6 z# Z6 k' q* f}
( \, U9 f/ m$ D: h+ t. W1 \; C* d4 l1 ^  h1 K% ?
static logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)
+ t+ z0 E8 ^2 W% u$ P' O{6 q! E" n* J# O* l" `; r) M5 }
    int
+ S7 y: a4 L, V8 v1 b3 `9 w        resp;( ^2 v9 M. i1 ]+ Q2 X) H2 a
    tag_t
" `4 r1 I4 J/ i. E* ]6 t$ {3 y        view;, h" G( R" a8 k5 ]
    char
: k$ d3 e1 O% _& e7 y5 B% q# H5 l        msg[133];; m8 M1 A3 @! H' l' P  C
    double( V: c3 y& x( \
        on_arc[3];
, r! g! d; u: p& e/ T
. n* B6 S. x* Q5 e; Q3 A7 a4 n    sprintf(msg, "%s center", prompt);$ X3 y, P9 j3 d3 j  ]
    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,( k! ^; z: Z* Q& ~3 K- C
        the_data->arc_center, &view, &resp));
5 _$ t  U1 ^; w, g0 E* f3 P1 P8 e    if (resp != UF_UI_PICK_RESPONSE) return FALSE;
- q) |4 t  k* E1 J* W2 q
, B- g5 P; x, M- f( \# _8 w    the_data->matrix_tag = ask_wcs_matrix_tag();
4 O. v7 T. _% |/ Q& c5 I    map_arc_center_from_abs(the_data);
" z. G+ ]* g* i+ X, j3 V+ K6 M' \1 _; V9 F1 j: W  l
    sprintf(msg, "%s point on arc", prompt);
; r% h  k. c. Q& P: e    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,* ^9 X9 @+ {, T& t$ }
        (void *)the_data, on_arc, &view, &resp));' v' u% }# t+ b3 t' @
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;
8 e0 U7 Z$ ]$ x& `6 B0 H/ h8 y5 V& t! z. M+ l6 {, x
    map_point_to_matrix(the_data->matrix_tag, on_arc);
; ~3 S% ]2 s, K( O: D1 ~" L# l
6 h4 N' J$ l" k9 n5 }/ l    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);
' J9 _( w( M- y8 Y% ^( P6 Z# w6 f; R0 o0 N2 Y
    return TRUE;; V8 b1 d: Z& d3 N$ q2 f; e
}[/mw_shl_code]  j, M4 X4 ?" S
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了