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

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

[复制链接]

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

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

admin 楼主

2019-1-17 10:56:35

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

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

x
NX二次开发源码分享: 创建精确外轮廓" ?$ D8 K) W9 C1 v3 [8 T
) o8 x" Y# E" U
UF_CURVE_create_shadow_outline (view source)
; K/ N) V: w; ^* R9 j1 v8 ^0 g " U$ i' a& _9 }8 Q$ V$ O9 p9 j- z
Defined in: uf_curve.h
3 h" {5 g7 ], H1 @ % J$ v* ?/ A7 ^- J
2 V! ~0 F) {; i0 g5 K
Overview, h: {4 N9 W# U% u7 r

  x. c9 p! }" aCreate shadow outline for a given array of solids. Solids passed to this ! S6 c( N; l3 d, |6 o- Y2 V6 Z. f
routine must be on a selectable layer and visible. If created shadow curves
- b: Z$ e: A* x5 s# qcan not form loops, please use UF_CURVE_create_shadow_curves instead to get
/ F+ p! ?6 T9 x, q- x1 h4 fshadow curves.
3 }" x2 w4 D$ U: ]5 d
2 @9 Y) R. r5 @4 r7 t( @  t+ ^
% H( U+ M$ o. d' c; a/ e[hide]& k9 K& L: |+ p# e& }
; h( q/ t1 z0 \
[mw_shl_code=csharp,true] void DoIt()
3 y1 B, n0 l; m2 ~8 v    {5 V9 y% O# p4 ?
        if (theSession.Parts.Display != theSession.Parts.Work)7 m' p* w7 Z3 U2 w! J( \
            theSession.Parts.SetWork(theSession.Parts.Display);# X% [& V" M. j, v( m2 m2 v3 O/ o2 X
3 W5 Z3 f; {" \* j! Q% Q; V" j
( I) C0 t3 y; ~) M# \$ r$ B
        TaggedObject[] theBodies = null;2 o; ]: {. t  u9 h' {
        if (SelectBodies("Select Bodies", ref theBodies) == Selection.Response.Ok)# Q3 \9 W7 |3 `6 w8 h- i
        {4 G6 x% @/ r1 l; J
            Echo("Selected Bodies: " + theBodies.Length.ToString());
- c1 k8 i/ p9 m/ L4 k) a            Tag[] theBodyTags = new Tag[theBodies.Length];
7 c! s! T1 `* R# G$ R% Q            for (int ii = 0; ii < theBodies.Length; ii++)
7 i/ G4 r! A5 o+ T9 _                theBodyTags[ii] = theBodies[ii].Tag;
0 K) b$ Z) |* _% k* B6 o2 l1 I4 u3 R. v* `8 R. ~+ E
            List<Curve> theOutlineCurves = new List<Curve>();
5 `( s  w$ \  I5 Y            ModelingView workView = theSession.Parts.Work.ModelingViews.WorkView;
" E! H. D7 e( u- u; |) W            int loop_count;
1 ]0 g3 o' `$ i8 ?$ A# g/ ~            int[] count_array;
' M# o5 _/ r# d7 r, A            Tag[][] curve_array = null;/ A$ V& h( h$ o0 u, u, ^
            double[] tol = new double[2];
2 K7 m, e0 f* Z9 W- D
4 m5 {2 }; N$ }0 j            theUFSession.Modl.AskDistanceTolerance(out tol[0]);& e8 g' u- a" g7 N6 g7 Z2 ^
            theUFSession.Modl.AskAngleTolerance(out tol[1]);; d8 f7 r7 k4 T: l9 J7 O
: ~) q# z% T6 r6 A. z
            theUFSession.Curve.CreatePreciseOutline(theBodyTags.Length, theBodyTags,
7 H3 h) p" d: u, |                workView.Tag, out loop_count, out count_array, out curve_array, tol);
% w4 ]# e; B7 ~7 L2 a0 t& n4 W, \7 x- p9 L- R: f+ \) g$ r/ g
            Echo("Precise Outline Loops: " + loop_count.ToString());
; |: K2 g) E, R$ \$ V  b" p, q            for (int ii = 0; ii < loop_count; ii++)4 t3 W+ p" W( e8 a7 J
                for (int jj = 0; jj < count_array[ii]; jj++)6 h. E+ v2 m& b  t
                    theOutlineCurves.Add((Curve)NXOpen.Utilities.NXObjectManager.Get(curve_array[ii][jj]));' ~( g; H' \5 M, j, E' `
            Echo("Precise Outline Curves: " + theOutlineCurves.Count.ToString());
" L2 P9 L& b; ?* X7 T8 H, S1 A6 S" b( r! O- F1 n+ }2 l1 q
            /* If created outline curves can not form loops, use UF_CURVE_create_precise_outline_curves instead * C! I- R: @" A1 E- Y% T$ v
            int curve_count;6 K2 X/ X- Z  _% q% u" D$ d0 h
            Tag[] outline_curves = null;1 ^8 o# T* S" }1 M9 p, \
            theUFSession.Curve.CreatePreciseOutlineCurves(theBodyTags.Length, theBodyTags,
) U9 r! e/ ^( Q# a$ e                workView.Tag, out curve_count, out outline_curves);& o( _0 Q! F7 v) f, ~4 w) d
            Echo("Precise Outline Curves: " + curve_count.ToString());4 I' f1 e5 G3 i1 @) ]9 m$ [
            */
+ g* K- K  X, v# O        }" @0 U9 X: f2 y' d

6 i% |- `* c& ?3 Q9 X    }[/mw_shl_code]
  G# G2 D9 q" K6 F[/hide]
6 r+ X0 U. y6 `/ U" w% |4 u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了