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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
  i  N, E  T9 i/ z0 O

7 N. w3 M8 q! {* q经常能用的到,通过选择面,显示临时法线方向和点!1 ~8 N7 p4 r8 ?$ f. g

  d6 O% {; b) Z( i& y+ E  R* z% c* t/ f$ {: a
[mw_shl_code=cpp,true]  static bool DisplayNormal(Face theFace)$ k0 o& c8 r& f5 t" u
    {7 }  p, M( U: ^5 u7 m& C1 @$ e& M
        double[] param = new double[2];' h6 a8 s1 B9 ~/ q, r
        double[] p1 = new double[3];; ~+ {  \7 \8 ]+ t+ ]( h8 Q% L
        double[] u1 = new double[3];
/ s& @9 l0 i6 a        double[] v1 = new double[3];
- e. j3 _& T1 ?* M. O' [* Y        double[] u2 = new double[3];
# m* z( Y- I% _. ^' l1 N% n) `        double[] v2 = new double[3];, X0 Z) @% ?6 g1 _4 E; x
        double[] unit_norm = new double[3];
3 L8 _5 J6 r/ u3 x5 V  @        double[] radii = new double[2];
6 p3 w7 d8 |# e: g# P' T        double[] uv_min_max = new double[4];
4 O4 I: v! g% V7 y% B/ J: u6 O6 o
        theUFSession.Modl.AskFaceUvMinmax(theFace.Tag, uv_min_max);+ d% j& M8 X! b; A! \* n  i& [4 D
        param[0] = (uv_min_max[0]+uv_min_max[1]) / 2;
7 s  R- N% `) @+ _        param[1] = (uv_min_max[2]+uv_min_max[3]) / 2;
) z. x; |8 @8 |0 t1 y# H( E        theUFSession.Modl.AskFaceProps(theFace.Tag, param, p1, u1, v1, u2, v2, unit_norm, radii);
3 f  M: N9 G- T: U' D  Y3 r6 U) |% q" r
        DisplayTemporaryPoint(p1);7 Y" R9 h) G0 |0 S" |# B% k+ D6 Q
        DisplayConehead(p1, unit_norm);: l: R' I3 a5 ~8 {! @1 A

8 C- x7 f0 v( N8 @) i        return true;
  ]5 C0 z2 k- K" v3 b    }( G2 H- `; j6 ]" J4 V- z5 n! `
   
. N  P- [0 `, d3 e2 Z; w% ~" e" v  D4 d    static void DisplayTemporaryPoint(Double[] loc)
8 Y# _# ~: {; M2 I( Y# x7 p  I8 w    {
0 [) k9 ]$ x( Q" S6 O8 ^        UFObj.DispProps color = new UFObj.DispProps();
2 X5 G$ d( l) G- d0 j3 H/ F        color.color = 6;
9 n  w' z' N2 R( }4 H/ _        theUFSession.Disp.DisplayTemporaryPoint(Tag.Null, UFDisp.ViewType.UseWorkView,
5 e5 V+ E9 {7 }8 l0 H8 y            loc, ref color, UFDisp.PolyMarker.FilledCircle);! g! D7 L! {/ H* ~6 g
    }' W- u5 ^4 X! t% g+ t+ Y7 y

! {! d" ]5 D, t0 C( M0 d8 b    static void DisplayConehead(Double[] loc, Double[] dir)5 ^9 M$ r0 t$ p& x4 _( Q" n  a/ a
    {% |* Z7 D( U/ G% W% J  I6 U
        theUFSession.Disp.Conehead(UFConstants.UF_DISP_WORK_VIEW_ONLY, loc, dir, 0);
( d: B7 r) T- l    }
+ g3 Z5 e" |" U. V0 C" b[/mw_shl_code]
5 d$ j" g/ l& ?5 |# D9 Y4 k- E8 W2 s
上海点团信息科技有限公司,承接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的函数基本如下:
4 v/ H; k( g( G! Z" S) s//获取面的uv极值
; R- y1 i* ?& w) I; Y. R  nint UF_MODL_ask_face_uv_minmax0 F, v$ P/ E/ y6 W1 r: q, {
(, _5 k0 b3 M" h* w. L! y

9 L9 y4 G5 B. W+ P8 ]4 r8 D, |tag_t face_tag, - G, m" f9 ^2 D* W  A
double uv_min_max [ 4 ] ) x5 |3 d% \$ c8 n
1 s5 e: _) j# K
)
4 R2 W  f2 r% K" Q8 O# \' e5 v7 [$ [. [$ {. m. }
//获取位置点信息--double param [ 2 ] 的输入就是上一步的输出  l! H5 h* `9 ]% H% {6 _
1 B6 g' Z' j2 }: x
int UF_MODL_ask_face_props# U. U7 c2 l/ L
; O: p7 r7 \0 X
(
/ C/ N2 x! y+ v* I4 d: Gtag_t face_id,
% ~2 D: E" j4 n" q1 \6 W0 ^/ xdouble param [ 2 ] , : v, c: e7 `, X) n' n
double point [ 3 ] , - p% ?" C' ^; w' O7 B3 @
double u1 [ 3 ] ,
( W0 d7 o) y7 @$ j9 M: z3 u+ pdouble v1 [ 3 ] ,
  a6 }. X* Z) }: @0 Idouble u2 [ 3 ] , 3 q6 i* j: \6 y2 j% \
double v2 [ 3 ] ,
( a& ]7 t  z  |/ Qdouble unit_norm [ 3 ] , 6 H2 q3 {7 K& k$ w! }& x! R
double radii [ 2 ] 6 h( n9 m& Z6 K+ N8 z* L4 G+ B

4 `+ ?( K$ A* E! j' E)9 S, h( h2 I, }- m5 j
' s) z) [$ B3 Q2 v
//将点输入到显示临时的函数中. z9 U: i3 m  z3 d, |) F5 V, j
; ?4 Q' Y" X& a  |
int UF_DISP_display_temporary_point8 D% v2 s; b) ^7 w1 T$ ]

" B1 E" H- f: ](
9 ^# }% q/ _' |+ b) V3 Utag_t view_tag, * u. J) {+ k# h" P& ?6 R) V
UF_DISP_view_type_t which_views,
; `2 u( z, s7 N. Q+ e1 C% M* pdouble markerpos [ 3 ] , 2 m0 J- {: S& S
UF_OBJ_disp_props_t * color, 4 F/ d( w4 F% G2 j) ?' _
UF_DISP_poly_marker_t marker_type
* \) M0 f, t  ^2 J: X/ i
/ s, [7 {1 L1 q$ p)
5 w2 r' S* z1 I& H: K) s; S) j& z/ w+ A/ `% b2 [( f
//显示
9 y) ]  P; A8 k& l- l2 A) F1 g- x2 M2 a  b0 x, b. `6 B* s
void UF_DISP_conehead
9 Z0 I! m7 ~; h6 }% V(% I6 H6 W/ f. h  z& p! ~3 F
3 z) o: D% e! }) `$ |- Y/ s: I! Y
int display_flag, 7 i  F6 v9 @. B/ |) o
double coord [ 3 ] , 3 R* a, `; z7 P1 Y/ L# G
double vector [ 3 ] ,
" N8 x5 [- {/ O* o- bint anchor_flag
3 k/ W# ~  ^% h5 M* g* z+ E6 y8 O
)
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了