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

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

[复制链接]

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

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

admin 楼主

2019-1-17 10:56:35

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

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

x
NX二次开发源码分享: 创建精确外轮廓* l- r1 U$ B- s* n2 ?. A, N
) X4 h4 o. F+ g2 l# ]
UF_CURVE_create_shadow_outline (view source)
- U3 h" M8 n; W  ]" | ! ]- |/ a% _3 C: _
Defined in: uf_curve.h
6 t* d* F1 [1 r+ |1 O 5 z4 Y8 Y# U+ K: @

( e) _2 q! U* Y- l% @9 \Overview) }$ d4 P& @8 G* O: ~
, T1 {" o7 j* S4 `1 [
Create shadow outline for a given array of solids. Solids passed to this
. ?3 y/ ?. L' @2 xroutine must be on a selectable layer and visible. If created shadow curves + L" L# v' Q0 t$ M# ~, v( B
can not form loops, please use UF_CURVE_create_shadow_curves instead to get # @$ u# b: u& ^# a
shadow curves. 3 G- a! Y; ^5 B6 c
9 P  H( |  ~2 P- [1 ~7 J

( e) S' ~( B0 E% e; F9 l% L[hide]2 I0 T% \2 u$ F' M0 o
& L$ q; U, [: c$ i) l
[mw_shl_code=csharp,true] void DoIt()! k7 f; e1 U6 [9 ~1 J' x
    {
' E: D$ E' c( r7 T% K        if (theSession.Parts.Display != theSession.Parts.Work)" A: Q0 k. T$ `0 ^
            theSession.Parts.SetWork(theSession.Parts.Display);4 a  B7 g* N& y" g- W. H

/ n3 ]8 n6 O8 ^# j1 \  S
3 G/ P! v/ @3 y! l# F$ g+ A0 o        TaggedObject[] theBodies = null;
% Z8 ~& z$ r5 j3 h  G: h" _( e! N) `- ]        if (SelectBodies("Select Bodies", ref theBodies) == Selection.Response.Ok)' ^" Z  P2 J9 O- s
        {
# T! s! |) O) C1 z' v( S- x5 f            Echo("Selected Bodies: " + theBodies.Length.ToString());
$ h3 F3 m( ~" i0 N7 v            Tag[] theBodyTags = new Tag[theBodies.Length];& R1 Z) U4 N4 V' @
            for (int ii = 0; ii < theBodies.Length; ii++)
% n# F$ d6 h/ P5 R1 t0 |/ {- Z* a                theBodyTags[ii] = theBodies[ii].Tag;
( P) O  L# R- F! n. P: l* p* M( _, B' m4 M
            List<Curve> theOutlineCurves = new List<Curve>();* R' n# S7 }. u+ O0 s+ i
            ModelingView workView = theSession.Parts.Work.ModelingViews.WorkView;. `) [/ w4 ~/ M+ J1 Q7 Q- Y
            int loop_count;, i* r/ E6 w& \
            int[] count_array;
0 c% k  M$ Y! t  i. A  e5 V5 }* U            Tag[][] curve_array = null;0 s  G# T& Y( V: W+ u0 f
            double[] tol = new double[2];( t4 t8 e+ D( ^4 \/ n
7 f+ `7 T4 e, n) w
            theUFSession.Modl.AskDistanceTolerance(out tol[0]);
* y2 P$ @* i3 ~1 d            theUFSession.Modl.AskAngleTolerance(out tol[1]);
8 _0 C* C" ?8 F$ X$ N) d- Y5 Q; l  R+ _9 g$ c
            theUFSession.Curve.CreatePreciseOutline(theBodyTags.Length, theBodyTags,
& _! @+ m. Q( i/ [7 I1 s- I                workView.Tag, out loop_count, out count_array, out curve_array, tol);
7 ?2 S+ X- e3 a+ g  ]! i8 O7 s( n! d  ]5 G# ^4 Y# c
            Echo("Precise Outline Loops: " + loop_count.ToString());
& p0 v% \8 c$ y, x            for (int ii = 0; ii < loop_count; ii++)
" y$ L2 J9 e; {+ g* U3 H: l5 t. o                for (int jj = 0; jj < count_array[ii]; jj++)
+ l( p. j; Q3 |                    theOutlineCurves.Add((Curve)NXOpen.Utilities.NXObjectManager.Get(curve_array[ii][jj]));
) U5 L  ]6 d! {. F- a% ]* I0 b            Echo("Precise Outline Curves: " + theOutlineCurves.Count.ToString());
) R6 H# s; v1 l( D/ G- }8 a- j0 h4 E  Q7 T8 A
            /* If created outline curves can not form loops, use UF_CURVE_create_precise_outline_curves instead 1 j0 f6 B" t2 a2 u: ~  X
            int curve_count;
; y; b# D( E6 z5 {' N/ ~3 d            Tag[] outline_curves = null;2 q& E# V+ ~- H& i8 U* o+ ]
            theUFSession.Curve.CreatePreciseOutlineCurves(theBodyTags.Length, theBodyTags,
4 _$ \+ w  N$ T) C- u+ n! C. z                workView.Tag, out curve_count, out outline_curves);
# v! Q3 I# D" J1 L1 j' N6 G6 a$ w            Echo("Precise Outline Curves: " + curve_count.ToString());
* X- k$ T  j% {; |            */
5 m! t- t3 s7 q2 z  r        }' `7 m3 j1 e1 G9 }* _

; H. `3 H: d5 f4 ~& ^    }[/mw_shl_code]& E& V" C+ P3 u9 c" o. z
[/hide]2 `3 ~# q( Q) [6 d( 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二次开发专题模块培训报名开始啦

    我知道了