青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2012-5-6 14:22 | 显示全部楼层 |阅读模式
using System;
3 ]0 c7 T& D, J, O. ]; Qusing System.Collections;
' T8 C* i. i! }( `& x$ m( X. g0 _4 Eusing System.Collections.Generic;
1 Y7 F; L( j: {, s6 I
" m. v9 [' f7 v  p: q% S9 _using NXOpen; & N; e& H% a% ^5 ?9 i" t
using NXOpen.UF;   z9 Q; B+ V# l5 D# R9 Q& C; A
using NXOpen.Utilities; # Z' |  I6 u  R: ^
using NXOpen.Features;
. V. ]# E3 W! Q% m+ M% Husing NXOpenUI; % s4 f  w+ N+ r$ e! D" L
; e6 W* Y+ ~3 D" z
namespace Get_Solid_count
; Q" \& _/ r5 D% ]/ ^{ ' J- x( z- C9 n5 t. K/ G
    public class MyClass
! m! t" P' |5 [5 d) }    {
: z* i5 A/ T' N9 \4 @5 v        private static Session theSession; + N4 V$ t  j8 V7 o- }; W# K
        private static UI theUI;
2 c3 O$ B+ `  U" C4 t/ S        private static UFSession theUF;
( G6 F8 l0 E% u: E" o        private static ListingWindow lw;
  Q" k, l  p* ^        private static NXMessageBox MessageBox;
- _, F  x; W" H: Z0 c3 Q8 E/ x
        public static int Main(string[] args)          //  入口函数 6 `9 H1 E  L: s+ k$ E' U# w1 ~
        {
* B4 D" {' K" O6 ?& `8 ~3 n0 g. Z" f6 K! j  v+ `, O* X0 E7 e! P
            theSession = Session.GetSession(); + D9 S1 l% ?4 @7 m- w; s' E- I: d
            theUI = UI.GetUI(); 7 Y, g6 M/ D# @+ M- @4 B
            theUF = UFSession.GetUFSession();
3 W2 @$ A  \% s" Q+ W+ p7 `+ W: h
0 E) [( Z! U5 L            lw = theSession.ListingWindow;
, ?& }: B7 \# p5 W: I6 ]/ E
! c& E7 {7 D* z            MessageBox = theUI.NXMessageBox;
4 Y! B, M( X. G: s% }. T7 F
8 y. s4 V# X& t/ o            UFModl ufmodl = theUF.Modl;
# \+ L$ Y' U, o8 c* _            UFObj ufo = theUF.Obj; * Z  f- B, L- j- F3 Z
            UFUi ufui = theUF.Ui;
5 o7 S* P6 r/ _5 z, u7 R8 b/ f4 C# ^& O# P4 V. K
            int retValue = 0;
$ f7 T1 ^$ t8 R: w6 \6 w, |8 @            try
6 @0 x+ C  m* t9 q: P            { % [) s. i1 N( L4 `5 a/ x
                ArrayList BodyTags = new ArrayList(); / ^7 C# q% l, k: v# B) C1 f

( g' J" C" I% D$ P, v; t( _                int numberclipped = 0, 9 ]' g7 X* S2 x2 U% A
                    numbervisible = 0,
. _8 ~; Y3 l; }                    type = 0,
& {/ w# O' t" U                    subtype = 0, & V( g# b' u( U' I8 ?1 L
                    i = 0, j = 0,
$ u6 n9 {2 p; P7 A; ~' U' ~                    bodytype = 0;
) e( H4 _; L  C                //====================================================================== 0 N3 G% j) k5 }8 M: l
                //                获取文件中实体的数量 / r& ?. D9 t" n' b4 F$ i

6 Z3 K( ~% k. Y# }" K4 _                NXOpen.Tag[] VisibleObjects; 6 X8 D! l% P. {( q! a0 b
  v4 t( Z! |. _8 D
                NXOpen.Tag[] ClippedObjects; ! e7 k$ b) D* X; C7 U( n

; P3 h* f! p7 t' S                //        只能获取显示的实体的数量
. |7 |# O. I& L                theUF.View.AskVisibleObjects(NXOpen.Tag.Null, out numbervisible, out VisibleObjects, out numberclipped, out ClippedObjects); . T' w' s: \' l4 ~# X% E
* c* L" E( f# G& K
                lw.Open();
1 n2 M# f( O7 {; F) _5 c+ D- L5 O) c- n
                foreach (NXOpen.Tag aTag in VisibleObjects) 9 u; t" E7 E  Z  I) R3 c) ^- n# m
                {
2 f$ z/ t/ k4 w                    theUF.Obj.AskTypeAndSubtype(aTag, out type, out subtype);
, P; L1 s# [: P. L3 b. D2 R+ x+ C
                    if (type == UFConstants.UF_solid_type && subtype == UFConstants.UF_solid_body_subtype)
2 e/ H: e$ e6 v" F. i3 ?                    {
! ~4 I- Q  ]% t- t9 w. ^. S                        ufmodl.AskBodyType(aTag, out bodytype);        //    使用UF命令进一步判断 ; `3 ]; s( e  I( V+ Z

8 s. K) S3 V8 d' J% \* ^                        if(bodytype == UFConstants.UF_MODL_SOLID_BODY)
$ y8 C. l, G3 L7 F2 a- w8 T                        { 2 m* b  `) S  z6 N- e
                            i++;   _+ ^4 l: F& N
                            if(j > 215)
, Y( q+ O+ i9 Y4 \                            {
% J& w5 ]# L8 K/ V! l9 t9 p                                j = 0;
$ n4 S2 o# U5 b) M9 M3 T# D1 }                            } % N! N1 Q6 T4 i4 L! n6 S
                            ufo.SetColor(aTag, ++j); $ i) ~, z! r1 W
                            ufo.SetTranslucency(aTag, 50);
& g5 l8 q" O1 p) D
! h1 ^! {: Y* J% a3 L7 V1 h+ w9 |                            Body aBody = (Body)NXObjectManager.Get(aTag); ( q. ?: M) `0 A) ?+ x. J0 E. {+ F
4 a3 i6 C- U' `- h
                            BodyTags.Add(aBody.Tag); # v6 w; b8 k, k: z

3 M+ |" F* s1 T2 r                            ufo.SetColor(aTag, 150); 8 i; D* g4 q6 w" T* J! B. B) T3 h6 s
- I" }8 k/ |. Q4 B1 N  B: K
                        }
- r2 B7 {* V" ]                    } ; F# d$ c2 D# V# Z
                } . b4 W/ H, _' L# i- J3 c8 ~- l

; J0 N) x6 m! p" ?5 i+ a/ j4 c+ b                ufui.DisplayMessage("Found visible bodies: " + BodyTags.Count.ToString(), 1);
) h" b" S; y  K& M& t
# ?8 U8 P$ t: A' w& F                //=======================================================================================
8 ], J1 F+ e4 U8 r# G8 b5 S3 A* s% o; H
                Part dispPart = theSession.Parts.Display;
) {. @) Q* E/ K) z                Tag Ntag = default(Tag);
8 r" K& a- X) c) m/ c/ S" r4 t# C
- q, i+ y0 U4 g2 Y- i2 x/ V2 o( b                Tag ftag = Ntag; + X* V) ?3 H& i: r' c1 W. \
                i = 0; , N, K! X6 ^" K4 H
                j = 0; 2 e2 P* T1 @" a2 V7 D: l
