查看: 2509|回复: 0

[二次开发源码] NX二次开发源码分享: 如何判断当前零件的类型,很聪明...

[复制链接]

6

主题

4

回帖

60

积分

管理员

积分
60
发表于 2018-7-27 11:00:30 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

×

, s3 k& _  b1 h" P) W& L' G5 D: |, j- D( e0 ]; G9 l# O7 o
NX二次开发源码分享: 如何判断当前零件的类型,很聪明...; \& W, x& T  j' s5 `

) N. W2 }5 l) U& u0 q0 v; A
$ A" j& U: N; }
大体思路如下!!
; m, D3 Q$ l1 i; a# Q
# h: M7 b4 s4 Z. H2 d4 C7 |+ n0 q2 l# U/ ~' X
   enum PartTypes {Empty=0, Model=1, Drawing=2, MasterDrawing=3, Assembly=4, Undefined=5, MasterModelDrawing=6, Invalid=7};
" y# s' X1 P' m  
% N  v) V/ e$ H- D  void DoIt(string[] args)
5 t( L! L6 R/ E9 g4 C% v8 E/ V    {
  N* B+ l' j1 U$ I2 I0 G        Part displayPart = theSession.Parts.Display;+ p4 u1 _5 G/ k; f
        if (displayPart != null)
+ \0 v4 R  q3 K% ~/ ?% c7 b. y# K: T        {
& e7 U  M  M$ t1 q, N: f% |7 R            GetPartType(displayPart);) o4 n( a' H! e# e  O% D' z
            return;+ n1 x" m+ e6 u
        }
2 c$ G: ~: f2 X6 K8 x/ u: \! B2 M7 A

  x) ~- M% ^* o* y+ @1 d( ~        for (int ii = 0; ii < args.Length; ii++) 9 J8 Y7 F) B- P& p+ T
        {
' }0 q* z& w5 I5 n- E4 f            Echo("Processing: " + args[ii]);
' H7 Q* Y; g8 S2 i: O4 D            try   f$ H# g5 ~! j+ P6 ^* v- w" j  }
            {2 t' Y' O6 {0 [  T5 o
                PartLoadStatus loadStatus;: f! Q9 M9 |5 r: ~9 j8 w
                displayPart = (Part) theSession.Parts.OpenBaseDisplay(args[ii], out loadStatus);9 f6 ^) P2 \8 c" B+ J: J5 A" Z
                reportPartLoadStatus(loadStatus);
# {& i+ t" m7 M4 B' l6 C: b
9 B2 `0 O9 \- u. ~" ^$ [  v

: `: \- {# B$ y& ^) E+ H7 s                GetPartType(displayPart);
5 O" Y6 F. D7 L, Q  Q2 u7 g* _. b
! J* w, {4 G3 k$ R$ C

- }( {$ l& n+ _6 E5 I5 I                displayPart.Close(BasePart.CloseWholeTree.True, BasePart.CloseModified.CloseModified, null);
- Z  J; n' m6 `5 J6 M            }: S) C% k- Y& }$ N" S* d+ k$ `0 ]% i) G
            caTCh (NXException ex)
2 b+ E3 {* a# }* V" H8 N            {8 [0 J1 H: s; F! Y+ f+ B: p
                Echo("   " + ex.Message);' O0 x0 f& K! }" i$ C5 N$ T. S$ p- g
            }
/ N8 Z( y( Y/ D: y" }1 ?        }
! v* d5 S9 f6 O2 v' c    }4 p& d/ N4 C9 W! t! V5 `
8 B, C9 z  G6 s5 W8 j$ o7 |
2 T8 h" C) L& u
    void GetPartType(Part thePart)
, t/ b  X8 }9 w  m    {' f8 C% S5 d( q: I8 Y, S# l% _! h
        int nPartType = 0;
$ d- P) r# |1 Y$ v; \+ I  Z- C! E0 t) Y! d6 }4 C+ ?6 ^1 ^
  J1 T3 ?. d8 W
        if (thePart.Bodies.ToArray().Length > 0) nPartType += 1;
& o4 A, I' c; n: P9 W& D        if (thePart.DrawingSheets.ToArray().Length > 0) nPartType += 2;
5 G+ Q% u6 q( I( R: k- p8 W0 i        if (thePart.ComponentAssembly.RootComponent != null) nPartType += 4;
2 \, x' n2 I' \: g7 I  k: R2 P2 @7 T% q
3 n: t7 E4 m# T4 \9 x' B6 \. V
        Echo( String.Format("Part Type = {0}", (PartTypes)nPartType) );. f) C& c# i4 O! m. |
    }
) j8 j, H, W' p  ^! s( q4 `% w6 L) B
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部