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

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

[复制链接]

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

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

admin 楼主

2019-1-17 10:56:35

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

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

x
NX二次开发源码分享: 创建精确外轮廓
3 {- h* e4 `& M. o5 w0 }* k
! q7 t0 s& W# ^" s, W$ JUF_CURVE_create_shadow_outline (view source); s- s0 H) @" |  T5 p3 o8 s* H( X) z
& x8 h( t" h7 q
Defined in: uf_curve.h, i. W' S% @5 j
6 o; D4 M. }7 P1 p; T7 u3 @

' j0 M* Y6 w. p$ }9 _Overview
# ]) j& @1 n* y+ a4 a$ R& J" i2 [4 f1 C
Create shadow outline for a given array of solids. Solids passed to this ' }$ s9 A# x% e8 `' w4 X0 \* ~( |
routine must be on a selectable layer and visible. If created shadow curves
& u9 {' m; [& ~' _: g% L  dcan not form loops, please use UF_CURVE_create_shadow_curves instead to get 1 A; A/ [  i/ K3 H4 h2 ~
shadow curves.
" C1 t3 Y) i+ |$ O1 `) p$ B
/ ~+ H( ]  n* C6 [* a0 \- H, e# H( y
[hide]
6 s: m# M, O/ L# t) Z* ~& t
& X' \) @8 J. K6 {: B) x& K[mw_shl_code=csharp,true] void DoIt()" o+ W. s8 Q' Q: \4 x1 x
    {8 a$ L/ G: N+ A! T6 n6 w3 P! M
        if (theSession.Parts.Display != theSession.Parts.Work)
* P# N2 W) Q8 Q: F            theSession.Parts.SetWork(theSession.Parts.Display);
+ C$ O7 t  m! K: S* X5 A" @
4 [1 Z& \( \6 B- x, @5 {  E# _1 T* M4 b1 G8 l7 n9 w8 B
        TaggedObject[] theBodies = null;6 D% }+ D! P& G' Q/ \
        if (SelectBodies("Select Bodies", ref theBodies) == Selection.Response.Ok)
& Q0 S$ w6 E7 j) l  L        {  }, H" a$ E7 ^0 O" t/ B9 G4 L5 ~
            Echo("Selected Bodies: " + theBodies.Length.ToString());' [$ v9 p9 @$ Q, U. {
            Tag[] theBodyTags = new Tag[theBodies.Length];
' [. `/ o2 o$ ~7 ?, `* [            for (int ii = 0; ii < theBodies.Length; ii++)
' ^9 `5 g7 \/ A# @8 O                theBodyTags[ii] = theBodies[ii].Tag;0 B( N( D. K, H
) h5 |2 c3 S' U3 X5 L+ {0 H
            List<Curve> theOutlineCurves = new List<Curve>();
! }& b" n, z- p            ModelingView workView = theSession.Parts.Work.ModelingViews.WorkView;
8 Y  G( W  a* A' W            int loop_count;2 j( @, Y' n4 c
            int[] count_array;3 L4 h1 `8 j9 i1 k
            Tag[][] curve_array = null;  h4 C$ \& v5 F# W6 K9 V& l
            double[] tol = new double[2];
: q9 b" T& g. V4 y. |2 ^9 ?, \) E- S: o6 p! T- Z
            theUFSession.Modl.AskDistanceTolerance(out tol[0]);% u0 O0 k, W& {! I# C- O" _$ f
            theUFSession.Modl.AskAngleTolerance(out tol[1]);4 I& J3 ?* a: e" x' s
/ @0 F& l' v( A6 t4 |4 D* {' {
            theUFSession.Curve.CreatePreciseOutline(theBodyTags.Length, theBodyTags,( E& ~- q. D0 K# O* G5 r3 N
                workView.Tag, out loop_count, out count_array, out curve_array, tol);6 l7 d7 o1 b% c, c, k" Y4 `" T

  r: z3 B0 P4 }9 U) |$ c5 j            Echo("Precise Outline Loops: " + loop_count.ToString());
5 t+ I" L: c/ f+ [* G2 T            for (int ii = 0; ii < loop_count; ii++)) t9 @( a: p0 t, I: }" V! t
                for (int jj = 0; jj < count_array[ii]; jj++)
* O) e  o; W# _1 S% a$ h                    theOutlineCurves.Add((Curve)NXOpen.Utilities.NXObjectManager.Get(curve_array[ii][jj]));( K+ |7 i! l$ G$ ?9 D% k6 Q" R
            Echo("Precise Outline Curves: " + theOutlineCurves.Count.ToString());
8 C5 h6 J  a- i; P, h2 z
0 d# Y! e! ]6 |+ E9 r) Y6 V) A            /* If created outline curves can not form loops, use UF_CURVE_create_precise_outline_curves instead
+ _2 d; n# T: D            int curve_count;
" K& V/ W+ j& t+ z7 g            Tag[] outline_curves = null;
6 I# o; u9 a0 I: M            theUFSession.Curve.CreatePreciseOutlineCurves(theBodyTags.Length, theBodyTags,
1 H+ B# J$ R8 I                workView.Tag, out curve_count, out outline_curves);
6 Y) |& H4 \+ \            Echo("Precise Outline Curves: " + curve_count.ToString());
2 T, R3 d) s' E+ x9 r; B. o# o4 z            */3 A& g5 Z0 e; x7 s/ h" M9 p
        }) R1 {+ }& {' K' F$ }8 j/ z8 f1 a
: F* \5 _7 y. ~+ d0 ^, u
    }[/mw_shl_code]
. R  v% M8 W# _- D: M2 D[/hide]
2 q& i0 Z0 @3 t+ V( e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了