PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2019-4-12 09:06:31

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

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

x
[mw_shl_code=csharp,true]Imports System
# k) {! U) w8 X* N+ X; N- oImports NXOpen
& p* Y6 u3 z+ T3 e% pImports NXOpen.UF; @5 D% C& F3 l! Q
Imports NXOpen.Utilities
+ `! S7 K: K5 N: z4 D# O% x'* R! M9 ]) C; e
' The OpenComponents() parameter
( U( S4 Z- p, ]; f, v4 a8 Z! w; V' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly/ }! ?) F. j4 c5 d* ~" U  v$ F# c
' only opens unloaded components fully (see also PR-8406345); M5 c+ {6 M* n1 c
' Workaround: collect and open all components individually
+ @* k* X; b, ]9 o! N4 k; i'6 h0 {) p1 l; Z, m
Module NXJournal
. W2 Q; \4 R# w/ B- e    Dim theSession As Session = Session.GetSession()
. g3 e+ P' S( S1 p4 `/ V    Dim theUFSession As UFSession = UFSession.GetUFSession()! ]; I- C. @' A4 S4 j/ P! ~- D
    Dim dispPart As Part = theSession.Parts.Display) {, U! n: c# i6 X5 s, q

6 m; }/ T7 D3 b8 ]! G& w5 D    Sub DoIt()
1 J) ^  i0 J& t' n        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)+ d* h0 i& H. z! T/ j7 ]4 O) ~
        Echo("Number of Components: " & allComps.Length.ToString)
% Q2 @& N" _$ m  l9 j. E        For ii As Integer = 0 To allComps.Length - 1, a$ f& ?2 I" I) I0 n' g. V
            Echo(allComps(ii).DisplayName)
" g0 t# j$ j0 G# k6 A2 n' H        Next
0 O1 ~- x$ x9 c( a) O
! e, Y- ^1 Q, o) o: h; ^+ P        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
7 S' W* j; V0 U, ~        theSession.Parts.LoadOptions.UsePartialLoading = False! a. H! R/ \8 U: s
/ B5 P5 q4 n5 r' L
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
4 }2 ?3 O1 \3 f8 _( X: E        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing4 P+ x  E+ @4 T' h" N6 S! Z2 L
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(0 k) k% U4 a9 r5 L
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)1 @1 f5 F8 v0 D* s' |- i: g9 m

  a1 }8 M& P  T4 A1 g* {6 R        reportPartLoadStatus(partLoadStatus1)
* E& `! {# M' [8 X: }6 H. q        partLoadStatus1.Dispose()
9 r5 `+ O0 W- A9 y
: _2 s$ S6 H% F: e5 Z) x        theSession.Parts.LoadOptions.UsePartialLoading = option1- T) o( I0 M7 H! L
+ M; I7 s" p! h6 {& y% l
    End Sub* C6 h' ?0 R$ m5 d/ a/ _& j
  x. |5 ]8 N# j/ u1 q8 {8 ~) w
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()$ X) Z8 I! n+ d1 j( z
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
, s, a8 a8 F# `3 Z        Dim aChildTag As Tag = Tag.Null
+ p( y& X) ?! ^* ]  ]" `" c$ Z1 m/ t6 [+ Q
        Do
7 s$ t, @& r( X2 `5 ]; q& p            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)3 c; Q: C4 j2 s. o
            If (aChildTag = Tag.Null) Then Exit Do
' i7 y: j$ Z( J; d( R9 Q9 c/ n( m/ B- o/ P
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
- j* A4 m! C7 g& U- C7 x            theChildren.Add(aChild)
& F$ J2 R" X! c5 l9 h        Loop
5 L8 v+ p( C0 b        Return theChildren.ToArray(GetType(Assemblies.Component))
8 z; h( I' T- ^. ?# `1 ~* W: h0 M( u: q8 p9 }
    End Function4 m: y# T! R  r

* s' E: p- r* ?% [' e    Public Sub Main(ByVal args As String())% p. ?. u  P, v* @, e
        If dispPart IsNot Nothing Then  M. e& c) D' }% ~
            DoIt()% k6 r$ z. ?/ d4 M
            Return
+ X5 F, @2 H& d" p9 O0 E% A* Q# d        End If* B- h) O! Q) _

; p. q; P3 ~8 n    End Sub
6 n1 L0 S* O7 |" n6 _3 Q) g! r6 e8 Q* k
    Sub Echo(ByVal output As String)
3 u$ @- O9 V0 l% `        theSession.ListingWindow.Open()% n( |/ h1 N- C% _/ D6 T
        theSession.ListingWindow.WriteLine(output)) `6 S* ?, V% c0 ~
        theSession.LogFile.WriteLine(output)3 X% Q/ t6 q1 }. Q
    End Sub9 H3 P: R5 ?) [6 V& u, l

& S# L) ]+ _5 I- u    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus): o( Y5 N! [( }- T( a4 y/ V$ H
        If load_status.NumberUnloadedParts = 0 Then5 e" s3 u' {; @9 c7 }% J. w
            Return% {3 x, o, p- S! {! {5 s
        End If
5 s- |: `  O( |4 k+ X3 G0 G& g% L
2 `5 t$ @" X! O0 ]( |5 Y        Echo("  Load notes:")
( v) i* a0 h, U8 M2 I" T
! _  L# b. `6 ^. C* J& g        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
9 I  ]. t6 F& m; j6 Z( I2 y            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))9 C! u5 H) o: V. u
        Next
8 a0 q3 J' k1 `1 \$ I4 r* _    End Sub8 |& k2 z4 n4 L$ N

# Y1 u3 J3 d2 |2 p9 z: }# y( K    Public Function GetUnloadOption(ByVal arg As String) As Integer
% m+ _( F( ]+ Y" @! x/ ?" B! i8 |4 n        Return Session.LibraryUnloadOption.Immediately3 o6 V2 V# S4 Y9 x) Y8 g
    End Function
1 I" J* z8 R; T: v. Z1 t/ ]) P7 G# ]  B5 `9 j
End Module[/mw_shl_code]
( S' ]% Y* ~5 @) J7 @% q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了