' H1 J! [7 Z- O+ B4 e
                //        获取文件中包含的实体的数量 ( z4 e9 L$ M5 O  a& p, {
                do + Q9 S& Y, D7 a9 t: }& l0 T+ H
                {
% C0 U. |3 B: O                    ftag = ufo.CycleAll(dispPart.Tag, ftag); ! e+ Q9 d) e# m& p! K

' a  e, ~, M! E8 V3 v                    if(ftag != Ntag)
/ ~% j6 I" ~. _6 `/ }6 |- w: o                    { % @  ~' P/ ^  Y& r( M' Q
                        ufo.AskTypeAndSubtype(ftag, out type, out subtype);
8 ^; v- S8 Q$ X- r7 T6 t4 d% ~) R9 U/ I  r; h; z! K$ `0 y9 I
                        if (type == UFConstants.UF_solid_type && subtype == UFConstants.UF_solid_body_subtype)
4 o) S4 y4 x! P% y. E! o4 _                        { & E- G& n' N' X. J  b
                            ufmodl.AskBodyType(ftag, out bodytype);        //    使用UF命令进一步判断
" _. g6 T: s$ L; E$ l- v3 m$ r  x; d
                            if(bodytype == UFConstants.UF_MODL_SOLID_BODY) 0 x! D! O: D, N% G: L- `
                            {
# A  }8 Y. G' a                                i++;
. r, `# ]3 R" W1 K0 n- I
( d+ E: k, y6 [: l                                if(j > 215)
2 j( x; N. r# Z8 Z6 Y                                { " }, c9 {$ z6 s3 ]7 P5 ~. P
                                    j = 0;
0 i/ C1 L  c) K$ ?; T" Y* \                                }
8 |- F% K$ f! g- \, ~1 Y  g0 J3 o                                ufo.SetColor(ftag, ++j);        //    最大的颜色 216
& R* F' g% k9 I2 b2 {' t  }+ q  g& L                                ufo.SetTranslucency(ftag, 90); + e: _# [; c! n6 J3 T
                            } + f9 D7 L( B+ P0 E0 m
                        }
; G1 `* u' A: J# P                    } 2 w$ y+ N5 N, r

" v, F+ y+ E/ ~2 `/ [/ o2 I' u! G/ E                } , ]* v1 k5 Z3 F4 L( |! X
                while(ftag != Ntag); : X8 }8 a* S" z) F
