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

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

[复制链接]

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

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

admin 楼主

2019-2-8 12:58:52

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

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

x
+ E' ^5 C, E# r3 i; I0 N
9 P' W5 @' f2 o
经常能用的到,通过选择面,显示临时法线方向和点!
* \6 V" c3 O( I# g  ^8 a, I  p6 Z. l
! v* t5 k( N( c# X* _# x
[mw_shl_code=cpp,true]  static bool DisplayNormal(Face theFace)# T& B# a. q( m
    {
6 u9 u. \; Y- x9 F; f7 T# [" I- ]" c        double[] param = new double[2];6 q/ I0 R( L  |0 G; k, A( G
        double[] p1 = new double[3];; w/ X! \& j7 }( W" Q
        double[] u1 = new double[3];$ f: Q- p: d* P4 ?  d( B6 V
        double[] v1 = new double[3];
6 X8 T: D8 E# p/ g        double[] u2 = new double[3];
& O' Y# v/ h" z; Q* A        double[] v2 = new double[3];
( Q* `, s7 ^4 q7 M5 w        double[] unit_norm = new double[3];/ y2 P+ p9 i0 m" j# s$ c
        double[] radii = new double[2];
9 Y$ ?" d4 v/ _6 h        double[] uv_min_max = new double[4];
) [0 r& v, q- C; ~
8 N) f: q4 a, Q6 G" a" E, \        theUFSession.Modl.AskFaceUvMinmax(theFace.Tag, uv_min_max);
) z/ {' M$ k) j* x        param[0] = (uv_min_max[0]+uv_min_max[1]) / 2; ( S- R. R5 M2 A; b5 F4 E9 K
        param[1] = (uv_min_max[2]+uv_min_max[3]) / 2;   t: n" o/ F8 e$ m7 d, H
        theUFSession.Modl.AskFaceProps(theFace.Tag, param, p1, u1, v1, u2, v2, unit_norm, radii);
; S5 O! e# D0 q- a# ^/ d6 Q- d  _. ^3 W, r
        DisplayTemporaryPoint(p1);
9 Q* ?$ m  ]9 d# r& S        DisplayConehead(p1, unit_norm);
  M; A# j! M; m2 r+ z4 I* |
  i' v+ q  N: x3 _- R  c+ }        return true;/ G' \2 ]* Y0 ^5 `5 v6 B6 {; F; w; K1 w
    }% k! ~, z' T1 Z# O: ]4 r' p; k
    . e, o4 W2 C$ w
    static void DisplayTemporaryPoint(Double[] loc)
* f) u% |: Q" X# U" n- o    {5 ?% f3 b- ^+ f: W$ m
        UFObj.DispProps color = new UFObj.DispProps();7 a- q( `- B" ]" c: R
        color.color = 6;7 ^( o1 {  g# w: ^; T4 N
        theUFSession.Disp.DisplayTemporaryPoint(Tag.Null, UFDisp.ViewType.UseWorkView, 1 v! @8 d- k+ ]) B5 t& o
            loc, ref color, UFDisp.PolyMarker.FilledCircle);
* o# |$ X& z- ]/ a8 s, \    }
7 [' i+ j' j% D5 q. {# T. g; ~/ w3 w% O+ C
    static void DisplayConehead(Double[] loc, Double[] dir)
/ O" s) j" j& k, D    {$ y" c6 H! R/ B; X* V
        theUFSession.Disp.Conehead(UFConstants.UF_DISP_WORK_VIEW_ONLY, loc, dir, 0);
5 ]+ D1 J: q- v3 t; {  o' ]    }
5 F6 v! T5 ^/ Z8 G  V& l. G+ W# l[/mw_shl_code]
. b8 |# f* ~9 {/ D  p" o6 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的函数基本如下:
2 v& M" H. c' T/ ~//获取面的uv极值: j! L$ d& k7 _% D# M4 i) a
int UF_MODL_ask_face_uv_minmax0 @3 D) Q4 _, U! T+ t  ~* S  L
($ W) h& f4 b  K; u1 ~2 F
3 v* ^- [7 _. j& E6 ~
tag_t face_tag,
" \5 ^; L# Z# Mdouble uv_min_max [ 4 ]
8 y* ^* s9 h, i2 H! \$ r2 j2 D
7 ^6 G2 |2 w0 B4 W6 }; `7 O)
) Q( u5 V6 m# c3 D  Q, E/ R# l0 [: |
//获取位置点信息--double param [ 2 ] 的输入就是上一步的输出/ u3 t0 o; T8 v, `* L% Q0 [
( p* m7 F0 G, A# x$ H5 w
int UF_MODL_ask_face_props
  c4 x4 ~: x  A; D
! T' O' _* {# L" X/ g# s(
! i( `" m! h: ^tag_t face_id, $ s9 q$ d8 p+ [" s3 T
double param [ 2 ] , & I; g0 D. L+ y% h+ n' W0 _
double point [ 3 ] ,
3 w/ j2 }$ L+ N, y" U& {+ @double u1 [ 3 ] , ! D9 U- O2 Z9 w3 y9 t0 b" o, t
double v1 [ 3 ] ,
# B8 R  m" M' l- bdouble u2 [ 3 ] ,
: d( C/ u+ u8 ^( y1 x4 Ddouble v2 [ 3 ] ,
$ U- Q) Y* x: ]& u9 B$ pdouble unit_norm [ 3 ] ,   Z# U+ \2 G8 E
double radii [ 2 ] . m1 T8 w" ]: \5 K/ ?! H0 ?

) P' V' X& L7 _3 u( c)
. ~# G# g. F8 T7 r% u. K( ^
9 c6 d- U5 Q8 E2 Y5 ]0 D//将点输入到显示临时的函数中& o: }/ t  C& t* ]3 G5 o( y9 U; |

& e  r8 Z. F, E; kint UF_DISP_display_temporary_point
  ]% j6 F/ J( ?7 i; h) X9 u+ J' U- h" r' O, L  S# ?
() X; z& z7 R' j' o; J
tag_t view_tag,
+ y9 I2 [" Y2 ~: wUF_DISP_view_type_t which_views, $ i: s) ^$ V$ V  N7 e+ s  m" F
double markerpos [ 3 ] , # T5 }7 O$ V! @: O" [* Q5 ^7 Y
UF_OBJ_disp_props_t * color, % O! P; W) _0 s+ L
UF_DISP_poly_marker_t marker_type - U  n1 L1 _, F8 ~4 c  v: j

( i$ ^4 k5 Z2 |$ G  @- K8 D)
5 m; M: C- M/ f4 y+ f. M5 }) m( Z# F6 |
//显示$ ~" y$ L5 p4 m5 h, _$ g
2 H) @. |' e, `8 ?& d2 q
void UF_DISP_conehead, _  K2 m/ H# b4 ~
(
4 G5 o) l5 g7 }9 |$ _. S* l. G: y. k- b9 m, F$ e# B
int display_flag, 6 {* |* r( b) ^, _* F: p+ a
double coord [ 3 ] , 6 |0 w1 w2 K* q4 q/ Z
double vector [ 3 ] ,
0 f7 U# k; x3 s/ `/ E+ [. B6 fint anchor_flag * s8 F' u+ w9 c8 N" g, }5 J/ P

3 ?6 k2 `$ v& |9 J# r7 B" M)
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了