青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2012-5-6 14:22 | 显示全部楼层 |阅读模式
using System;
! V. t/ X( F3 S8 G: @using System.Collections; % |9 i+ g# Y- `" A2 l: w
using System.Collections.Generic;
: \6 y# l1 K! x% b; A0 J; C/ ?, u! G4 {2 T- }- {
using NXOpen;
: \4 l8 _' m1 W! {0 i; Fusing NXOpen.UF; $ b, G; r2 `" f& ]* T, E6 J
using NXOpen.Utilities;
  ~# R8 I) t7 {; s) y, Ausing NXOpen.Features; / f/ x0 X7 F5 D* n- i7 A. |3 R
using NXOpenUI;
2 E2 q& {. L6 n
( L1 A/ m) l; ~- b7 Znamespace Get_Solid_count * t, Y! x1 ^4 I  ~6 A, ?2 c
{ 5 Z/ W/ T' U' I+ r
    public class MyClass 4 f, q0 q' x. m. d
    {
7 V: x! z/ n, U0 l        private static Session theSession;
0 i" P( I' K. w& t        private static UI theUI; 0 w, I, U; a" P% w+ G) h' u7 D& @
        private static UFSession theUF;
& o2 G- E; e) {: j        private static ListingWindow lw;
/ G+ B( W+ j' @+ ]6 z4 J" L* Q' }        private static NXMessageBox MessageBox;
9 V3 u( j$ i3 W! w: X- Z  {% C" p
/ z: g6 i& M" i. t' N. C+ Q        public static int Main(string[] args)          //  入口函数
$ f9 y/ J: R! L. Z% K8 Z        { % L; i2 z; D0 y/ ?% @' `- {+ T% i- @* S
7 K- Y3 y4 a+ n- o
            theSession = Session.GetSession();
7 Y! ~7 ?  i( x1 Y% C0 @            theUI = UI.GetUI(); " K* h3 m3 [6 n/ @: J
            theUF = UFSession.GetUFSession(); / d4 \' ?: W4 H2 D' D
* T& j" G$ c% W5 C
            lw = theSession.ListingWindow; ' B. {0 T4 w5 o2 S  F6 S* f# c( z

. Y$ a* M) t7 [/ p0 h) o/ D+ L! X- x            MessageBox = theUI.NXMessageBox;
- U- W( a7 M$ D, F& t/ B' d8 ~& e8 r# r, w- @. F/ l! ~
            UFModl ufmodl = theUF.Modl; : O9 R% S' U* W" i( C- I
            UFObj ufo = theUF.Obj;
/ Q! O; w5 f/ Z. z5 p            UFUi ufui = theUF.Ui;
0 x  @7 L: S& H% l
' ]! R0 E7 U- B            int retValue = 0;
% _8 m, p5 B( k2 P            try
/ `7 M& {% y- O& F            { 1 Y" X$ O+ O4 z4 v* M9 t' q4 c
                ArrayList BodyTags = new ArrayList();
- `0 v! O# L! {' p# G9 W: x8 W2 I, ^$ F; P: w/ q
                int numberclipped = 0,
+ K3 X+ a. x: o( m0 F$ u                    numbervisible = 0,
' P  Z& V% P2 S; `3 n4 a1 V                    type = 0,
7 Z/ {; h0 x0 s# i; C- J5 a& g                    subtype = 0,
+ O0 j' r- v, L" P9 c7 \                    i = 0, j = 0, 0 _0 f5 Q5 ^: B- b# ~6 q
                    bodytype = 0; 1 Q- z" W3 u; H" d8 d0 |
                //====================================================================== % _# F( d& W' U* }* d4 B0 x# ]8 O
                //                获取文件中实体的数量 # T5 I+ G. Y6 V) F( e

# m! e/ s" M) Y                NXOpen.Tag[] VisibleObjects; ! t* l+ {! Z+ h5 X/ S

. i' U+ `- W& E5 T* t, y6 L3 D/ Q                NXOpen.Tag[] ClippedObjects; 2 v, S: [, m5 B7 r

" [0 V" \) i9 T6 M; L/ ^+ f                //        只能获取显示的实体的数量 ) B: `, ~/ m. Z
                theUF.View.AskVisibleObjects(NXOpen.Tag.Null, out numbervisible, out VisibleObjects, out numberclipped, out ClippedObjects);
, @/ K* \; {4 B! x' B. M# H' F! |) G
                lw.Open(); 7 Z3 P) }3 Y, j& h

: @/ N! T7 o, U9 Q  A, g+ o                foreach (NXOpen.Tag aTag in VisibleObjects)
( E3 k. P. C- M* p* k                {
  q4 W+ ?& I& j; z5 y% ?: b( d                    theUF.Obj.AskTypeAndSubtype(aTag, out type, out subtype); / _* X7 N9 q* O

  W- u# I1 H- L% y+ J5 f                    if (type == UFConstants.UF_solid_type && subtype == UFConstants.UF_solid_body_subtype)
/ U& {$ X# z" I  _% i! `$ s& S                    {
' G# [0 I2 W9 ~                        ufmodl.AskBodyType(aTag, out bodytype);        //    使用UF命令进一步判断
4 W3 z7 Y/ q% ?) S8 F  D8 M' G7 [" K! t- v4 B; r
                        if(bodytype == UFConstants.UF_MODL_SOLID_BODY) : l# r/ K. q9 _, Y* K# E
                        {
) y' {$ I) `3 y2 J7 i7 N                            i++; " m: H- m$ H* v( c
                            if(j > 215)
, y5 w: O) W& p0 _: D3 b' G4 x                            { / y3 d7 X3 H4 [$ S- `' y% ?  I) M
                                j = 0;
5 U5 h1 v2 }2 B) i4 u$ `4 L                            }
) q9 k) Y8 b7 p) g6 x3 T                            ufo.SetColor(aTag, ++j);
3 J) R% w3 B9 a, H9 M; F/ @                            ufo.SetTranslucency(aTag, 50);   p5 x1 u4 u# t* Y( g1 \0 X

4 y8 ?) X% L5 O; `$ f' w                            Body aBody = (Body)NXObjectManager.Get(aTag); + Y" Q2 T7 k; \' F# p7 r6 ]

+ |6 i) f& @  u5 [4 t" J3 f$ ?                            BodyTags.Add(aBody.Tag);   v  K9 D# V* L" r' [( L6 K4 ?3 b

5 d8 m4 u( ]( ^7 }                            ufo.SetColor(aTag, 150); * F/ @; a6 X& i3 o, ^
. V- V7 O4 m2 T, f  Q7 q( g8 c
                        }
7 o1 P% e/ B; v7 w% U                    }
7 Z6 T9 D0 O' o  z                } , q2 E/ v1 w- K0 J7 [: U9 l
7 Y) s; O, a# \3 a' Y- }9 V
                ufui.DisplayMessage("Found visible bodies: " + BodyTags.Count.ToString(), 1); % I" w5 h# u9 `, o" c1 ?: f/ K* Z9 b9 s
; U4 m' o6 C/ C8 [8 N) U2 C9 d: i
                //======================================================================================= : Q5 Q$ M2 e. `; W. Y5 r( b1 j

* M/ W4 F# b2 A" G6 J                Part dispPart = theSession.Parts.Display;
+ s. k. O5 D4 U' P                Tag Ntag = default(Tag); - \( ~$ O. J( z7 q1 {7 u: ^

7 d9 C% B* g- s                Tag ftag = Ntag;
4 ^3 T: u9 v0 M9 `* m                i = 0; , `6 c2 _2 N3 H5 P  u9 G/ i8 J! T/ [
                j = 0; 7 I8 u# O. q  ]
, E  X* S5 I7 r! A6 a' m! E$ P' e- o
                //        获取文件中包含的实体的数量
3 z; P2 ]$ l' V. b                do 7 s, }: Q/ P2 r' u7 k8 |) X
                { % t/ _9 w& A& Z& F
                    ftag = ufo.CycleAll(dispPart.Tag, ftag);
! g/ x9 l$ a6 g7 F2 b& b: W6 F# A8 e$ |1 R* c$ ]
                    if(ftag != Ntag)
0 o( C0 A  W1 z4 y8 h, D. y                    { 7 g' p8 H1 A" h7 a% k/ i
                        ufo.AskTypeAndSubtype(ftag, out type, out subtype);
- O- d2 Q, q3 {& ~* g9 u1 e+ t% g% R, c3 m( y7 \
                        if (type == UFConstants.UF_solid_type && subtype == UFConstants.UF_solid_body_subtype)   H, y+ B* L# ~+ o* C" b5 j
                        { / u' @9 b  R8 W2 e6 W
                            ufmodl.AskBodyType(ftag, out bodytype);        //    使用UF命令进一步判断 9 W" X5 w5 ^+ H( i
1 Y: q. i4 y. r+ N$ [' L  b2 l
                            if(bodytype == UFConstants.UF_MODL_SOLID_BODY) . D  w6 p5 e3 D' Q' b& G
                            { + d, S+ G  {) M5 f, P
                                i++;
/ ]5 R3 [3 p3 _( \1 X6 V3 [$ \, [9 f9 A
                                if(j > 215) 6 d3 X8 J7 N9 e, t5 W0 c! l1 q
                                { 3 N3 L& Y/ v$ p. `6 j8 g0 n
                                    j = 0;
9 r* V1 S7 f6 x( X0 r                                } 0 g- q  Z5 k0 C
                                ufo.SetColor(ftag, ++j);        //    最大的颜色 216 6 i; U- Z; @9 k& G' X4 v
                                ufo.SetTranslucency(ftag, 90); . e8 S% I5 v: R: ]2 P3 P
                            } + o$ C0 s& B, z/ ^! E$ E! O
                        }
; G  H0 E4 h: C. m9 n                    }
$ Q* z; K1 L; q$ z4 Q% \. D9 A8 m
& G: c" |. t* x; y$ z                }
5 @7 o6 E8 s  @+ F                while(ftag != Ntag);
! R. T0 J: i% E- z/ B- {3 p: s" f7 k: [3 {6 e7 w9 Q& [  k/ x- [0 m, R
                ufui.SetPrompt("Hello ,You are welcome to CHIAN!,Please input Length,Width,Hiag");        //    提示行
. {! o! h+ n9 k( ~                ufui.SetStatus("Input value ing");                                                        //    状态行 0 a: [: C: q6 y: `+ x
( H( f( Y3 W6 U. J
                ufui.DisplayMessage(dispPart.FullPath + " have bodies count is : " + i, 1);             //    uc1601
$ p8 b7 S+ ?6 m3 D            } ) Y: Y/ e3 r% A* r" l7 V
) {& v' t+ W2 W4 J/ Z/ c
            catch (NXOpen.NXException ex)
; {. o/ u' g8 u9 }+ }' v            {
5 r: M! Q6 q" s& P9 L4 s                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
+ G/ O6 `- S' i; V; x0 s            } $ V/ g+ s. {+ b# a) M3 c
            return retValue; 0 Y2 p8 i- b8 e: K1 ~
        }
4 L$ I* T4 l: ^  C9 h8 ^. A
) _. ?8 _5 x7 l( w: Z- d! K2 k9 m. {6 N        public static int GetUnloadOption(string arg) 2 E, v9 \5 d$ D4 g( v, w4 a# t0 \
        {
, x& c$ }5 C! n- r0 M/ x  [            return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
# l  E& |9 z  K% I$ C        }
  T& D- s- a1 q3 g* h    } . D9 a; I( s/ P) }8 N7 D) `2 v# b
}
7 r+ x: K5 o3 v4 B# N: q2 C) x7 w1 v1 J1 U2 D7 Q
//可直接调试运行
( {/ O  ]0 O4 c9 c8 h- \  v//仅供学习交流! !  (smthan@163.com
发表于 2012-5-9 23:37 | 显示全部楼层
请教高手,刚接触UG二次开发,请教用C#如何通过点构造器创建一个圆柱体
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-13 14:29 | 显示全部楼层
ugdesign2 发表于 2012-5-9 23:37
1 H; U! q: z  U( Q2 u$ h5 p% e请教高手,刚接触UG二次开发,请教用C#如何通过点构造器创建一个圆柱体

, q7 D0 F  Z" O  q; W& d8 w) Z# Lhttp://bbs.uggd.com/thread-353862-1-1.html% y5 S6 G  y5 K. i3 N. ]5 P5 X& s. d
(这里有个例子)
回复 支持 反对

使用道具 举报

发表于 2012-5-13 17:28 | 显示全部楼层
非常感谢!!
3 G" q+ L% T: \1 b' b0 @另请教一坐标基本操作的例子,还望能够指导,先感谢了。
& w# U- k, y1 E5 S# G
002.gif
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-12 21:03 , Processed in 0.206020 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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