查看: 2589|回复: 0

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

[复制链接]

2477

主题

1280

回帖

8万

积分

管理员

PLM之家站长

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

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

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

×
  y( W1 Y; d' M+ q

5 {! P3 J& H. g( X8 ANX二次开发源码分享: 如何判断当前零件的类型,很聪明...
7 z4 @* T  m2 K7 ^
7 A& B$ O+ {1 d8 r: H

! @6 T" V# ~6 S2 p8 }大体思路如下!!
! Y- Y3 I  L7 Y( A! \- L/ {. f- K7 u+ h5 T2 V5 r
" t' W, T  Q$ L& b/ A
   enum PartTypes {Empty=0, Model=1, Drawing=2, MasterDrawing=3, Assembly=4, Undefined=5, MasterModelDrawing=6, Invalid=7};& v0 n0 m3 h6 b4 |$ [' y
  9 w; _4 i' c1 m: n. M
  void DoIt(string[] args)
9 r: A1 P; C  q' X" S' E    {
; }3 ?0 l# `) \# i        Part displayPart = theSession.Parts.Display;6 L9 T' k2 e8 \; q" k
        if (displayPart != null) 2 z5 R% @/ p, n  m
        {; u' b8 K3 A# f* N/ Y
            GetPartType(displayPart);
* {/ D1 l& l' _0 I7 j+ u            return;
' L- o  N! M4 m0 C# Y$ Y, L        }, E- I* W' u, r' w  V7 f! F

& X3 c; T$ N( `
. \) Y' u1 S8 Q' H4 o/ S5 @
        for (int ii = 0; ii < args.Length; ii++) / l/ \9 R+ b+ M1 T0 q) @7 t
        {& d! |  i% V" L- o7 E: U
            Echo("Processing: " + args[ii]);
+ d+ D  Y5 M2 A/ i            try 6 w* i- ~$ N9 p
            {
2 o( ~' ]3 r2 ^8 U                PartLoadStatus loadStatus;9 T7 Q  K& C$ X0 \2 w3 D
                displayPart = (Part) theSession.Parts.OpenBaseDisplay(args[ii], out loadStatus);
: T% t9 _6 {! x2 y                reportPartLoadStatus(loadStatus);- M& B7 m8 Y; h' u4 s

7 w3 \" E8 B5 I( t/ M# C3 j

1 f& n' e+ M7 T8 c2 E                GetPartType(displayPart);
+ R9 e/ k* c4 Q6 S6 G7 Y) V8 w$ L/ D6 \& {- u+ `% z% F: T1 R
( }8 }' I% b4 O2 e
                displayPart.Close(BasePart.CloseWholeTree.True, BasePart.CloseModified.CloseModified, null);# m9 W# E9 R: `; _
            }  h8 |0 J6 G* c- T5 C; l7 X
            caTCh (NXException ex)' O5 @: ~  S4 F5 I8 T+ ]# |
            {
2 |6 }) F2 b3 x( b2 t$ Q; B' Y                Echo("   " + ex.Message);# P1 @) h! B) D) F& U$ o
            }7 w- g0 J6 p. n2 ~0 T+ f
        }
* Z9 Z* `! y8 B; p0 K/ G    }" s1 B# e" ~) D' ^1 u( o3 a
: p+ A4 K. t! E/ W: B7 C. ^
0 i+ \5 P" Z$ Z; R- o& ^! `1 ?
    void GetPartType(Part thePart)
" B! [, L  |6 G5 F  l; L# e    {
8 S0 T4 i" \6 ~+ I        int nPartType = 0;( \6 I7 Z  m; k/ ^6 ?0 A" u* B" _
" m* j( R" N) r" V
8 o6 x7 f+ r9 u" S+ L
        if (thePart.Bodies.ToArray().Length > 0) nPartType += 1;9 c: U6 S& O6 L# C  l
        if (thePart.DrawingSheets.ToArray().Length > 0) nPartType += 2;4 B: m) T  J5 M9 f6 t
        if (thePart.ComponentAssembly.RootComponent != null) nPartType += 4;
. ]1 f8 Y  r6 L: ?* |. m' |2 O. X+ k- R, l' I6 c$ l5 X
5 S; a! @9 X8 e5 X: i
        Echo( String.Format("Part Type = {0}", (PartTypes)nPartType) );
% K# ~6 @8 G- N# j    }& _+ h% T) D2 p" {1 d
# L. b" ?" p  r. y6 T: x
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

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

本版积分规则

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