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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
% v- O- S6 ]$ r5 j# U, j
2 A9 S7 |0 j0 E0 p+ l1 x- k
经常能用的到,通过选择面,显示临时法线方向和点!0 r, l5 e2 q, l, B1 x6 t9 d
! B& u7 k; a0 q) W3 L

/ k) G+ h. k4 V' ^7 L[mw_shl_code=cpp,true]  static bool DisplayNormal(Face theFace)5 v8 X( A( v5 X" ~5 C
    {
2 L9 {% a& g/ |( z- {        double[] param = new double[2];
, p  ?: S0 ^" l4 z" Z0 G1 D$ j        double[] p1 = new double[3];# g+ U3 {0 h9 ?* y" |0 d$ u2 Y) n
        double[] u1 = new double[3];+ ~9 d' p! b; K% [! ^8 d2 o4 M
        double[] v1 = new double[3];/ H& z" x8 ]  r
        double[] u2 = new double[3];5 \* ~) O% T. R5 @# K  I. y2 q
        double[] v2 = new double[3];7 \9 G8 x# Z/ v. p# r
        double[] unit_norm = new double[3];
* J5 \5 b# @  O+ }% d7 r  o        double[] radii = new double[2];
- q3 K* U, J3 _  N        double[] uv_min_max = new double[4];  j. M; h* {0 g# F; c

) T0 ], e3 e6 }0 J0 T        theUFSession.Modl.AskFaceUvMinmax(theFace.Tag, uv_min_max);
( P' W* X9 t. z: J% p& X0 u        param[0] = (uv_min_max[0]+uv_min_max[1]) / 2;
. J) \3 C- {( w) U        param[1] = (uv_min_max[2]+uv_min_max[3]) / 2;
/ L5 [+ [5 d, E. }. H4 I% O        theUFSession.Modl.AskFaceProps(theFace.Tag, param, p1, u1, v1, u2, v2, unit_norm, radii);  Z) p5 [/ L+ w- m. j/ w

% N( d5 |% w5 C, b1 P4 a! k        DisplayTemporaryPoint(p1);! k7 w% Y% ?  ?; e4 |
        DisplayConehead(p1, unit_norm);
2 F# `- x8 g( ]' g; Y1 K+ n0 R* N7 W7 N2 Y& @) J1 S9 K+ {
        return true;8 I* z8 ^4 B9 W  }/ ^  U$ i2 x
    }$ F2 f2 i" {6 }$ _8 Z
   
( z1 Z) P+ t( V' _4 e    static void DisplayTemporaryPoint(Double[] loc)# c- b0 w. p, c5 @, D: U  S- m
    {" _0 Z+ I& G  Y4 n( i
        UFObj.DispProps color = new UFObj.DispProps();
9 q) f& ]6 y1 c2 _        color.color = 6;$ k# a6 H9 @, ]( u. m
        theUFSession.Disp.DisplayTemporaryPoint(Tag.Null, UFDisp.ViewType.UseWorkView, * n  m0 y: }) o( O
            loc, ref color, UFDisp.PolyMarker.FilledCircle);
( E4 H0 m. W: v7 Q. I4 s( m    }7 p" F% c7 r+ K( X7 L

5 E. H- D  M8 R& [2 `* W    static void DisplayConehead(Double[] loc, Double[] dir)! ^5 {. t- d4 ?, v1 f7 _1 L1 N0 v
    {2 \/ J  \9 d" B4 a
        theUFSession.Disp.Conehead(UFConstants.UF_DISP_WORK_VIEW_ONLY, loc, dir, 0);
& l, T* L3 ~6 d# Z0 b. |; G3 U1 d    }
: U- D, h4 P7 g[/mw_shl_code]7 [' G! a/ q; g* e; q
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

全部回复1

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
 楼主| 发表于 2019-2-8 13:26:19 | 显示全部楼层
如果使用ufun的函数基本如下:- f% t+ R6 _. _2 e  R8 v) t
//获取面的uv极值: n4 m4 A( |# O3 z
int UF_MODL_ask_face_uv_minmax
* P/ m1 y8 }+ T$ ?8 M(
9 D$ `7 w6 k  G, _9 t7 ^0 u1 p6 Z7 Q! _3 Z# {
tag_t face_tag, - {1 u; {2 @; o% @) X4 Q( }
double uv_min_max [ 4 ] 9 V" z8 e, z  U4 `. k; h) a

. A) P/ H0 O, h3 H)
+ s* _  U! y, {6 ^2 j, }0 T3 W
; ?# |/ s# Q- o! z//获取位置点信息--double param [ 2 ] 的输入就是上一步的输出
  B9 I  H3 W1 p% a) U5 s% Z( R5 t; }, l
int UF_MODL_ask_face_props$ I# a# U2 I. K0 M

! d5 ]# C. y, ^8 e3 v( z0 }(; _1 m: f0 r: u7 Z, n4 H8 l
tag_t face_id, ( @  D: ~; x( h# F1 W0 g
double param [ 2 ] , 5 I/ G2 z- X5 k5 ~
double point [ 3 ] , ' J0 V  Q7 B# }1 o9 r$ |' X, H
double u1 [ 3 ] , / T2 I) H* ~& S( z4 T8 W# L
double v1 [ 3 ] , 6 u/ C1 G. m3 s" n# @+ g
double u2 [ 3 ] , ( w" u9 i& ^4 f! e, h
double v2 [ 3 ] ,
/ U9 ~! f. O& o& C) ?% odouble unit_norm [ 3 ] , % D- Q8 B) D, f3 v. D
double radii [ 2 ]
$ M- E: a  T' G- D( J
4 ?/ J8 `; {1 K/ e# T)
2 o% x5 i5 i3 t6 d; C- n! I1 C
0 K. d: u$ {' e  Y( R) k" o6 p1 d+ T" G//将点输入到显示临时的函数中) ~0 v, H0 f2 ~& @0 ?/ _- r# s

% u2 x5 v- E3 `2 eint UF_DISP_display_temporary_point" |9 |* ]0 v5 ~

: f" I% t% s7 D3 y5 T(
  C* ~  ]& O! h$ N) ltag_t view_tag, . \2 o0 y9 V$ O% B# r
UF_DISP_view_type_t which_views,
: S4 A, F5 ], G" O3 H5 s6 jdouble markerpos [ 3 ] ,
6 n8 q, @7 O/ @4 T* tUF_OBJ_disp_props_t * color,
5 z( v4 x3 V7 A0 xUF_DISP_poly_marker_t marker_type
6 D0 L- z0 W4 ^+ s
. l- t8 |& R; x/ n! U" C5 @)) _' o. K6 i9 `1 U( H; i: G
& x3 p1 F5 U+ W5 h9 |* c& e
//显示- f1 K7 u7 E( s: `6 _5 v5 Z) z

* B* i! x2 B( I# k! O  E1 g4 Z6 Dvoid UF_DISP_conehead
2 v$ Q7 E" _& Y# J7 d. R" z(5 s. x. I) j" {% X
4 d& K4 ?* C5 v1 o, x
int display_flag, # h- M4 V( k- Q4 o( y6 i8 ~
double coord [ 3 ] ,
( E: X0 f0 f1 b: ~1 xdouble vector [ 3 ] , 9 |# S* R7 i; A
int anchor_flag % ?  [' `# g, w( X! G6 K
; j: G% D% X9 U; V; n; i& j
)
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了