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

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

admin 楼主

2018-7-12 11:09:03

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

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

x
" I  Q3 b! A- w& h0 i

: g% B, f/ l. s% t; P5 QNX二次开发源码分享】Specify Circle 指定一个圆选择屏幕点
6 i! e: t, F# F8 ~. t4 x  K
# m9 v) y& v9 _) D. Z4 M" j[mw_shl_code=c,true]static void map_arc_center_from_abs(UF_CURVE_arc_t *adata): e; d5 S! I! L+ m) a; _
{# j2 F% ~" v7 ^9 H( n
    int
! W! ^2 @) h) _7 u" I, S/ W6 v: o        irc;% N% T7 z. }' p! K
    double% A* W7 S4 J) U5 O( e. S
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },  \* h! r! O, E# A) I
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},8 {. F6 B# u3 h0 l/ h* }3 }
        mx[12];$ x. d$ g0 h1 H$ G0 H+ \' {
! N3 s+ `! j  U) \( A
    UF_CALL(UF_CSYS_ask_matrix_values(adata->matrix_tag, &csys[3]));
  Q+ p. P8 ^  r' o( j- q% u    FTN(uf5940)(abs_mx, csys, mx, &irc);
; T3 {( y; {4 @1 e/ v$ V    FTN(uf5941)(adata->arc_center, mx);& t$ Z0 u$ D: ~, }  m& {$ |
}
" D$ z5 E- C: j" ~, D6 Z  e5 }$ o9 F/ g7 _
static void map_point_to_matrix(tag_t matrix, double *pos)' @. m# e! N3 J6 @5 x/ A* u/ e
{
* y. a3 V: |, x# I. R    int0 }7 s0 q. k+ Q9 _  o; y
        irc;
) ^1 V% ^: f4 z6 ^* z    double2 S/ T9 _# _# b9 z# A) p
        abs_mx[9] = { 0,0,0, 1,0,0, 0,1,0 },9 b  T% v" C( q8 C
        csys[12] = { 0,0,0,0,0,0,0,0,0,0,0,0},
; H; s6 f. M; N! K2 S( P! n1 f        mx[12];9 a& R7 ^$ a6 }; x1 v, k/ v

) c1 g9 Q0 ^0 k- B    UF_CALL(UF_CSYS_ask_matrix_values(matrix, &csys[3]));. c! N: k; h2 Q9 S  \
    FTN(uf5940)(abs_mx, csys, mx, &irc);
8 r( Y, W, Z* j- t; K" e5 p    FTN(uf5941)(pos, mx);
* j1 Q, M2 Q: H2 U; Z! J}6 ?2 M* ]6 K6 K# X2 e% U0 Y

# O' a# E( d' O1 n% m% [4 T/*  This motion callback emulates the rubberbanding circle seen when0 d7 U5 W. `4 p4 m) g3 c8 \
    using the interactive option Insert->Curve->Basic Curves...->Circle  *// s- j$ _+ @, N( G2 h
# [' m  @! N2 d1 T$ g3 T& Z" Q
static void rubberband_circle_cb(double *screen_pos,
! ~( S% Z& W% z: l  f% b  r3 X& i! a    UF_UI_motion_cb_data_p_t motion_cb_data, void *client_data)6 Z5 \+ t$ O6 n2 N9 ?5 z1 ]
{
- ~/ U, V) v% A' {" v4 z    double
) P, k6 K! E2 q2 _        axes[9];8 p% Y6 i3 T4 h" t2 V% R  T! x
    UF_CURVE_arc_p_t
0 v0 u: h7 q0 B! g8 j. r        my_data = (UF_CURVE_arc_p_t) client_data;8 X' o1 ^5 g* Q& M2 k" V) q3 y

6 d# t( g8 e: D( E    map_point_to_matrix(my_data->matrix_tag, screen_pos);
. F+ a4 _. @* p! o; E0 j    UF_VEC3_distance(my_data->arc_center, screen_pos, &my_data->radius);
4 N. E0 d) u7 {; l8 p( d! M, d' h. s& Z' o0 e  _
    if (my_data->radius > 0)% p4 g) |6 h5 p" }0 \8 F
    {' r; X5 C6 l! w/ A5 z
        UF_CALL(UF_CSYS_ask_matrix_values(my_data->matrix_tag, axes));$ t: f" ?- A0 ]7 q: \  V

4 e4 D/ G: k1 `, ~7 @3 y- d        UF_CALL(UF_DISP_display_ogp_circle(motion_cb_data->view_tag,! r" ?' j. s( f7 Q
            axes, my_data->arc_center, my_data->radius));
0 X6 j' O; S* V    }
2 [( e: A0 B  h: B8 K}* i8 D$ q, t4 g3 c4 x

" |) C! b& r9 S, |* c0 |7 k  r- xstatic logical specify_circle(char *prompt, UF_CURVE_arc_p_t the_data)
3 M2 C1 ~& l' H' F" I/ R# d: I{
" |2 s4 g6 U, V) e" J- z% @    int- [5 L+ `4 k( a/ ~
        resp;
& z5 P* w( h* x9 W0 C    tag_t
$ G. j/ X/ N8 l& R- {9 u" E, L) w) E        view;" G3 w, K  L$ @* T* f8 h. {! U
    char6 K6 m- b; F/ V6 Z2 L9 ^
        msg[133];1 `- D3 p- J. ?% x3 d. j
    double
6 j) b" G9 B' o. ^( a8 ]        on_arc[3];4 x$ N% O3 x" X
: L+ b! x( R/ u8 a7 [
    sprintf(msg, "%s center", prompt);) D1 \: ~1 S) m, @, _% }
    UF_CALL(UF_UI_specify_screen_position(msg, NULL, NULL,
8 A( [5 R& Y5 S2 n# I        the_data->arc_center, &view, &resp));. \' {3 }2 _: Z5 j$ h& T8 H4 c1 M
    if (resp != UF_UI_PICK_RESPONSE) return FALSE;
; L7 P- L  G; X; J% P" Q) R. [8 A1 ~/ m# f  F
    the_data->matrix_tag = ask_wcs_matrix_tag();4 F/ }  @" o" b* o
    map_arc_center_from_abs(the_data);
/ i0 Z! q9 e% g8 S8 m( a- n. G8 H" ?0 [/ v, y( \
    sprintf(msg, "%s point on arc", prompt);
" B. u3 a  h' z% I2 g$ F/ g2 X/ A    UF_CALL(UF_UI_specify_screen_position(msg, rubberband_circle_cb,
9 z% J5 g6 O/ F' U6 C        (void *)the_data, on_arc, &view, &resp));
* D6 Z* B& n$ p: k- N+ {  q    if (resp != UF_UI_PICK_RESPONSE) return FALSE;/ R0 A9 g3 y9 \

/ Z& a; m  e2 ^: D    map_point_to_matrix(the_data->matrix_tag, on_arc);7 g# R: M! W; i* |7 q' X1 T6 E7 @
! J0 u7 r6 ]& [4 W9 b: o4 j" p
    UF_VEC3_distance(the_data->arc_center, on_arc, &the_data->radius);3 D5 Z& e8 J9 _- H
$ e& E- M  @, s- |$ g
    return TRUE;1 w. w8 R) m, l& _1 R& q; A2 b4 Z
}[/mw_shl_code]
3 r3 @, D% g2 _. Q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了