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

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

[复制链接]

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

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

admin 楼主

2019-2-8 12:58:52

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

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

x
3 i( r& P- a0 W7 B4 ]+ C

6 \, i4 ?" W& X经常能用的到,通过选择面,显示临时法线方向和点!
" z. W( j! S# s' c! b
2 b" x7 r7 U. C2 A" b8 U3 M+ r+ o! K: v2 @
[mw_shl_code=cpp,true]  static bool DisplayNormal(Face theFace)
; D* S9 D) c: b2 E$ y$ W* f9 U0 V    {
" O2 F% I6 k" \1 C  p        double[] param = new double[2];
) k2 J. J2 c4 ?+ r* h        double[] p1 = new double[3];
& U/ `1 {- u7 s        double[] u1 = new double[3];; L6 X7 Q2 p- ~6 f+ s1 v: k' T
        double[] v1 = new double[3];
6 c3 ^% K) ?5 m5 a' E! N        double[] u2 = new double[3];3 s& P: W: @' e( c# L% h
        double[] v2 = new double[3];
7 z2 K- b3 J! U, M- G        double[] unit_norm = new double[3];
, _6 w  x5 ?, I" i) w        double[] radii = new double[2];. b7 f3 ]* W' X
        double[] uv_min_max = new double[4];
$ O( Q& v+ \& @- o$ V% e  G5 L! w2 c- {0 d
        theUFSession.Modl.AskFaceUvMinmax(theFace.Tag, uv_min_max);9 w& K) o# a9 N; W0 q
        param[0] = (uv_min_max[0]+uv_min_max[1]) / 2; , u4 {& ~  C4 @( ~/ `0 _
        param[1] = (uv_min_max[2]+uv_min_max[3]) / 2;
; Y% `6 J8 B* [/ P        theUFSession.Modl.AskFaceProps(theFace.Tag, param, p1, u1, v1, u2, v2, unit_norm, radii);9 Q  k. }( @0 t
- y8 P- \* y( T* O
        DisplayTemporaryPoint(p1);4 X& n& P8 W* C$ g0 G+ E( o
        DisplayConehead(p1, unit_norm);6 c0 I# E6 V, \& D: }1 @  r

( x( v& h2 h4 s- F, e4 ~9 F+ [9 U        return true;
$ k6 H9 u' [2 y* b3 S    }' Z) p1 q9 c/ U5 H/ N9 a  n
    - ]% p* `( w8 ~8 z. s! G
    static void DisplayTemporaryPoint(Double[] loc)
( a) d9 J- Z2 x% t6 S    {
+ G( K7 a% A" `; l( u        UFObj.DispProps color = new UFObj.DispProps();: I* r$ c2 w& v0 U5 d( x* m
        color.color = 6;6 [6 [3 y/ n6 Y: M: I3 n+ m2 D% A) |
        theUFSession.Disp.DisplayTemporaryPoint(Tag.Null, UFDisp.ViewType.UseWorkView,
' T  r) f0 {8 [0 _* A& h( @8 C            loc, ref color, UFDisp.PolyMarker.FilledCircle);
: c! \: V/ x. N/ `, b: l    }
$ S# A5 [- Y4 f; _* W& R/ Q1 J( m5 \! d3 b1 T
    static void DisplayConehead(Double[] loc, Double[] dir)- f& _8 J: O% m/ t3 K
    {$ ^. g- H$ `; Q5 K% ^) e# C
        theUFSession.Disp.Conehead(UFConstants.UF_DISP_WORK_VIEW_ONLY, loc, dir, 0);
; L/ c* W6 L, j# q8 j    }
/ Y% c2 Q+ z, p! b1 J4 H$ _[/mw_shl_code]8 T6 d" f& k( y" k
上海点团信息科技有限公司,承接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的函数基本如下:% @! B& p' `; a+ a3 k$ ^% d
//获取面的uv极值
8 L3 y( A; ^$ J7 \, s, yint UF_MODL_ask_face_uv_minmax: U3 c3 n" B( l7 J& L/ Z% B
($ `6 E/ t8 R, R* t; V
1 M* ^0 M' V% f$ {6 I
tag_t face_tag,
+ c( d: \# l$ L2 F0 i; H5 hdouble uv_min_max [ 4 ]
4 J8 O& S1 s" U. x
. W; r4 }8 V- n- U)* Y  y4 l- j0 E- j! E  t/ K

5 G! |* A  Y1 [+ v- ~  n//获取位置点信息--double param [ 2 ] 的输入就是上一步的输出0 X% [) x/ K6 k1 v: h/ {9 |8 H" j. ~! |

$ M* Y9 A5 G  A: T! F0 Uint UF_MODL_ask_face_props
+ z% m0 k6 e6 F2 f" j3 `+ P/ D# U0 K7 B6 {
(6 j1 j) n; n& S- Z- t4 q. A! }7 P
tag_t face_id, 0 S$ I2 h- e  l
double param [ 2 ] , 6 ]! |9 l5 @# z+ @3 d1 x1 K
double point [ 3 ] ,
3 R0 X3 n( g& Y) r$ j5 y/ Edouble u1 [ 3 ] ,
, C9 \, Z" `9 Mdouble v1 [ 3 ] ,
6 L+ b7 X- F. o* Edouble u2 [ 3 ] ,
  b  V: Z- h* H& ydouble v2 [ 3 ] , , b! J; \  Z: K! Q- c8 C6 [2 w
double unit_norm [ 3 ] , / `' R7 G1 O$ P; j7 b
double radii [ 2 ]
! F! a# V) W# J; Q" I' c: j0 x3 {
0 x8 N9 w, ~; t)4 E( `& e3 n& z* F. C- @# @

' A2 q8 X6 b5 H5 J: `0 [0 Y//将点输入到显示临时的函数中
3 M# M. _& D3 Z
+ a2 `  h6 M* b& |: Y2 Mint UF_DISP_display_temporary_point
+ B: D1 E: S5 D1 B4 Y# O( o* e
( u9 h6 v* j, P3 Z& j. _% i0 U(. W4 O0 T: z) o6 \
tag_t view_tag, ; X" L3 x% D, c% m
UF_DISP_view_type_t which_views,
% Z5 J  o3 X0 D1 O. F9 j# ]0 }$ q( w, Qdouble markerpos [ 3 ] ,
% c, f+ q9 X' ~6 F5 zUF_OBJ_disp_props_t * color,
0 o3 v9 G& Z( X: D: n7 L2 Z7 C6 rUF_DISP_poly_marker_t marker_type ) j9 h& C; ?* y6 ~7 n
: T+ ]8 h* t. X  F; p* w; U
)
) o- r$ O9 |  i& @9 _2 [
( h& x  r8 Z% t3 S( T' b5 P//显示# L3 W& m  @. o
9 `& A" B2 f4 m, a8 W
void UF_DISP_conehead
7 d3 _# D6 H- W5 N' _/ ^(
1 T3 e& D0 [# s1 A, E4 y7 Z4 F% H
int display_flag,
; X1 d! S2 p4 H! x6 n. odouble coord [ 3 ] , 6 z+ U- u& N; U! \, b
double vector [ 3 ] , 6 f7 }2 L% I, S
int anchor_flag
% W/ G! e: {5 W- l4 c8 U( u: S* n) _0 x6 i
)
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了