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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
2 ]$ r8 Z. ]5 E

& Z% \' s" L$ U! h经常能用的到,通过选择面,显示临时法线方向和点!
4 Z& x  k; `1 {% X' Z: t! k9 T& k/ t6 l! ~

" X5 e; A, f( s$ D" a. Q0 H, z3 Z[mw_shl_code=cpp,true]  static bool DisplayNormal(Face theFace)
) T0 M6 \; a: @, r8 j    {5 ~$ K. c4 _. L. X  f) L: s: H2 w
        double[] param = new double[2];
3 L" X) ]* |* a7 D1 y% T( Z        double[] p1 = new double[3];' N( v1 A0 T* Q8 ]9 m" w
        double[] u1 = new double[3];
: W4 o9 w' y/ m! B! e        double[] v1 = new double[3];! f( I  s5 T+ `- k
        double[] u2 = new double[3];
9 J9 o8 _  w9 J6 E        double[] v2 = new double[3];
8 s+ B* i7 t, _        double[] unit_norm = new double[3];
; z& \3 t% F0 m        double[] radii = new double[2];
' O: e/ j; c# W6 X        double[] uv_min_max = new double[4];9 U1 H0 s9 m& n( M5 E+ |1 C) G
0 I) {- a3 e1 F& s& O
        theUFSession.Modl.AskFaceUvMinmax(theFace.Tag, uv_min_max);
5 A0 j  P* L8 R0 ]        param[0] = (uv_min_max[0]+uv_min_max[1]) / 2; 4 W; C) G' r: n8 c
        param[1] = (uv_min_max[2]+uv_min_max[3]) / 2; 2 V) P3 F" m, V- D8 h8 K
        theUFSession.Modl.AskFaceProps(theFace.Tag, param, p1, u1, v1, u2, v2, unit_norm, radii);
  v3 s; ~+ G+ ?2 X8 b) l# s
# N4 S+ n8 d3 J& J& R        DisplayTemporaryPoint(p1);
$ |, z. C: [8 n  }0 J: J& R        DisplayConehead(p1, unit_norm);
1 ]1 Y, u! ]5 Y( M) B5 ?( i' b( A. o0 u( |" ^' r1 j. x
        return true;
4 t& f# j& q# o. E    }6 q! f# n# u. E  w: q7 D
   
4 s) J' F2 ?& P    static void DisplayTemporaryPoint(Double[] loc)6 c( C9 p/ A2 n9 I% l" w+ u: s
    {- U- D! q0 h3 o( N' N6 R4 `/ [
        UFObj.DispProps color = new UFObj.DispProps();, l$ o5 ~  w, j# x' E, [4 {
        color.color = 6;5 T' Y, [# @6 K; }" g
        theUFSession.Disp.DisplayTemporaryPoint(Tag.Null, UFDisp.ViewType.UseWorkView, ) q  y& i3 s6 e6 V% u4 V6 k0 G5 I
            loc, ref color, UFDisp.PolyMarker.FilledCircle);
7 a+ d5 R% p  z% S  O    }& m0 v& b4 n9 O: s8 ?4 A. e+ y

! ?# |* l, Z* i& ^    static void DisplayConehead(Double[] loc, Double[] dir)
7 r- F2 h& z( _- q$ R# v    {! c, p1 P. L% J( U" c) ?
        theUFSession.Disp.Conehead(UFConstants.UF_DISP_WORK_VIEW_ONLY, loc, dir, 0);
3 x  w' }# U3 h    }( r& i4 K. v" ~( y0 I9 e9 O
[/mw_shl_code]: v0 _0 @! h" W# p
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82170
QQ
 楼主| 发表于 2019-2-8 13:26:19 | 显示全部楼层
如果使用ufun的函数基本如下:$ M' v$ |+ t( j2 l
//获取面的uv极值
" \8 d* }; G0 X4 \* T7 [# Y) Q( Oint UF_MODL_ask_face_uv_minmax
( Y4 _: X: R4 Y4 a(' M) b6 d- g' E% ~, X
: n4 `7 r& y, r% A
tag_t face_tag, 0 }* R+ i% L! e! t6 d- `
double uv_min_max [ 4 ] ' ?" D" T& g7 H6 L1 o
2 }5 |8 C2 J* ^% Q
)
% C' n5 D. s$ l% Q2 A5 Y
" |' a! s/ D+ f% M8 p) ^: o//获取位置点信息--double param [ 2 ] 的输入就是上一步的输出
5 x7 O  J8 v- R; _6 K# Q1 X. A$ T: O* e5 z9 @# a2 p' ]
int UF_MODL_ask_face_props
7 `5 E: y3 U5 C7 ]# q( {$ k
' z- Y3 j' \- W7 P1 M(
+ ^+ G4 X  w9 [7 I7 n# g! f- h3 \/ Otag_t face_id,
: o) H$ q: V; n/ e# v2 Q8 Jdouble param [ 2 ] , ; Y. z' W5 ^& G# z% h2 O% [
double point [ 3 ] , 3 v1 u* j1 A# T7 a
double u1 [ 3 ] ,
( J) R( W+ h- M3 x4 {double v1 [ 3 ] , * B. J1 K% e/ V( n7 B1 E! n
double u2 [ 3 ] , 3 k) {& w8 z% y) C9 Q% N4 i
double v2 [ 3 ] ,
; U% o' R- y( j( X7 [8 _8 ndouble unit_norm [ 3 ] , & L; C0 U3 n" o7 P2 I: ?
double radii [ 2 ]
5 s9 |. P/ |+ O0 z' g7 m$ \3 H1 N1 F3 D& i1 i3 t
): ]4 E9 Z. a3 Z6 G, w
4 g$ w" i4 v# G" ?; p+ I: P
//将点输入到显示临时的函数中
& U3 B* q, \) y. @( k
% ?1 i( v* ~8 _2 Q! @int UF_DISP_display_temporary_point& A0 T9 h' U+ E4 x8 ^" K

9 i5 k. m( h3 Q5 \(3 h9 v. P' u2 C$ o6 H1 B  Y$ c
tag_t view_tag, $ P$ Z" e$ x$ t8 m
UF_DISP_view_type_t which_views, 3 t- t0 o- o: M1 F( l$ q3 J: ]
double markerpos [ 3 ] , " t5 W  K$ F1 i# o) ?
UF_OBJ_disp_props_t * color,
$ g: s9 w  N% T5 h  f2 Z5 iUF_DISP_poly_marker_t marker_type
8 o6 ^0 W7 h2 X# p
$ c  z' A9 V/ R8 Y9 S% v# n2 y8 J)$ R5 |8 l9 N% U; l: B0 ?1 `1 l

7 @( b: @1 _+ P& \, M6 j/ w- W//显示; G( s0 u2 K4 b4 g$ t6 o
7 d. G7 j" M% j- a0 e- j; x( p' s& G
void UF_DISP_conehead% \6 S/ g2 U2 K% N, a1 V) w
(
. A5 B5 R  F/ \3 I- x; y/ a" a$ R% \& h+ t% J
int display_flag,
6 L3 I( v! g+ Vdouble coord [ 3 ] , 0 E3 F' B# I0 Z7 E2 d; n
double vector [ 3 ] ,
, S9 @. `0 I$ W& W5 k  ?: n% \9 Jint anchor_flag 5 N/ L) s) z  t% `5 ?

- g; G' e6 b/ @" `$ ^$ l" J( V)
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了