PLM之家PLMHome-工业软件践行者

[二次开发源码] NX二次开发源码分享:显示面的法相方向

[复制链接]

2019-2-8 13:26:19 3022 1

admin 发表于 2019-2-8 12:58:52 |阅读模式

admin 楼主

2019-2-8 12:58:52

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

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

x

7 Y1 c( Q. P, g% y7 Q  u0 U. D% n
3 m) T0 x1 \* n经常能用的到,通过选择面,显示临时法线方向和点!
3 n8 `5 T4 P. v  n8 a4 m8 P) t
9 x9 p. u# l& `" h6 ~/ V( Q% F- ?8 d: ]% D1 f
[mw_shl_code=cpp,true]  static bool DisplayNormal(Face theFace)
6 h; G; r: S5 X: o    {# s. |4 P1 p  N8 |2 _9 _
        double[] param = new double[2];
3 {! a% K1 E  m0 r% D' O0 N1 a        double[] p1 = new double[3];
( V$ p1 b) R1 f9 c3 D        double[] u1 = new double[3];
, A- X5 K( d* w0 {# _5 E        double[] v1 = new double[3];* @, H; d0 X6 J: |2 C! V5 c( Y
        double[] u2 = new double[3];
4 N6 T' j; }3 K- T) F0 E+ `        double[] v2 = new double[3];
5 S" A% G: m/ {, g0 h4 \) B9 f        double[] unit_norm = new double[3];
  I! X, s) ^. J$ G- u2 A1 A        double[] radii = new double[2];
: w$ p7 z3 `/ Z. |# O; U        double[] uv_min_max = new double[4];
9 }- m* R4 I' s
+ v1 H% s+ i8 r' n) f6 P        theUFSession.Modl.AskFaceUvMinmax(theFace.Tag, uv_min_max);, m+ q5 M; v$ K. I% t. |5 S
        param[0] = (uv_min_max[0]+uv_min_max[1]) / 2; : S: Z3 }& ~+ \
        param[1] = (uv_min_max[2]+uv_min_max[3]) / 2; # z" x6 m# t/ E4 C9 v: {
        theUFSession.Modl.AskFaceProps(theFace.Tag, param, p1, u1, v1, u2, v2, unit_norm, radii);
1 d" {% M3 w  f; I3 V/ T& c6 l: s- G: O; t! J) |
        DisplayTemporaryPoint(p1);
$ S7 y3 k9 o, Y: I$ r        DisplayConehead(p1, unit_norm);
5 r9 q: t, N8 n0 |7 s# D; v  l+ j( V/ B. v- W3 ]5 ]0 s
        return true;
; h; [' }* o2 ^. l" ?+ E3 r    }
  n3 w2 b) o( x( h      Y2 k; m! c. F$ P3 c. o& M
    static void DisplayTemporaryPoint(Double[] loc)
2 f7 X' T8 h  }" a    {
. f3 Z3 h+ \) k: v) V; k        UFObj.DispProps color = new UFObj.DispProps();
* ~) Z% M5 _6 w5 \. p( V! X' G" c        color.color = 6;+ i- V  a( e# P. [$ U5 ?( v+ E9 s2 c
        theUFSession.Disp.DisplayTemporaryPoint(Tag.Null, UFDisp.ViewType.UseWorkView,
4 W! z  e, C+ B& p) ?& C; P5 r" T            loc, ref color, UFDisp.PolyMarker.FilledCircle);* @. K/ H/ z9 o4 S
    }
# K# G% l* }2 o( m$ X
0 x* h+ j8 i0 H; c    static void DisplayConehead(Double[] loc, Double[] dir)' q" M& F. V; G: b( L# r) z- I
    {
) X0 m- q+ t" [; \7 a3 o        theUFSession.Disp.Conehead(UFConstants.UF_DISP_WORK_VIEW_ONLY, loc, dir, 0);
, I% ~* y/ p5 x7 D2 c7 G    }3 f- g: t& P& Q- o! f/ k& |
[/mw_shl_code]
9 G6 W5 l" o& p  g
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

admin 发表于 2019-2-8 13:26:19

admin 沙发

2019-2-8 13:26:19

如果使用ufun的函数基本如下:! g( E1 @* R9 X0 H. }4 H' Q* m# T
//获取面的uv极值' p7 d+ i1 Z$ d4 T0 i* a
int UF_MODL_ask_face_uv_minmax- ]' N: J! m7 J: L3 c
(
# T- W! `" N- l5 b; w; @/ W: ?# S" r
tag_t face_tag,
( r6 c( x* d$ e. a* {7 t& Udouble uv_min_max [ 4 ]
% j* h& m9 z& D% ?2 E5 r& {0 s3 y$ u
)
2 ^5 _. w) }8 X- Q' H( Y5 W5 ]. y& ~+ [3 a. |7 F' ?' m
//获取位置点信息--double param [ 2 ] 的输入就是上一步的输出
( r; _' ?+ `. W) g- G0 m; n4 O: F6 d7 c
int UF_MODL_ask_face_props! X  w7 J, f' b0 S

2 N% \, Z" [! H+ l(# R& u" P( o& v% ^2 F/ y
tag_t face_id,
0 Z% D1 _1 d. r0 s" \double param [ 2 ] , # f! S) L% ]3 l
double point [ 3 ] , / Z$ H& \7 p  g* B
double u1 [ 3 ] ,
& N& [8 D! w- @, cdouble v1 [ 3 ] , 7 s1 J9 x. k: M+ n8 x) ?1 q
double u2 [ 3 ] ,
' o# _2 @1 @2 A3 J7 t4 r" pdouble v2 [ 3 ] , ; Y8 N5 t, H2 M& E" B, B; _
double unit_norm [ 3 ] ,
: m! O/ z  ^9 t) P9 K6 y) R! `& k2 J* wdouble radii [ 2 ] 4 m" h2 \6 Z& m
9 S( a' y- z, `/ A' X, u1 e
)# E; ?5 y* Z5 \% Z+ G
+ w: ]" s* s) ^  b
//将点输入到显示临时的函数中
: a  T8 y* P2 L* W) P& a2 l* y0 x/ E: f
int UF_DISP_display_temporary_point
: ]- [" h2 h9 J1 w+ g4 H- z0 V/ \7 l# f. i6 P' g; J
(
2 ~' D: G  @4 b# k- J2 Q) Gtag_t view_tag, # z: \3 x* J% R+ y% ^
UF_DISP_view_type_t which_views,
. J0 h, ]: l6 F: Q& R. [$ Vdouble markerpos [ 3 ] ,
# ~3 S$ o5 o' u. d3 K/ ]9 QUF_OBJ_disp_props_t * color, , e4 g+ z+ H8 p& s3 A
UF_DISP_poly_marker_t marker_type
1 T0 W& q+ A6 \. E
4 P  W$ W( [7 k; _: Y)- u* Q; y. J$ f  T- U9 h3 Q1 }

8 ]; c2 a. B  t& w6 _% y' Y//显示
  x2 y$ X5 ^6 g% b0 h' X0 H: X0 h# `" Z2 d9 z" i) @+ n, c
void UF_DISP_conehead' L% m7 S9 `, d) c; ?
() Z+ ~0 D$ ^! p' m% l) p* z+ U
# n: G/ M1 S( K1 n0 m
int display_flag, ; [' M2 _3 N& C
double coord [ 3 ] , 1 P+ _* |% C% A! F0 C6 c; F
double vector [ 3 ] , # Q2 M/ z, {. L5 ~( t+ Z
int anchor_flag : T' T0 |1 `' J( d& r
0 V, v1 b) b. s- m$ }( z, C' H
)
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了