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

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

[复制链接]

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

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

admin 楼主

2019-1-17 10:56:35

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

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

x
NX二次开发源码分享: 创建精确外轮廓% {# r# ^* y7 L
# A: W' o5 q. l! X1 M* a/ Y$ z
UF_CURVE_create_shadow_outline (view source)
7 b4 P' s$ n% Q- e3 {# k% |6 p
9 Y( l5 E, ~/ `, BDefined in: uf_curve.h
% h" F: F+ p8 E7 F) s   g( W$ z* x- d# D9 [) W5 d4 R
, N5 B, _1 ]3 }+ o6 K! F0 ]) u( [4 ?% p
Overview9 K; K1 W8 j; W. V2 v5 ~0 U% L; G- N

% H( m: F; f. ~7 N) k/ @Create shadow outline for a given array of solids. Solids passed to this # I+ `' [- T& @% z/ J& M1 C# X
routine must be on a selectable layer and visible. If created shadow curves 5 J, _& G& B2 d6 R7 Y$ X+ J+ W9 K
can not form loops, please use UF_CURVE_create_shadow_curves instead to get & h5 m) S" D  x9 W8 n
shadow curves. * ?. k  g  W- t$ X0 K9 C" v3 a
- t; X2 k) L  }1 F. L8 c

# j1 Z+ n: g. t+ E8 A4 n[hide]
: y. M. H5 m- S+ S2 k$ |7 ^  j  @! I  q, ]7 t
[mw_shl_code=csharp,true] void DoIt()  B4 Q* _; K4 E4 w# J' }# ~
    {# S: Z1 R* j, Y/ Z* G# [: n
        if (theSession.Parts.Display != theSession.Parts.Work)' M" h+ l; o, e! t4 S# Y1 f* I8 ~5 M
            theSession.Parts.SetWork(theSession.Parts.Display);# S7 j( V* y. {" Q+ g  |: L
, E; m3 V5 Z, z' s, W

. [# E5 b( D, l" N1 x4 _        TaggedObject[] theBodies = null;1 Y$ Y7 U, J: z2 K1 ~+ X+ F
        if (SelectBodies("Select Bodies", ref theBodies) == Selection.Response.Ok)
, f7 B6 U; p& g& R* [        {' k9 S2 E9 t6 K! _
            Echo("Selected Bodies: " + theBodies.Length.ToString());
' U  q% e; i% A& ~/ l! A2 W            Tag[] theBodyTags = new Tag[theBodies.Length];
" i: ]$ X' V. g4 X: j, ?            for (int ii = 0; ii < theBodies.Length; ii++)0 k6 n  D" r  V  n+ Y) z
                theBodyTags[ii] = theBodies[ii].Tag;6 y# K4 F$ Z. l  s$ l, `# P

5 f3 I1 \" f' y6 |/ |            List<Curve> theOutlineCurves = new List<Curve>();& ?% @. f6 F4 |3 |* N& t* v
            ModelingView workView = theSession.Parts.Work.ModelingViews.WorkView;  v3 s& x$ _( v# M6 S. o7 p' Y; J
            int loop_count;
5 R8 {6 x, @+ B; h; ?. a0 ^( o            int[] count_array;) a2 B5 E% j. X1 Z4 H% f. S/ s
            Tag[][] curve_array = null;
" ]+ m8 ~& _4 m- [1 ^  b            double[] tol = new double[2];! o1 s9 i- Z/ t

, J: F4 @* J) W5 F. x! Z5 S# M            theUFSession.Modl.AskDistanceTolerance(out tol[0]);
" V1 d: b# I# d0 Q' W            theUFSession.Modl.AskAngleTolerance(out tol[1]);
' {9 K! W/ U1 {- E& T( x6 t" _. |1 _9 s- R* Q7 v! F) J! s4 n
            theUFSession.Curve.CreatePreciseOutline(theBodyTags.Length, theBodyTags,
3 w) x- `# D, K0 y                workView.Tag, out loop_count, out count_array, out curve_array, tol);
, k* e+ c/ ?. v; L7 w' g- V0 z" N7 s5 n! q4 @+ w7 ?. o
            Echo("Precise Outline Loops: " + loop_count.ToString());
, D- l' o! i# F7 A3 g$ R1 t& z            for (int ii = 0; ii < loop_count; ii++)6 E. X$ ~( a3 e* |! j* J
                for (int jj = 0; jj < count_array[ii]; jj++)5 e: r! S) q# E- T7 Q; D: j
                    theOutlineCurves.Add((Curve)NXOpen.Utilities.NXObjectManager.Get(curve_array[ii][jj]));& Y& t2 ?* ]! c) ^, K+ l! j# D
            Echo("Precise Outline Curves: " + theOutlineCurves.Count.ToString());. p/ E; z' V6 |8 H; F4 x% Z( D

+ O& w6 g. c" T# B            /* If created outline curves can not form loops, use UF_CURVE_create_precise_outline_curves instead
0 l- h! B8 H. X            int curve_count;& w  Q" e# t6 R- d: t5 ?- Z
            Tag[] outline_curves = null;) w! U+ _- E  U2 W9 [+ ?
            theUFSession.Curve.CreatePreciseOutlineCurves(theBodyTags.Length, theBodyTags,
" ]  Z: E4 l* W: p0 H, u                workView.Tag, out curve_count, out outline_curves);
* u' m$ f, ?  f+ U, d            Echo("Precise Outline Curves: " + curve_count.ToString());
$ v$ \4 t& z3 c$ `/ H4 K9 [' p# w            */$ l) c2 f- U6 ]0 u$ ^
        }5 T4 w# L: e: |6 y6 A& O; Z
$ Q- g9 Z  N2 g$ E: J, y) Z' m
    }[/mw_shl_code]
. G  L) a, i$ o8 N[/hide]! P* i3 `" ~" o! z5 g7 i" c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了