青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 2917|回复: 3

[原创] C#_UGOPEN_小试牛刀_获取实体的数量

[复制链接]
发表于 2012-5-6 14:22 | 显示全部楼层 |阅读模式
using System; 7 C  V3 @  L2 O' I0 ?- |9 }1 h4 T
using System.Collections;
7 r; p# h" j8 K: v# |4 m+ Yusing System.Collections.Generic;
0 B$ U8 E# z6 T6 A" e0 ?3 y* p' J& t1 p: S3 P( k) ?
using NXOpen;
- z! \9 L& u' s7 Zusing NXOpen.UF;
* u' c4 ~% Y- k* h, husing NXOpen.Utilities; 2 ~7 n  m, C6 {# {% ]
using NXOpen.Features;
: q( H: B5 v6 p" r, h  Xusing NXOpenUI; 6 q: _' [" ?, i: d
. m$ f- P$ z$ n. A( }/ @: q$ i
namespace Get_Solid_count / a& E/ z( ^9 ~6 [/ E* `2 x
{
8 m9 ~  I" S' D3 s; I    public class MyClass
0 S, }# J5 i( A/ l    { ) h0 t$ \, S, X2 _
        private static Session theSession;
# o! S& ^" ?7 I. Y( P4 _0 h        private static UI theUI; 2 P, I* u2 Q0 {5 H
        private static UFSession theUF;
  P' I( E! d" n1 f9 ^% X2 K1 ?        private static ListingWindow lw; ( C6 L" F/ j  z
        private static NXMessageBox MessageBox;
+ e+ s  J6 y9 F- }1 z6 u9 z! l
1 o5 V2 T9 L6 [6 j        public static int Main(string[] args)          //  入口函数 * H$ w2 R* d$ N* f( ~( j
        {
- Z8 g! z0 c' W
$ h$ x3 n: X0 V" a            theSession = Session.GetSession();
+ y0 `9 p) o  m, n. B% _            theUI = UI.GetUI(); , \' G$ K( p. _/ f  v, o
            theUF = UFSession.GetUFSession(); : ]+ V! w# o6 h) n2 {
# ^% l% _/ `- o: p; u
            lw = theSession.ListingWindow; 7 w- s% k3 e& n% [7 t. u) r1 L: m

% k- c* B  {0 s+ V/ ?            MessageBox = theUI.NXMessageBox; 6 {  R% t+ R! J1 F. q- d

9 T/ R+ w" r8 ~            UFModl ufmodl = theUF.Modl; 1 `4 N1 C$ |9 l/ ~; X( K8 e/ a
            UFObj ufo = theUF.Obj;
4 g" Y& q' M# M% i6 I  F7 q# C- s            UFUi ufui = theUF.Ui; 7 Q1 B( G2 ~) ?- T
- P4 N1 G% s8 B9 u# U
            int retValue = 0; 5 F/ F. I- m# w) \9 }
            try
9 s8 A+ x2 E, v1 E            { , z. q# V+ N: t1 `
                ArrayList BodyTags = new ArrayList(); 3 H, Z% S& t2 \) I3 p( w

( b: e9 g: r/ [5 o( t* p                int numberclipped = 0, 0 a; ?( A* E* [6 }5 C9 @. K) r( J
                    numbervisible = 0, : d6 a4 j$ F, _" _+ ]3 H2 w& k( G
                    type = 0, $ u8 H) h/ c* e5 e  {- J+ T* @' S
                    subtype = 0,
% i. @" P- c: ^4 s8 T                    i = 0, j = 0,
3 T- G( L* F, p( |( L1 [* |                    bodytype = 0;
' I/ H; q; v( K. N6 v* s, G% ?* d0 G                //======================================================================
' U/ b4 a5 k: E5 |                //                获取文件中实体的数量
  _9 K4 V0 F7 B0 o/ Y( @- U6 C$ r& y3 o: H  y( W/ w( ~* v
                NXOpen.Tag[] VisibleObjects;
) G/ h5 a4 z9 T
+ r- I2 K. V/ O9 t- M. s                NXOpen.Tag[] ClippedObjects;
  J) x8 {# t2 G: G, v9 n* }- s3 [8 d4 W
                //        只能获取显示的实体的数量
2 X" e" F/ F, o! C                theUF.View.AskVisibleObjects(NXOpen.Tag.Null, out numbervisible, out VisibleObjects, out numberclipped, out ClippedObjects);
7 n5 D7 D1 f5 s" p$ G' X
( a4 o, w" v, n5 V                lw.Open();
$ w0 l$ ^. d( ]" w5 E$ p1 Y7 ?7 j. v  p' A) m# R9 d6 b" u2 R
                foreach (NXOpen.Tag aTag in VisibleObjects)
2 h) r! E; E) }8 M                { $ D" e, k5 F/ }: H
                    theUF.Obj.AskTypeAndSubtype(aTag, out type, out subtype);
2 a1 x9 |, Q1 s$ f' J* |* A: J; A2 p& j
                    if (type == UFConstants.UF_solid_type && subtype == UFConstants.UF_solid_body_subtype) # a9 H2 @. a( K
                    { * H) Z3 A: ~" x" x2 F6 |) p
                        ufmodl.AskBodyType(aTag, out bodytype);        //    使用UF命令进一步判断 ( e' s6 r& e# U, \/ G2 z1 ]

% E& ~. q- B: u8 e+ o9 s                        if(bodytype == UFConstants.UF_MODL_SOLID_BODY) ( T5 A/ [2 s1 E* v3 a
                        {
' d8 x3 F  O/ V                            i++;
' j, i+ E1 Z8 a                            if(j > 215)
/ r) A5 [% B, j+ A, a# b) v2 B) a                            {
" v2 Y" M. X, P9 j0 J                                j = 0; ! _* Y) l7 t. N0 W! `
                            } 0 _2 Q' F- a" Q
                            ufo.SetColor(aTag, ++j);
3 C- t) o9 ^, l% j2 M                            ufo.SetTranslucency(aTag, 50);
( |( r4 e- e. J+ \9 r: N. l: M& `( N" r
                            Body aBody = (Body)NXObjectManager.Get(aTag); : o# J' k4 E8 Y! d: ?

2 V% I! v. v, s                            BodyTags.Add(aBody.Tag); ! a7 e  ?$ I- V7 L$ x
* o: G  s+ I5 E: ~& d/ {4 R
                            ufo.SetColor(aTag, 150);
$ e& n- ?1 k$ I% |! p& q' d4 a- b2 ^+ C" U: Z2 R
                        }
& k/ A1 F! u; z  {3 u8 E% B                    } & {$ A# k0 I/ S9 W$ U; K: i: ?! [
                }
' r( [& k3 v6 v4 \9 H- J! c
: y% V  o4 B, i                ufui.DisplayMessage("Found visible bodies: " + BodyTags.Count.ToString(), 1); & }4 Y: T. t: B' S

% Z1 n/ Z5 Q  V7 O/ V; F2 c- @                //=======================================================================================
: N% `5 x# x9 P2 n3 f
6 s4 U+ s6 T, v! j, C! K+ j/ b                Part dispPart = theSession.Parts.Display;
  d7 C8 h1 O: r2 Q& J                Tag Ntag = default(Tag); * ~1 o2 O$ y' ~3 [5 q
0 ?& F# g; A1 V6 U, a
                Tag ftag = Ntag; $ o4 s5 T- C( e1 x9 j% ~
                i = 0;
" o5 u. o& W; C5 D5 z                j = 0; ' c  B9 e( F( a: t; c% R

1 {, F! z, C- ~, M2 `                //        获取文件中包含的实体的数量
. S: s" k& u" ]                do # Z0 O# C9 s6 w  u. I
                { ; q4 A6 c$ p+ c( A$ _6 }  P0 T% G
                    ftag = ufo.CycleAll(dispPart.Tag, ftag);
( f) V! W2 ~/ _! s" a, E9 F0 {, i1 u3 @
                    if(ftag != Ntag)
. w* f0 I) @# z1 o9 G! E                    { ' t5 q" F7 I# X( w2 p- M
                        ufo.AskTypeAndSubtype(ftag, out type, out subtype); 4 p, v' B: Y: r/ d- }
% K/ f( ^1 R1 U! b: `) w# }' p
                        if (type == UFConstants.UF_solid_type && subtype == UFConstants.UF_solid_body_subtype)
# G" Q( |! H% i! H5 ]+ o$ t                        {
. N. {& G0 |3 S                            ufmodl.AskBodyType(ftag, out bodytype);        //    使用UF命令进一步判断
. J1 i1 v$ o7 i" s7 X4 N1 y) Q9 ~9 Y# r. u( m; m/ M/ Q1 g
                            if(bodytype == UFConstants.UF_MODL_SOLID_BODY)
8 K0 Q* k/ L9 s5 Z8 u                            {
- z; ?$ X. z, F* o4 o6 e                                i++; . y8 y( u+ c7 P; T* H* K

5 T+ M# h8 F( U# p                                if(j > 215) . ?" `" X& z( W
                                {
5 F% s$ d; d. h: Q                                    j = 0;
& T8 g6 ^1 Z- {/ V- L" d4 `                                } 3 U3 ^# d& A( g1 L6 B) w0 x; r
                                ufo.SetColor(ftag, ++j);        //    最大的颜色 216
2 s, y% S: D$ x% n                                ufo.SetTranslucency(ftag, 90); - m3 v8 C! m: {: F$ s, j
                            } 9 S1 f) K% U+ N  Y1 h0 C7 I1 {) W
                        } ; L: C: r8 b, c' Y! h
                    } 4 h# G; Z& _& O0 I$ U6 ?: y
5 v; U9 T& T; Y, |, K, w( ?
                }
4 @' H, `- \3 `8 F                while(ftag != Ntag); 4 ~) \8 Z( o0 }: ~! p

, S: u: c: ]& \2 t/ z5 l                ufui.SetPrompt("Hello ,You are welcome to CHIAN!,Please input Length,Width,Hiag");        //    提示行 $ R0 c  K/ C  Q: O$ m5 u
                ufui.SetStatus("Input value ing");                                                        //    状态行 ' q& h' _* u) d6 f
3 L  n5 j" T+ {. ]7 n  `
                ufui.DisplayMessage(dispPart.FullPath + " have bodies count is : " + i, 1);             //    uc1601
( Z. I' E. J, |/ _            } 8 R- E# |0 S9 B* j/ t2 Y! z* Z
% k, c% J; U3 _, h4 f
            catch (NXOpen.NXException ex) 0 r% B9 y1 J6 n( R. C8 r
            {
* u4 _: U+ }4 i' O7 R% @3 K3 B$ K. q                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message); 1 K) F) f2 T! o& H
            }
& e0 H7 u' i! o& T7 P4 k5 j            return retValue;
0 m1 U8 ]' t8 _        } : a6 |$ E2 z% L1 c' v8 S
+ E# o3 o/ ?0 U# W% g
        public static int GetUnloadOption(string arg) $ j% {' c, v2 X3 {  _9 V6 a
        { # I8 M! K$ Q4 U
            return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
4 P$ Z1 c8 h6 e2 @        } 1 P& U: H7 I+ D' x* m
    } , H2 C( n$ w' f$ Q' Z& z) M
} , A( C3 W9 M5 R: ]# _/ @

! H$ ?% ~- Z( {" h//可直接调试运行
) ^# q9 t4 L) _# C0 B//仅供学习交流! !  (smthan@163.com
发表于 2012-5-9 23:37 | 显示全部楼层
请教高手,刚接触UG二次开发,请教用C#如何通过点构造器创建一个圆柱体
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-13 14:29 | 显示全部楼层
ugdesign2 发表于 2012-5-9 23:37
: L" f& N$ c: T/ ^+ C7 i请教高手,刚接触UG二次开发,请教用C#如何通过点构造器创建一个圆柱体
. A. `  i  h4 e4 @7 K
http://bbs.uggd.com/thread-353862-1-1.html
# O! q0 S& k  I, A6 j(这里有个例子)
回复 支持 反对

使用道具 举报

发表于 2012-5-13 17:28 | 显示全部楼层
非常感谢!!
3 F  G9 a. h0 ]" `, K另请教一坐标基本操作的例子,还望能够指导,先感谢了。" s& K: p2 [) v3 A- W* u: K5 C
002.gif
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2024-6-27 20:39 , Processed in 0.081780 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表