PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2019-2-8 12:58:52

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

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

x
9 s, J3 ?( u5 S2 v' X

( M9 O9 E; `; _% L; H* _9 |) q4 Z经常能用的到,通过选择面,显示临时法线方向和点!/ `5 `+ b0 S; D$ Y* O2 P
( h4 S/ z& q/ v/ R7 N( s
- {) a( g0 U9 ^: J9 z" q+ ]. F
[mw_shl_code=cpp,true]  static bool DisplayNormal(Face theFace)
# f% @+ R) N  a" M    {
8 C- t+ Y- D" B5 _0 P        double[] param = new double[2];
* z8 O0 Y: `& X) q) \        double[] p1 = new double[3];. K$ X5 j; ]8 e2 j3 T; e
        double[] u1 = new double[3];
- G1 [' |# ~* x. N+ I        double[] v1 = new double[3];8 ~) ]8 X: n7 x! M/ i9 c
        double[] u2 = new double[3];
* Y& y5 n" ?8 h0 Z: X6 u        double[] v2 = new double[3];
: x% v0 M3 t* P9 g( [        double[] unit_norm = new double[3];
: @0 H$ E! A; V% u' K; f9 j6 _7 f- H, j        double[] radii = new double[2];! d2 x/ A$ p/ \3 d* g# d/ k
        double[] uv_min_max = new double[4];
& `, P, I: O! G! H' R/ v
2 r. ^3 f* g! q" J; z5 Z        theUFSession.Modl.AskFaceUvMinmax(theFace.Tag, uv_min_max);
$ x' U) I: _, p  K% m        param[0] = (uv_min_max[0]+uv_min_max[1]) / 2; - C3 e+ k  a4 c
        param[1] = (uv_min_max[2]+uv_min_max[3]) / 2;
- N( z. K/ r) d* ]1 x3 [6 r8 r4 N3 S  E        theUFSession.Modl.AskFaceProps(theFace.Tag, param, p1, u1, v1, u2, v2, unit_norm, radii);8 o# h- n1 [3 q7 k2 Z) W& F% w- j
1 \1 H$ F" }* m: U& {! N
        DisplayTemporaryPoint(p1);
9 U, q; h% W/ @/ Z; ?/ x7 P, |; Y2 m/ s        DisplayConehead(p1, unit_norm);
- c9 c/ S/ f1 T
0 Q) q& i5 I2 }: L# y        return true;9 R% W1 @. n6 y' F# N
    }
& I5 d, r" @5 a3 A3 g+ P/ G/ C( g    + n* W/ X5 q- J2 ^7 q
    static void DisplayTemporaryPoint(Double[] loc)3 \& E- R* R' y* ]( l
    {
" R5 X$ m5 v! N" v* ^) i        UFObj.DispProps color = new UFObj.DispProps();3 x8 N& X4 \' c0 y4 r: r2 A
        color.color = 6;! W& `4 j7 ~& r0 D% _) }
        theUFSession.Disp.DisplayTemporaryPoint(Tag.Null, UFDisp.ViewType.UseWorkView, ; C. R- Z& }  _! j1 Q; E
            loc, ref color, UFDisp.PolyMarker.FilledCircle);9 i( O/ z2 V3 |+ \
    }
1 j) ]7 k& a2 J+ L( |5 {7 @* J- e& w/ l! W
    static void DisplayConehead(Double[] loc, Double[] dir)' c8 I" S0 a8 e. C+ P" |
    {
4 T2 p4 V% D) p9 m        theUFSession.Disp.Conehead(UFConstants.UF_DISP_WORK_VIEW_ONLY, loc, dir, 0);: P9 v* X/ i8 ]7 e, r
    }
% O2 J( i# S0 _+ T1 `# L& n4 I[/mw_shl_code]- Y, H; o( x7 E" [
上海点团信息科技有限公司,承接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的函数基本如下:
# C+ ]" E1 W. ]9 A$ R. {5 a  m//获取面的uv极值8 C! e6 ^+ M/ N8 W% L+ Q
int UF_MODL_ask_face_uv_minmax
8 M0 }7 @3 r! ^% X- Q0 p# S(
- R. N5 b( M6 z* c# N4 `3 x
  ^) O9 M/ g; N0 ^$ D; m5 `- btag_t face_tag,
/ R) C4 j. e2 B1 t8 L4 {& J% Cdouble uv_min_max [ 4 ]
; h0 y. K1 {* X0 F
8 P  o, C4 l# Q, A)
- N7 t, J" W0 f7 L7 D
4 \, ?" R1 C" i7 p' O0 }- K//获取位置点信息--double param [ 2 ] 的输入就是上一步的输出+ o0 U% z) w, r( G& a$ R# F& e

0 I3 Y& k. W2 X9 ~- z! c! Xint UF_MODL_ask_face_props
" y/ M' U5 M$ |( E+ U6 V/ M0 u- Z. {( u
(. r: H% A$ j3 Q& o/ C- A5 g& S
tag_t face_id, " [3 G' |" I0 x$ x7 r
double param [ 2 ] ,
3 R) {- [, \4 S2 I  Z/ xdouble point [ 3 ] ,
) m$ P8 N5 a" _! D4 Z  n- j* h2 bdouble u1 [ 3 ] ,
! ~  \: \1 ~$ H( l) j' vdouble v1 [ 3 ] ,
# A) V7 v2 O% \$ Y9 \. Gdouble u2 [ 3 ] , 6 k5 l# t- q2 J8 c; D" l( z; [
double v2 [ 3 ] , + c. X+ s! E$ a$ i9 X
double unit_norm [ 3 ] , 8 d/ P  k& v& t- N! H4 g- u* h
double radii [ 2 ]
5 t4 T5 k! M' p7 z
# P4 b7 }' W% ~. J2 e. I" N)
$ G& C: g; m5 {7 n) h( p$ }
) |' k8 K1 G# y& Z//将点输入到显示临时的函数中
- D( I9 c$ S" _- r9 ?
1 Z  F8 r$ L6 T  o3 {int UF_DISP_display_temporary_point* {% m6 ~" A( b
4 w: F1 l/ Q3 r
(
- c/ {4 M! Q$ gtag_t view_tag,
, L: A8 L+ I7 sUF_DISP_view_type_t which_views,
/ G  n1 |% [8 |) W% Y' {double markerpos [ 3 ] ,   k, p' A5 C& j1 C
UF_OBJ_disp_props_t * color,
1 I; m) M; w! u3 T, Q# d7 G9 fUF_DISP_poly_marker_t marker_type % H6 P$ J7 E5 }
- o9 }4 |+ s9 }5 p1 q5 Z; x
)
; p9 J$ W' @( F; v) |4 W
2 @+ N8 D5 g: x9 f$ v; f//显示' ]5 q( s: ?# w- |5 s
$ ~. y/ l' p5 A
void UF_DISP_conehead
& m/ P6 e7 x* g) J(
/ h) z) V1 Z& m( _) k$ l) V" K" U9 d; T
0 O  a- V, ]7 j: y7 J+ f4 f6 M! Cint display_flag, / R6 Z( r" @8 ^" X; c: O' N! k# C
double coord [ 3 ] ,
, o' ?1 }. ^* O( S2 y6 Rdouble vector [ 3 ] ,
. Q8 v* I2 v: t& z# p- ^int anchor_flag
& ]5 N" t& F/ p$ P+ P- ?
5 D$ r6 H% @# S1 x% @7 `# {# f)
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了