PLM之家PLMHome-国产软件践行者

[二次开发源码] NX二次开发源码分享: 加载所有的装配组件----全部加载

[复制链接]

2019-4-12 09:06:31 2294 0

admin 发表于 2019-4-12 09:06:31 |阅读模式

admin 楼主

2019-4-12 09:06:31

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

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

x
[mw_shl_code=csharp,true]Imports System8 M0 e9 m) ~# m' n& ~! m6 g4 \
Imports NXOpen" ^: _; {+ d6 R# i5 e1 L
Imports NXOpen.UF
: g6 V2 x: p$ a/ E3 h$ d2 kImports NXOpen.Utilities
" V. Q3 R# \$ u3 \3 \'
& i3 @8 G2 V( i3 U2 z' K. F' The OpenComponents() parameter
7 X- c7 T6 w* t0 C! n6 R* N( K+ K' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
+ q. ^4 u- F* ]' only opens unloaded components fully (see also PR-8406345)$ I+ J1 s, y' G4 G6 {/ E: T
' Workaround: collect and open all components individually
9 A/ T# P  A2 L. _' F) R3 `'% \# U' p) v, M) D7 A
Module NXJournal, X3 g2 ^1 G" c$ m# A4 A1 b
    Dim theSession As Session = Session.GetSession()
8 b- O) ?6 J8 r/ _    Dim theUFSession As UFSession = UFSession.GetUFSession()
! [* T9 \4 U* w2 ~    Dim dispPart As Part = theSession.Parts.Display, b6 c: |$ A) m: \- ?
* h" ]1 i9 ^- e4 j  \
    Sub DoIt()4 O6 i' V6 G4 w' M1 a
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
5 ^5 y( i' x7 h! w        Echo("Number of Components: " & allComps.Length.ToString)/ G( E' }# _& N1 M5 J
        For ii As Integer = 0 To allComps.Length - 1. M5 w$ t( M+ J4 i. K
            Echo(allComps(ii).DisplayName)
1 V% h6 x0 p5 N        Next! w" [* h$ B( Q# f  b

1 T3 [7 N) ]8 V0 H0 ]* c        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
" ~) M/ y% }+ [  G        theSession.Parts.LoadOptions.UsePartialLoading = False# [# \7 R+ K* X5 n

1 @/ O9 \# o, D4 G% ?. K        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus+ ]$ x3 {7 }) c" J- Z0 v. H. C& S
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing+ o' l. ^+ F  G( @
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
' w+ @4 Z$ Y* O9 ]0 `; z            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)% Y+ P2 O. O; s# p
3 r8 x5 S/ u: |8 f$ r  ^9 j" x
        reportPartLoadStatus(partLoadStatus1)
' a- G( r6 p0 u& R& G, ?0 L! J3 g+ M        partLoadStatus1.Dispose(); U& `8 B- @5 I4 d

, D# Q. M2 `7 c5 e# M        theSession.Parts.LoadOptions.UsePartialLoading = option1, {% |' c+ G% L8 @

2 h% E3 ~; q1 X# b$ }    End Sub; @, n) C3 s3 @9 a
: K# c2 R8 X! X# P: c5 d* d
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
* t( E* i+ b% K' H. F  j: z9 z        Dim theChildren As Collections.ArrayList = New Collections.ArrayList5 E5 |3 P2 [1 |) \
        Dim aChildTag As Tag = Tag.Null4 j: {* b, l9 b8 n2 e
6 Y' H1 Q1 {9 G) |
        Do6 x: K/ h  Y& Z+ _9 W) u( n
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)0 O& F7 s# O" c
            If (aChildTag = Tag.Null) Then Exit Do0 b  s4 j1 k/ c) |/ A+ ~/ }

" ]: ]: o$ m2 w; m            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
8 f. V6 l( {5 |' a# O' \, }; q" S, |" l            theChildren.Add(aChild)
8 P' N* [" B+ k        Loop9 s5 a: i! d5 z* e1 m; k  q1 T
        Return theChildren.ToArray(GetType(Assemblies.Component))
$ g5 @% k, h9 }  O! _* A
) K2 v1 Y% C, f8 m; O6 Z    End Function2 t3 H$ t' p- C* ]9 y

) Q6 t: {* s/ Z* A    Public Sub Main(ByVal args As String())+ u' [. O) }% j! o3 m2 L8 S4 a
        If dispPart IsNot Nothing Then
0 E3 e9 V$ {( J4 O* r/ ~            DoIt()
. D, Q% c  `7 c            Return2 y; s# c2 a) t) @- p3 M
        End If2 e% b! e; J- s) T9 H0 O

8 A6 _. S9 Y- B' i7 _3 u: @" W    End Sub
) g# q. Y  H; s4 n+ z, W8 N. S# M- i. m5 x& s$ P- ?0 F* b* l# [
    Sub Echo(ByVal output As String)
+ i  F3 \- ~+ V2 q, H/ P6 w. h        theSession.ListingWindow.Open()$ Y$ |/ Y. E# t; E+ ^, F, g
        theSession.ListingWindow.WriteLine(output)
8 G: q0 A0 ^3 d2 |        theSession.LogFile.WriteLine(output)
$ W  z5 A$ G/ ^2 G& ~2 J6 Q6 Q0 M    End Sub
. Q6 q7 e/ h6 J
0 M! _  ~8 t! h    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)! g2 n& X0 C* h# B  g
        If load_status.NumberUnloadedParts = 0 Then! N2 ]" T' N2 ]3 ~( ^
            Return
  j3 W3 O! Z. \: K- n        End If! K  X0 @8 u* h5 T5 w: d

3 [8 A  p+ m5 T" P        Echo("  Load notes:")+ f, B0 @0 t+ F. e: \0 y

  t6 b; j" @0 ]. L        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
& R: z2 j; e! Y  \3 ^# E" t            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))9 k! |4 n5 r1 S" K4 |" |7 L# O  |& s
        Next) [' a* l4 D. h; ?- E0 l* w
    End Sub
: C' R2 U, E4 {7 G7 Q7 n0 @1 ~0 e4 \% l. ]+ I% u$ D7 n+ @
    Public Function GetUnloadOption(ByVal arg As String) As Integer0 A3 B/ U, z+ I$ D, U% [
        Return Session.LibraryUnloadOption.Immediately
; M. N& d2 ~' ^2 ]( K    End Function8 F2 L+ Y% p$ t, B7 Z: h" i$ U" [

" p  h4 q5 K4 Z" _; C) n# OEnd Module[/mw_shl_code]
2 j0 F" [2 U  K% u- I$ |. }0 s
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了