|
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) |
|