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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2019-2-8 12:58:52 | 显示全部楼层 |阅读模式

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

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

x

) X' F9 d4 N# F9 n: {4 b( V5 D2 W8 {' j4 l7 n5 w7 V; ~
经常能用的到,通过选择面,显示临时法线方向和点!+ }+ R+ @9 R# H. s  `
) F+ T' N5 q4 z/ q  I8 J
) [$ @9 {2 ~' ~  d, \# i# v
[mw_shl_code=cpp,true]  static bool DisplayNormal(Face theFace)
- j/ h0 Y5 x# [2 C# t, T    {% G$ ^$ W) A  j( k& _
        double[] param = new double[2];  N2 ?0 N6 [# K3 K
        double[] p1 = new double[3];) ]. s; Y& P" G* Z4 }$ q
        double[] u1 = new double[3];
7 _8 m0 H% K9 O( a/ U" B' n        double[] v1 = new double[3];, C! X! k9 G0 Z2 U. U
        double[] u2 = new double[3];
: o/ V! Q2 B1 `        double[] v2 = new double[3];8 {9 `( i1 c( t! j7 I- v
        double[] unit_norm = new double[3];
: a! K" m' ?) [        double[] radii = new double[2];. x# ~* b3 U/ Q$ `. m* z
        double[] uv_min_max = new double[4];. o- R7 ^- l9 z3 {4 P2 ]: A
- s1 J5 h5 b0 ]2 D
        theUFSession.Modl.AskFaceUvMinmax(theFace.Tag, uv_min_max);
& [3 A3 \5 q( `3 l        param[0] = (uv_min_max[0]+uv_min_max[1]) / 2;
$ n& q# U# I( u# v! I6 l& P) ?2 n        param[1] = (uv_min_max[2]+uv_min_max[3]) / 2; ( y- J2 S+ |" w4 T7 m5 G5 c6 S
        theUFSession.Modl.AskFaceProps(theFace.Tag, param, p1, u1, v1, u2, v2, unit_norm, radii);7 u' X3 k. r& x1 Y1 H

7 B. Y  B2 K+ \2 \        DisplayTemporaryPoint(p1);1 N+ {+ E' {/ {! ~" ?
        DisplayConehead(p1, unit_norm);; H# W1 \7 \: u- Z+ G

5 S5 m. r1 Q* u* g' Y# c        return true;
3 v5 f3 p2 a- j: i* `8 n, K    }* t& B; z: P- @9 u  @
    % A( _/ b7 q4 t5 D
    static void DisplayTemporaryPoint(Double[] loc)5 g! t* T* v5 X8 b9 c
    {! K8 z, o; p4 h; D
        UFObj.DispProps color = new UFObj.DispProps();) a% v( ~! C$ j! v0 M) V+ T
        color.color = 6;# t* D; Z4 ~  l  \$ _: l2 z/ n. [
        theUFSession.Disp.DisplayTemporaryPoint(Tag.Null, UFDisp.ViewType.UseWorkView,
$ ?7 R% j2 H, G9 U% W, _# Y- m            loc, ref color, UFDisp.PolyMarker.FilledCircle);. ^8 t7 k% ^8 Z! T; {' I  z# \
    }
5 L; g( J% S) |- f( p/ M* u
) J! d# G+ _! ^: m. N" t- F    static void DisplayConehead(Double[] loc, Double[] dir)
3 X; f$ ?' {6 c2 D7 S, q. J    {  A4 C5 u5 P1 T
        theUFSession.Disp.Conehead(UFConstants.UF_DISP_WORK_VIEW_ONLY, loc, dir, 0);, e+ |0 F! n+ g4 a6 o5 Z
    }$ v6 p  r0 J2 U$ c( e$ b. j
[/mw_shl_code]
& p/ l$ [& e5 K: z' G8 b1 j. A
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
 楼主| 发表于 2019-2-8 13:26:19 | 显示全部楼层
如果使用ufun的函数基本如下:4 ^8 n7 o2 C+ c$ @
//获取面的uv极值" U8 O& \7 N' `( j5 c/ K% B  A. }
int UF_MODL_ask_face_uv_minmax
$ T1 [9 L! U8 C) \# A# H6 p. C) R1 G(. y- P, [8 X/ t9 T8 w4 l

7 l: @: b# B- G. F& ]9 n0 vtag_t face_tag, . s3 k" @- u; p. @4 u% T5 V& r
double uv_min_max [ 4 ] 5 q- {, N# h4 o9 y: E. D5 N

; v9 x' f: Q7 l, U* v. Y2 k); I5 v6 B4 Q- R2 n  Q, l

- ~# A3 u  M, j4 g: r//获取位置点信息--double param [ 2 ] 的输入就是上一步的输出9 N; N3 J; N1 c

* l  ?" G# X+ Yint UF_MODL_ask_face_props9 D# ^6 Z* S1 x% h& ]
7 S$ X- i6 H) i' _' \7 e$ u
(
+ p8 o5 I+ s+ {: q4 ptag_t face_id, 7 ^: ]1 _( g  e. v
double param [ 2 ] , 2 V7 o- c) J7 Y7 p" ]  A
double point [ 3 ] ,
: k2 Q+ I( Z: w6 U8 P+ z7 G! q0 Vdouble u1 [ 3 ] ,
* s" O* ~/ G' n7 y/ p' Fdouble v1 [ 3 ] ,
1 P# \7 [! y4 O2 k$ Y% x! H) ^" Xdouble u2 [ 3 ] , - j1 Z) P# v9 l+ i/ ?) t  r% w
double v2 [ 3 ] , * H7 Z/ t1 \2 ]
double unit_norm [ 3 ] ,
* P. Q! U; R1 f" Pdouble radii [ 2 ]
/ V2 l( N: C. u5 R0 Q4 U5 o% F: T, V9 Q& S1 ]! m
)# P$ f* E' T1 k) h$ H

& w! D* A; E9 O" E: X! s* R//将点输入到显示临时的函数中8 p% E: A3 Q# z  @& v8 Y

$ T# `7 a6 h& w7 J( t$ C4 ^# U( Wint UF_DISP_display_temporary_point
1 `" ~" Y& s+ T/ V$ X" {( o9 W0 }' z8 A$ f  n9 f% ?  A% g
(& d- U4 M6 T( ]! v; h% _
tag_t view_tag,
6 k- }$ r( d  @3 fUF_DISP_view_type_t which_views,
3 f8 G( T) Y3 L0 i+ H5 @double markerpos [ 3 ] , ; \5 V  e+ @7 {
UF_OBJ_disp_props_t * color,
$ O) D$ k. F8 ]" `. o5 j+ fUF_DISP_poly_marker_t marker_type 4 l: L- ~$ A# K5 p7 [3 ^

3 `+ E  ~- e& `)
+ v- R) ~6 U% J$ F) q
( u  n: v! L' D) ]. i  ^//显示* _' G5 t7 W2 L: ~; f5 J

( Q) j7 t# g2 s, r! `) N3 ovoid UF_DISP_conehead. {7 g4 T& D& z6 g% @$ u3 r' o; U
(
5 V' e  h$ s& _& Y, [% H5 Y. W' w% k. r0 O2 o. l( x$ @
int display_flag,
0 W' W" e: E+ zdouble coord [ 3 ] ,
6 b! V  z0 Y0 P( t/ tdouble vector [ 3 ] ,
# R3 g, f$ @1 C! ]. tint anchor_flag
6 }. o! |  Q' u" R& I9 P5 s! L2 x6 `3 x# N/ H- P$ \
)
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了