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

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

admin 楼主

2018-7-12 11:09:03

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

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

x

# X- {! e  E% r% c
/ N* w6 ]/ Q$ t, ?! G3 W2 x3 LNX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点
$ W2 W" K3 t1 [* c' }, T
9 r! j6 ]$ }1 H4 E) C[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata)2 i5 C; ?/ H  ?3 Q% r
{
# n* L8 O; W8 d( S9 C    int
- ^, d9 n1 v0 g1 L5 e" w7 Z        irc;
( q4 h+ W1 a% t# w    double
5 K9 s6 g# {7 t        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },+ @; _) P' a/ r  X/ k/ {, A
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},8 e' }# w, s3 R4 W
        mx[12];! d  @  u* y5 D
7 |: X& G& _+ p/ D! p
    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));% o: |# X7 y2 m$ Z
    FTN(uf5940)(abs_mx, csys, mx, &irc);0 H7 r: H2 O5 o" P3 x! \
    FTN(uf5941)(adata->arc_center, mx);
) [5 n7 D: {5 N+ X4 o" M}
( r- a, z9 @, V$ D$ i, S4 c: s" A4 I$ s, a9 o
static void map_point_to_matrix(tag_t matrix, double *pos)) C$ L- [& {; g& l1 g3 p) J* S
{+ G$ }* ^8 Y9 P9 p
    int
2 k0 n! A$ g! f7 w( o        irc;6 S: R, \9 \; v" a6 D" D
    double
" A) L& z1 u& P; W        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },
2 p2 h) g' y* v' f, V        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},* [# |% c* @% Y% t5 I1 j/ Y1 z; n9 Q, s
        mx[12];
) x' T4 R- V5 g5 t4 f" ~! l5 _4 ~2 s1 W7 E9 {3 ~" K) Y$ {
    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));
1 D: T) |  z# _) W    FTN(uf5940)(abs_mx, csys, mx, &irc);7 a; Q" W; u) S5 y
    FTN(uf5941)(pos, mx);
$ R  M% d9 A' D- e8 N}
( z7 P( u% p% d0 |/ Q% R, e8 }8 C9 Z, I# \3 ^0 S2 c6 L
/*  This motion callback emulates the rubberbanding circle seen when
; q) S' K0 C3 i4 E  _6 b3 @8 ^; E    using the interactive option Insert->Curve->Basic Curves...->Circle  */: _/ w! W+ W( @/ @) Y
0 v2 h, F9 @! ]& u. m- V
static void rubberband_circle_cb(double *screen_pos,
, t3 N3 q% U& H, ^: l    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data)9 Z5 \1 K$ G. Z) r
{% }8 E! O: Z3 d9 U  s- E
    double
( F. w! W" P* @& u2 b( ]        axes[9];! p6 Q% C/ G4 C
    UF_CURVE_arc_p_t
: t) |. w6 o9 }6 e        my_data = (UF_CURVE_arc_p_t) client_data;
% q1 }7 k. K1 K% y) S
0 Q  ]* W% Z5 O$ Z  d* ~$ `+ e    map_point_to_matrix(my_data->matrix_tag, screen_pos);
+ n- ~5 r# N, L6 F5 \* ?    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);0 M7 P2 i0 O# L: `7 ^

1 U. S. e% |# F! I' u# {/ u) _" H    if (my_data->radius > 0)
  j% b' g; Y! s4 s& J    {
. N3 e& C1 V- n        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));5 B: t9 g+ |4 l; D

1 {* V9 Z, g, y  Z( f* N% O$ M        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,: z4 A+ |# H/ T
            axes, my_data->arc_center, my_data->radius));
4 p& [% L2 W. u' q    }5 c" u6 q3 ?0 \( Z$ S
}
4 x8 ?' {( _9 D. e8 Z, o- k1 H  O, {/ O6 `# Y+ w& T( s) T
static logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)" i# k5 o8 ^( _
{
' C$ l$ G, i2 g3 o    int+ W, ^, @2 q4 |- N1 }. ?
        resp;
9 @4 n  X* G5 X    tag_t
8 r5 p7 I* I1 Q3 Y2 @        view;4 U; C$ C6 j  v9 q; G% Q( H
    char
  y3 B% p0 t5 b        msg[133];( O# }, A7 P( a: S
    double( L3 J& t2 D$ h$ ^4 z( \# g% z
        on_arc[3];4 M, l8 p6 z: ~& r
6 F+ x+ a3 |9 v: E' @2 N% i- L8 ^1 j
    sprintf(msg, "%s center", prompt);( T" v' C  s# C1 {$ O- `$ D
    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,2 V; h* i0 \( T3 P% ]. ]
        the_data->arc_center, &view, &resp));. I: g* G* p/ R3 p8 S+ g" W' G+ P0 M
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;
9 y( O6 v+ u# Y% k
( `( _1 T  U) |9 a( [# M    the_data->matrix_tag = ask_wcs_matrix_tag();0 k( U& K4 Y5 |4 S* S# P8 @2 S1 v
    map_arc_center_from_abs(the_data);2 {7 ]& X4 I0 h  r

9 x1 v: C; l8 |2 p) n. K& t% T! \+ z    sprintf(msg, "%s point on arc", prompt);. {% S! c2 O) d( u: X4 T
    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,  A6 X  r  W0 w# k
        (void *)the_data, on_arc, &view, &resp));/ f- E8 X; `1 j( X2 K
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;
# C. Z2 w0 y6 v9 k8 {  i
7 Q. B, h! e* |+ _7 e' L  c    map_point_to_matrix(the_data->matrix_tag, on_arc);
2 J, z% ~5 F! H
! n0 y/ v; L1 w' ]  x3 }$ e2 @7 A    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);
! A2 w% G3 }) o! j& l& {5 k* m, N7 J2 L# ~5 x* I9 I
    return TRUE;
& t- \) u; E* W}[/mw_shl_code]
8 i6 ^% L# u$ `! 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二次开发专题模块培训报名开始啦

    我知道了