青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2012-5-6 14:22 | 显示全部楼层 |阅读模式
using System; # _5 Q" q2 S+ s' a; |$ f/ q' v# V
using System.Collections;
$ ]6 u0 U9 a. m) g/ G) N4 a& Lusing System.Collections.Generic; ! U- J( c. R6 M6 c+ T' O5 X, h
  N" q) [6 |6 H6 U: _
using NXOpen;
! e0 I# S& R/ U4 s( O4 kusing NXOpen.UF; / J( D# T0 B+ k1 u% A
using NXOpen.Utilities;
* u/ I4 j- T# x5 k+ }2 ousing NXOpen.Features; ; S3 w9 O& R' m' U* {, V
using NXOpenUI;
. Y3 D" d# o4 c: ^- w% x6 a. U+ i: ~0 D
namespace Get_Solid_count
( y& v& y. A9 o6 V+ n{
  B6 y! p) B& o" h% b8 E$ i2 W    public class MyClass 1 v9 }' u( V! B& F& K
    {
) w! k% x! f* {/ r        private static Session theSession; + k; r+ n2 R' `+ o5 w
        private static UI theUI;   z' e) S  U  _8 q$ C8 U' B
        private static UFSession theUF; - \9 Y# K) q0 J4 c
        private static ListingWindow lw;
/ s: i- F& X. W9 B" S        private static NXMessageBox MessageBox; 0 \5 I5 a9 A/ v6 T2 P

9 N, V7 K' @" W8 P4 B2 v3 Y" J        public static int Main(string[] args)          //  入口函数
' w$ I, j8 f1 S7 y1 \  d7 o        {
/ x5 G0 s  o5 G6 I! a/ X+ \% Q1 z6 U# o- C5 c
            theSession = Session.GetSession();
7 E( C" e# k- U2 O            theUI = UI.GetUI();
: ^+ h1 e; A: O3 _            theUF = UFSession.GetUFSession();
# {: p8 W( o$ \9 z1 [. u+ m2 H& @6 a
            lw = theSession.ListingWindow; ' B7 }* C4 i( G2 x# ^$ ?

$ M, x9 ?6 E( E; P+ {6 d" ^            MessageBox = theUI.NXMessageBox;
8 l" f4 q6 y0 g+ t- J
4 h3 o- c) c/ P- }# a/ g7 p4 a            UFModl ufmodl = theUF.Modl; 0 L! M% z* N6 c  y0 B
            UFObj ufo = theUF.Obj;
1 K$ W: C) @5 D+ t6 z8 v            UFUi ufui = theUF.Ui;
9 q! J" D" ~# x. h8 S
" O3 T' P1 |6 e6 _; a            int retValue = 0;
6 ^$ E8 u" K5 I& R. I* t            try 3 \3 G% I: O# h* B9 Q& m& m( ?
            { / a& Q, X/ y) c& E
                ArrayList BodyTags = new ArrayList(); / U. E( ^8 D7 B1 ?

) d/ @6 n0 l4 a* s/ S/ H  M                int numberclipped = 0, ; ^; f9 ^! K% {2 E' D
                    numbervisible = 0, & G" C8 q, T: @! {8 Q
                    type = 0, ; x. O0 j+ I; s, _" Q
                    subtype = 0,
! p- N) o0 [, N                    i = 0, j = 0,
0 e5 G* I# \6 z; U. X. Z  t                    bodytype = 0; 8 N/ }5 W4 v; Y! g- E( g
                //====================================================================== 2 H$ f8 I: c+ _) [' b
                //                获取文件中实体的数量 2 _, ?  d' p) b/ ~4 [) I; m
2 Z4 C2 C# }; p) I. w7 p& S" y
                NXOpen.Tag[] VisibleObjects;
! C2 {& E# q$ N
! E8 J1 ?. Y7 Z, u0 w( u' I2 M                NXOpen.Tag[] ClippedObjects; % J: B# c/ T5 Z. U0 u
$ X0 Q1 a- \5 j' ^/ z! X6 u" T7 v+ d
                //        只能获取显示的实体的数量
6 }/ Y) c$ _% Q8 j$ a  B                theUF.View.AskVisibleObjects(NXOpen.Tag.Null, out numbervisible, out VisibleObjects, out numberclipped, out ClippedObjects); 6 V1 ^8 f* ~" V' k2 t
; [4 W$ i, ^4 `2 E
                lw.Open();
7 C& i3 E0 y1 j. B  Q. _; W1 k1 x. B) s' S: L$ c+ ]
                foreach (NXOpen.Tag aTag in VisibleObjects)
2 i4 `% G- j9 p& R                { * F$ p( ]( q4 ?& w5 g1 U1 f3 l  O
                    theUF.Obj.AskTypeAndSubtype(aTag, out type, out subtype); 6 U& n$ _/ }) ^, m/ m. o* j

- W, T+ y+ {- a6 t: B2 D, u                    if (type == UFConstants.UF_solid_type && subtype == UFConstants.UF_solid_body_subtype) / Z! S5 m% t4 {% n
                    { + J  m& L8 d' @: M  d
                        ufmodl.AskBodyType(aTag, out bodytype);        //    使用UF命令进一步判断 ' l* Q5 q4 Z1 E$ J$ J) R

, K5 V, }  k, A3 V1 T/ j; |                        if(bodytype == UFConstants.UF_MODL_SOLID_BODY) 3 D* y6 l3 V8 U+ y0 S9 k9 @
                        { 6 s2 V% ]- @& {9 }' Y5 S
                            i++; % U' x/ {# Y4 `, E( N4 A; a
                            if(j > 215) % ^5 k# D0 a7 E) L( x! l
                            {
& G) z0 v+ r* _: \                                j = 0;
6 j  R9 s) a' a                            }
/ P( Y  {  N2 p! _+ e# w                            ufo.SetColor(aTag, ++j);
# v& h4 T7 Z  }                            ufo.SetTranslucency(aTag, 50); , g/ u! G8 r, O! L/ a  c
( C1 x* k7 Y0 l% r, z
                            Body aBody = (Body)NXObjectManager.Get(aTag); 4 ^5 u4 A4 v& d: f7 r
$ V2 b5 K$ |4 U2 M+ A9 ?4 {4 x) {
                            BodyTags.Add(aBody.Tag); 2 r9 |' |8 g3 z

  a; ], ]8 \) T* t" G  P                            ufo.SetColor(aTag, 150); $ _. W  h- P5 R9 Y$ M- G
1 c8 b4 D: J0 p4 s8 J
                        } 5 [. V) ]+ `2 h0 S, [
                    } % ]9 b" k* I7 _
                }
0 _' M. O1 x  n' Z& r2 \' q+ a; b4 U! |
                ufui.DisplayMessage("Found visible bodies: " + BodyTags.Count.ToString(), 1);
- m  F9 s4 x; Y2 i) }/ ]% D& L8 }8 [. y7 N- R
                //======================================================================================= - k5 G6 y2 j  s8 ^

' _0 [1 D' U2 W/ F. @4 s' i- R  v                Part dispPart = theSession.Parts.Display; ! T5 \: Z5 |, g0 u* P5 o
                Tag Ntag = default(Tag); * G( _) W; V+ k% @5 F) M

3 @+ I0 s( l; Y# s6 I& _                Tag ftag = Ntag; 0 P( c6 e/ M4 W! Y
                i = 0;
: G( F0 e8 E7 l& _                j = 0; 7 `  I4 O+ K7 @# w4 ?0 N

/ N) c5 r( I( }0 n0 x# H' z. V                //        获取文件中包含的实体的数量
7 {+ m' @7 j. Z0 g0 V                do
0 `- c1 z) v( O" ]$ F0 \                {
1 K5 ]2 K. {1 I  m5 q                    ftag = ufo.CycleAll(dispPart.Tag, ftag); ; a( d; V: D* w5 k. B! k& ]

! N8 `( A, q" V' Z                    if(ftag != Ntag)
- X# \! Q" H+ E; s; g$ ]                    {
  M+ p" O. _/ A9 W& p/ t, s0 _                        ufo.AskTypeAndSubtype(ftag, out type, out subtype);
  A5 ^7 F. W; I6 A
" J/ l+ t8 W( }$ J8 Q4 W                        if (type == UFConstants.UF_solid_type && subtype == UFConstants.UF_solid_body_subtype) & e  {9 M9 K$ X  n; j, k. h, `
                        {
9 |) \& p( X9 a% I5 E7 L                            ufmodl.AskBodyType(ftag, out bodytype);        //    使用UF命令进一步判断
5 ~' R; x0 x& G* ]" {. }! r/ T8 y* v8 s  b# q5 D/ W" i: h4 S
                            if(bodytype == UFConstants.UF_MODL_SOLID_BODY)
& Q) I8 A2 Z) N                            { $ h/ ~3 K2 E: K
                                i++;
  U1 Q9 s" ]! V1 O+ v" m2 ?, M* ~* h% x* n4 v: X
                                if(j > 215)
. L, X- H# @/ P* e: o4 t% ^                                { % A/ V$ E. H. k, Y% s' f# l
                                    j = 0;   I; Y8 s3 }( v" D- y
                                } , {5 S+ l" R! P
                                ufo.SetColor(ftag, ++j);        //    最大的颜色 216
; r5 ?: e: k0 d0 R                                ufo.SetTranslucency(ftag, 90);
1 s9 r. R# q" T$ P! b* K2 D$ g' R                            }
5 A+ h. O4 K. X( z$ c/ C1 G                        } 8 h# H( h+ F" C
                    } 8 z6 x1 B! {, I+ x5 r

. i7 _) D. G) P2 O8 @5 d& M0 Y) h: n                }
, |- g  d( u1 J% r  ?6 f                while(ftag != Ntag);
" x9 H( r2 }! \* C; f$ f- W! q, |) W9 f* {. z7 i6 J* F  j
                ufui.SetPrompt("Hello ,You are welcome to CHIAN!,Please input Length,Width,Hiag");        //    提示行
/ D: A2 o+ N8 L  p# Y! M7 L+ S) R                ufui.SetStatus("Input value ing");                                                        //    状态行
: D" ?+ S3 v6 K2 F* t
3 A( q  K( [6 a$ P& F' j& p+ S' |                ufui.DisplayMessage(dispPart.FullPath + " have bodies count is : " + i, 1);             //    uc1601
, c- j5 h0 T* W! c            } . h' u% ^% F$ e9 l& Q

+ s, A0 W  ?5 y* `            catch (NXOpen.NXException ex) 7 G- t3 K$ T) S: n: P
            {
, G$ ~0 `' o; X/ ?                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message); 9 u/ P3 G" ^; x' M. i0 A; ~
            } 9 y  c  j4 v0 R- \" z5 T* H4 J
            return retValue;
: x% ?4 w0 y* a% i, B7 v3 P' S% \( |        }
8 P( O5 ?: N6 H) O; X7 X; k6 n4 Z  X1 S$ R! |
        public static int GetUnloadOption(string arg)
; D$ y- s2 n! R; b% r        { 3 b0 o2 N3 p# M  t
            return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
  x$ m( S/ ?6 B% ]1 X: x2 ^) h- R& C        }
* X! S: \" h+ Z    }
) _7 D' M5 V) a6 d3 b3 @' I}
7 @" Y$ \$ o( ]# i, G* y$ I4 F* z/ ]& X8 y7 u2 K
//可直接调试运行
& W$ N7 h1 z4 f1 T! Y  |# F' _//仅供学习交流! !  (smthan@163.com
发表于 2012-5-9 23:37 | 显示全部楼层
请教高手,刚接触UG二次开发,请教用C#如何通过点构造器创建一个圆柱体
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-13 14:29 | 显示全部楼层
ugdesign2 发表于 2012-5-9 23:37
# V* e. s, x' z  s, A请教高手,刚接触UG二次开发,请教用C#如何通过点构造器创建一个圆柱体
) m2 q9 v& n; k0 R4 b, D" c
http://bbs.uggd.com/thread-353862-1-1.html
* |+ X( }4 ^& ]" _(这里有个例子)
回复 支持 反对

使用道具 举报

发表于 2012-5-13 17:28 | 显示全部楼层
非常感谢!!
8 p5 o! U+ K* q" v. J2 n5 T另请教一坐标基本操作的例子,还望能够指导,先感谢了。9 x7 s: T) M" @' w; G3 @8 W
002.gif
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 19:42 , Processed in 0.215179 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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