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

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

[复制链接]

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

admin 发表于 2019-1-17 10:56:35 |阅读模式

admin 楼主

2019-1-17 10:56:35

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

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

x
NX二次开发源码分享: 创建精确外轮廓
7 E( g. ^7 c4 `/ ^( V& H3 |& W1 s& t- A. U  _7 B
UF_CURVE_create_shadow_outline (view source)
$ @9 \0 V- Y& [" O: E
4 K7 ]2 u. `4 a5 dDefined in: uf_curve.h% e. U4 d  i6 p

# Q: K5 H; y, l4 Q# ~2 l$ ~" l6 _. L% l4 h6 h9 S9 m: y. ~) y
Overview
' i' H% n7 l' p5 D; d/ e+ [, l) l! }$ W. x, l4 l* ^
Create shadow outline for a given array of solids. Solids passed to this
2 n: r$ x$ o! D8 p9 U$ I4 W, Froutine must be on a selectable layer and visible. If created shadow curves
: P% [% i( J* J8 p1 `can not form loops, please use UF_CURVE_create_shadow_curves instead to get : I$ U# b1 l9 Q0 y8 x0 b" w
shadow curves.
# f& x6 m4 D  z/ I! [' I9 O
# Z7 q! B# X' v& h; ~+ n- z
# Y2 T: ~+ w) g8 C9 P[hide]
$ ]! N3 k8 o6 O$ z6 I2 u* I2 K* q0 \& b+ v; i0 i
[mw_shl_code=csharp,true] void DoIt()0 i  j6 K, ^1 i0 m3 U0 `2 V
    {1 b( x& R: K- J3 R, [7 A# a/ @3 [& @
        if (theSession.Parts.Display != theSession.Parts.Work)
/ H1 ^- `$ x5 F: n+ t            theSession.Parts.SetWork(theSession.Parts.Display);" C. k! u# h. C7 A5 `9 y$ N
3 P9 L' T: D2 d! _0 s
0 D# q! S1 i( G* Q' z$ ?( d# Q* ^) ^
        TaggedObject[] theBodies = null;8 R) ~0 A+ _5 Q: \3 M9 `2 D9 F
        if (SelectBodies("Select Bodies", ref theBodies) == Selection.Response.Ok)0 z" G# [* a* l+ N8 e( u
        {5 j9 T8 O% F- c! Y
            Echo("Selected Bodies: " + theBodies.Length.ToString());1 ^6 K% B0 s* y( c9 i3 C" i
            Tag[] theBodyTags = new Tag[theBodies.Length];% q; H& L0 `4 X# s+ S' X( T' T% Q
            for (int ii = 0; ii < theBodies.Length; ii++)' [; L& {  `0 X# y
                theBodyTags[ii] = theBodies[ii].Tag;2 E3 M" i4 Y& p; _" L) i( X% C* v

0 h( T3 o* _- y+ j/ d            List<Curve> theOutlineCurves = new List<Curve>();
2 X9 L9 ~) p" @            ModelingView workView = theSession.Parts.Work.ModelingViews.WorkView;
# _; L7 H; v8 [$ P5 L/ q            int loop_count;+ }* Z8 }+ K: ^2 ^/ `
            int[] count_array;  Q5 q/ C+ x  O% z& n- k
            Tag[][] curve_array = null;+ f5 z1 D6 X- \" {  T
            double[] tol = new double[2];
- x! @2 w3 k" |" D
% o0 I) r, p0 ]( T( K, }- q            theUFSession.Modl.AskDistanceTolerance(out tol[0]);
4 M5 F8 `: G- Y; `            theUFSession.Modl.AskAngleTolerance(out tol[1]);
! a  A( k# w8 l& C  t$ \
( `2 [3 O$ L: s) \            theUFSession.Curve.CreatePreciseOutline(theBodyTags.Length, theBodyTags,+ W, v! j, x+ f9 s0 j2 X- ~6 u/ P
                workView.Tag, out loop_count, out count_array, out curve_array, tol);
" b. M3 ~  ]6 Y& ]
( f" r0 {0 d( W  P            Echo("Precise Outline Loops: " + loop_count.ToString());0 g3 ^0 Z+ i5 k( v& {/ o; g
            for (int ii = 0; ii < loop_count; ii++)
6 v9 \, S$ L- i  u' J8 C- N                for (int jj = 0; jj < count_array[ii]; jj++)% Y- |2 y3 q1 {0 D$ a' y+ H
                    theOutlineCurves.Add((Curve)NXOpen.Utilities.NXObjectManager.Get(curve_array[ii][jj]));
& [' i! L; g! p$ ?            Echo("Precise Outline Curves: " + theOutlineCurves.Count.ToString());6 x! ]* L  d/ q
- s" B4 ?+ `  a
            /* If created outline curves can not form loops, use UF_CURVE_create_precise_outline_curves instead
9 Z$ a* n8 e& }6 }% j/ m            int curve_count;
% e. V) G2 d, x; j7 V            Tag[] outline_curves = null;% W! Z# k4 `! g% S* p' j
            theUFSession.Curve.CreatePreciseOutlineCurves(theBodyTags.Length, theBodyTags,
9 v: m  [/ K& `. a: g& S                workView.Tag, out curve_count, out outline_curves);& M. ]. O% ^; E. Q5 h; X( ]/ c
            Echo("Precise Outline Curves: " + curve_count.ToString());; g" d( K! f' E
            */& |- t4 P! `% t9 L+ _% U# E! Z
        }
. A" ?$ w+ q0 w: D0 |4 c! x* Q" o
    }[/mw_shl_code]1 |0 V/ f7 D# H6 s
[/hide]
/ A9 A5 A3 B# D0 m1 t
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了