PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2019-2-8 12:58:52

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

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

x

. X; e+ `; S( J1 b1 ?% d, m
  a2 M9 @# v0 Z经常能用的到,通过选择面,显示临时法线方向和点!/ h2 }5 o0 l! ]: j( e- d

: a& e) m: X* @  g. `& Z+ x
* _1 }9 d0 g8 [$ Q9 S! h[mw_shl_code=cpp,true]  static bool DisplayNormal(Face theFace)
( @; p8 L' h- z    {
' j5 s* S5 |( p. A8 K6 B1 W' Z! y        double[] param = new double[2];
5 W% e% k- v" B, A( P: x% \' e        double[] p1 = new double[3];
1 h& t1 j. N7 r+ \( \- i8 ?        double[] u1 = new double[3];
. G  h  F/ B' r        double[] v1 = new double[3];
. W5 f1 T9 L  ]  |& v! U" r        double[] u2 = new double[3];
: S* w$ T3 j7 O/ F: p, y        double[] v2 = new double[3];; `+ V$ Y/ O1 J
        double[] unit_norm = new double[3];
: D, \+ {7 m7 ^0 c( i  c        double[] radii = new double[2];
4 }* c! m$ K0 ^; y. n+ a        double[] uv_min_max = new double[4];
  I6 x3 b6 R) f3 d1 ]. l) F4 X
% |) n0 {0 f; F- b) M6 p, z) ^        theUFSession.Modl.AskFaceUvMinmax(theFace.Tag, uv_min_max);
3 f& z/ D0 v# S$ p) n        param[0] = (uv_min_max[0]+uv_min_max[1]) / 2; ! R, o6 q7 g6 Q1 t( y+ q+ D
        param[1] = (uv_min_max[2]+uv_min_max[3]) / 2;
' M! R; O# z5 q5 D( V; z        theUFSession.Modl.AskFaceProps(theFace.Tag, param, p1, u1, v1, u2, v2, unit_norm, radii);
3 N; o' T; \: I5 ^; h" f
+ {3 W( Q) H& x7 j6 S        DisplayTemporaryPoint(p1);; U3 s7 @$ R2 P% Q( i+ S3 ^
        DisplayConehead(p1, unit_norm);$ w0 E! t! I8 Z6 @" d2 }# k

( v) G4 t, K! _5 }& [) J5 G        return true;
+ T3 \# B1 T8 C' _    }0 l  J% H9 O* x! o# |
   
3 w- a+ t: F1 j7 @2 l7 L    static void DisplayTemporaryPoint(Double[] loc)0 m; E+ f' B4 l8 ~( g; Y
    {; t$ {7 c$ A8 ]8 o& V
        UFObj.DispProps color = new UFObj.DispProps();
; u" S, f. }; b$ G$ Z" n3 Z- v        color.color = 6;% X: t& Y1 o; k" P" q# t  y
        theUFSession.Disp.DisplayTemporaryPoint(Tag.Null, UFDisp.ViewType.UseWorkView,
. u' h$ h6 W- U            loc, ref color, UFDisp.PolyMarker.FilledCircle);
4 E% t6 v" z+ o- h0 v    }
! g2 z( E4 F9 p1 {2 G. E: ^- C6 Q& J
    static void DisplayConehead(Double[] loc, Double[] dir)- u# H7 I. N( Z5 g3 @6 r7 Y3 x: \
    {
; {$ w8 |+ Q: d9 S1 h& t; H8 X" y0 e        theUFSession.Disp.Conehead(UFConstants.UF_DISP_WORK_VIEW_ONLY, loc, dir, 0);, p3 G6 _' B' Y7 H4 s
    }
' L8 M7 Q/ I2 k- p1 D1 z[/mw_shl_code]' l( e- d6 t+ b/ n. X
上海点团信息科技有限公司,承接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的函数基本如下:
* S4 C4 H+ J; F( n4 d) J4 d+ ~//获取面的uv极值+ o7 S2 F! F: j; i
int UF_MODL_ask_face_uv_minmax5 l$ ^; L* I2 M" j! I2 k( \2 c
(7 D2 |% \* M5 f, u! h4 H

% h/ _3 F0 P6 ]/ U3 ttag_t face_tag,
6 j4 s& o* m/ p" P0 ?double uv_min_max [ 4 ] . d& x% V9 Y% w  O
0 Y; W8 n; K0 L. P: X
)
1 f' ?& F) h2 L4 \2 P( E( Q7 a  g7 v2 a/ D3 ?, F  V3 t+ N
//获取位置点信息--double param [ 2 ] 的输入就是上一步的输出  E' ?, A. p0 d* M4 i0 W$ D

) W* N2 ?3 F0 |- _int UF_MODL_ask_face_props
1 f5 Y0 O) E$ k& d9 p
( p+ a) r, \: r( g7 r5 L(6 b& U  E- s+ v! H6 I/ v' d
tag_t face_id, : G* o) l- {4 ?& m% D
double param [ 2 ] ,
" S  H7 j+ E, Y- U, pdouble point [ 3 ] ,
7 z0 d. B5 |7 P) W) z- R: Mdouble u1 [ 3 ] ,
7 Z+ e  y( j" g; `. |! o- Zdouble v1 [ 3 ] ,
" m' Z, K4 A# Edouble u2 [ 3 ] ,
% N; z; i/ q  X7 @7 v4 Odouble v2 [ 3 ] ,
4 v1 A- ~. X/ l/ o/ Tdouble unit_norm [ 3 ] , * F$ _0 I* n! C
double radii [ 2 ] 0 h8 L2 Q' S; G

5 ~: K" P7 S, U4 {2 K& p5 q! Y( R)
* U  K# w3 g" P4 r; y) n2 Q9 u4 V! l  A! S
//将点输入到显示临时的函数中
8 d) l. L. H. k# N. r% A' V/ W1 q* y. z% c
int UF_DISP_display_temporary_point2 ^* \4 `$ ]4 \- B# A
! t; \1 O3 L( K$ M
(
% f" Y" u/ e7 u8 Xtag_t view_tag,
6 p/ t  |: p" P& U9 LUF_DISP_view_type_t which_views,
, C8 E& T5 t; u! r4 c3 ~5 odouble markerpos [ 3 ] ,
" K0 ^! k, H1 h& @. f' W! aUF_OBJ_disp_props_t * color, 5 c& T6 v! R& R4 j9 e; R, J6 @
UF_DISP_poly_marker_t marker_type 4 `! L1 i6 p6 N6 `/ |0 G. `& C
8 C. ]3 ~7 a0 @' h' k
)
! j2 ?/ F* k" w. w$ V3 H; Y5 h& \: e' }, w4 J
//显示
& {/ x: Q8 X, O+ Q! D6 j: J7 d  k0 f: d- J7 b$ a  S3 b) A+ g9 D
void UF_DISP_conehead
; Z" ^2 }: J' ]6 G(
6 p# b  E3 Y/ R5 K; }" [7 I# q7 |+ V" u, U, r/ p% _0 m' ~
int display_flag, 5 \" }4 P5 b8 H. Y2 @* V
double coord [ 3 ] ,
/ ^3 H- }/ g  i! P6 }0 M6 B3 idouble vector [ 3 ] ,
4 w; [7 b$ `: K- b( I6 D0 d4 Aint anchor_flag - k6 L- ]" P. s5 S9 b
! C. K, f( P4 g9 P* C! p& |& B) D" ~
)
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了