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

[二次开发源码] NX二次开发源码分享: 创建精确外轮廓

[复制链接]

2019-1-17 10:56:35 2199 0

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2019-1-17 10:56:35 | 显示全部楼层 |阅读模式

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

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

x
NX二次开发源码分享: 创建精确外轮廓
! l5 M, f5 v5 b" K( c
+ `" b5 Q9 d$ C, G8 |. ?& D1 ?7 LUF_CURVE_create_shadow_outline (view source)8 w9 O3 W6 n5 \9 E; G8 C. g
; A/ d. }  V2 H' M# k' _3 ?
Defined in: uf_curve.h3 r; x7 A$ R% O- G; |% ^9 F- y, O) l

! k" i' T' U" ^1 ]9 f8 ^) W( M' ]* w, h; a% L2 f" P5 ]6 c
Overview
% Q- D& L! `  T) T- {6 o$ U
6 D7 O1 {- I! zCreate shadow outline for a given array of solids. Solids passed to this % m# L( \1 L1 h$ R" Z& F
routine must be on a selectable layer and visible. If created shadow curves / |& {1 l" d" e* [9 _% {1 O
can not form loops, please use UF_CURVE_create_shadow_curves instead to get
- {, L; k$ r  {" l& ashadow curves. * Q9 A% K8 W4 j3 a# {9 v
; U) ~  r# k3 y9 q1 J: s

0 Z1 Q8 S' O) g% N' ~/ L2 E7 d[hide]( A! s% a. e  U3 n
! s, E$ g) j% U; N
[mw_shl_code=csharp,true] void DoIt()
. ~0 Z6 J: ~; M% i8 b    {
: C* ]* H; D, |2 s. L        if (theSession.Parts.Display != theSession.Parts.Work)
& H+ Q& J5 g- y  A. I+ R9 `$ k            theSession.Parts.SetWork(theSession.Parts.Display);5 @# }3 r9 q. V7 [% H3 r- R- W( L
8 h% j  M+ g' V3 s, t1 V3 I

1 M: Y* D) O2 J. a7 D* v        TaggedObject[] theBodies = null;
  ]0 n4 `8 g5 x* ?# o! b1 ~2 x4 @        if (SelectBodies("Select Bodies", ref theBodies) == Selection.Response.Ok)
7 a1 H0 J  ~8 e  g6 t        {
; N3 G; f; F9 n* W3 E5 @, b# O            Echo("Selected Bodies: " + theBodies.Length.ToString());. R1 S- H! ]# L$ z7 ]- q7 O7 Y
            Tag[] theBodyTags = new Tag[theBodies.Length];" m6 s0 N5 ^  G$ k1 I. s5 U( k% d
            for (int ii = 0; ii < theBodies.Length; ii++)
( u" y" K( u9 T3 A& ~/ c" m                theBodyTags[ii] = theBodies[ii].Tag;
0 A' e$ {" Y, O3 h' x( Q! y
: H# f4 P, e4 r. K3 Q4 ~( {            List<Curve> theOutlineCurves = new List<Curve>();
* k( Q" U9 N" K1 c; M9 ]            ModelingView workView = theSession.Parts.Work.ModelingViews.WorkView;# N9 c) L8 _* m" Y8 ~
            int loop_count;
# x6 E9 Y* F7 C. t1 {( L! z            int[] count_array;
+ U: k- t2 X& j+ ~% S. Q            Tag[][] curve_array = null;
( m$ t% L& u$ d9 |6 H! H* _            double[] tol = new double[2];; B6 t4 |" n0 p4 J. k$ T2 ]

( `$ ]& @: W$ u: w/ T, A5 o) V$ z            theUFSession.Modl.AskDistanceTolerance(out tol[0]);
) i9 v$ N: U- s" }            theUFSession.Modl.AskAngleTolerance(out tol[1]);
/ ~4 G0 x& R) Z! K  i9 Y& \7 _
/ }0 i9 @9 U* C2 S            theUFSession.Curve.CreatePreciseOutline(theBodyTags.Length, theBodyTags,, p6 R# H. C% g% Y2 x
                workView.Tag, out loop_count, out count_array, out curve_array, tol);
% S8 Q$ d) h+ u2 [5 h) S  e; R7 D% T/ W6 L, D  b0 w
            Echo("Precise Outline Loops: " + loop_count.ToString());
# z" x2 j  N* R8 V* j+ r            for (int ii = 0; ii < loop_count; ii++)* z* }1 B( Z5 W5 c1 m% l7 V
                for (int jj = 0; jj < count_array[ii]; jj++)
9 ~* H& e6 \9 w- C, O                    theOutlineCurves.Add((Curve)NXOpen.Utilities.NXObjectManager.Get(curve_array[ii][jj]));2 j. c8 i5 d0 L/ i, Q+ M: I" }
            Echo("Precise Outline Curves: " + theOutlineCurves.Count.ToString());
, N+ K5 O$ i9 [! w3 S  t
4 d* t2 {: Y) [3 H# o            /* If created outline curves can not form loops, use UF_CURVE_create_precise_outline_curves instead
' d/ m  p1 N: ]' w! ^3 a            int curve_count;% [% R. f9 w: b2 i( H* t7 C
            Tag[] outline_curves = null;0 r: K5 O) O$ o  r7 Y% V7 j; W# P
            theUFSession.Curve.CreatePreciseOutlineCurves(theBodyTags.Length, theBodyTags,
$ x# j4 `  [! g9 q4 K                workView.Tag, out curve_count, out outline_curves);
; w5 t# F5 J  b  n$ ~0 C; e. O            Echo("Precise Outline Curves: " + curve_count.ToString());* X5 S5 S2 z0 z. P" I+ [
            */
5 H, w1 F( s! ]" H' H3 e; f        }5 ?1 R6 K- {7 d* g7 z+ J" m
; U  |/ \) O* S3 q" W
    }[/mw_shl_code]
4 k) O9 K/ ~7 b$ g" p* ~[/hide]; o' b. S- J1 p/ Q+ h" F# S
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了