8 v# M/ D* |- c- Q" Y& L" @
                ufui.SetPrompt("Hello ,You are welcome to CHIAN!,Please input Length,Width,Hiag");        //    提示行 " P0 Q' B1 a$ t
                ufui.SetStatus("Input value ing");                                                        //    状态行
. q4 H- g1 t( i: ?# @( J; W( `0 l; x9 m2 Q% m/ s( w
                ufui.DisplayMessage(dispPart.FullPath + " have bodies count is : " + i, 1);             //    uc1601 2 Y4 {2 w: \: M1 U) S
            } + Z# }5 r* K  y

: L9 w4 h3 s: [6 G- s* k% O# g! q- @            catch (NXOpen.NXException ex)
8 ]2 }) r( m. T3 T            { ' Y- `) J& I4 E1 ~
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
' I' @0 i* g* _/ X+ B            }
3 P; Q( B8 C# O- S9 t5 R+ x            return retValue;
2 j- g+ f& @, S) \6 ~' f        } / e& r1 `  E9 [7 F/ U
6 `. [8 H' N* e5 S
        public static int GetUnloadOption(string arg) - u! p2 c+ {: k6 t2 w$ P. D* N
        { ! P, T" i8 [# X  Y+ x
            return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
# S7 a- ~! q+ ~( C        }
6 K3 ^) _& s, Q9 w    } 6 Z- b/ ~3 D3 H; g" J
} ; }3 E5 ~3 m" O4 G
! m/ n; r2 t9 E" _& }& D4 j
//可直接调试运行0 t  L( q# w7 m& G
//仅供学习交流! !  (smthan@163.com
发表于 2012-5-9 23:37 | 显示全部楼层
请教高手,刚接触UG二次开发,请教用C#如何通过点构造器创建一个圆柱体
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-13 14:29 | 显示全部楼层
ugdesign2 发表于 2012-5-9 23:37 6 f" G  f: z; j8 B
请教高手,刚接触UG二次开发,请教用C#如何通过点构造器创建一个圆柱体

4 N- p( z' g! U# y3 Xhttp://bbs.uggd.com/thread-353862-1-1.html3 x* [. Y% j- }" o! X! ]8 d8 }
(这里有个例子)
回复 支持 反对

使用道具 举报

发表于 2012-5-13 17:28 | 显示全部楼层
非常感谢!!1 \# w# |/ B9 s4 M$ w& Z; i8 Z
另请教一坐标基本操作的例子,还望能够指导,先感谢了。
* M  U6 \8 W# i
002.gif
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-7 14:47 , Processed in 0.109073 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

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