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

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

[复制链接]

2019-4-12 09:06:31 2502 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+ d3 c9 W" A, I" {* C; |
Imports NXOpen& X$ [+ R# j. I+ `) y' A1 [2 _$ G
Imports NXOpen.UF
- H1 a7 H- b  I! V" j! }7 MImports NXOpen.Utilities# D9 h* G$ A; X4 Y- B
'
( k, j! u3 e' t' The OpenComponents() parameter
; j! |( t0 {- u* L: R) ~5 e' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly: w' @$ |6 r- t0 U* @
' only opens unloaded components fully (see also PR-8406345)8 U; k& _7 Y- j* J7 _5 R) |( i. h
' Workaround: collect and open all components individually
, ]1 m, U* U/ l% N'
) p6 l; ?! s7 H' v. h) N( ~$ ]Module NXJournal3 K& H% n5 `$ ^2 O0 y& E4 J7 g
    Dim theSession As Session = Session.GetSession()# X# N0 A* d4 h! C8 o: M
    Dim theUFSession As UFSession = UFSession.GetUFSession()0 t' K) g, W/ u8 x; l0 T7 o
    Dim dispPart As Part = theSession.Parts.Display
2 P1 @1 l- V$ G" J5 I8 U
( g  I8 B- t4 T/ Y  h- F6 L& I0 }    Sub DoIt()/ [3 [+ t" M! s
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)8 f: d1 y# H8 A* B
        Echo("Number of Components: " & allComps.Length.ToString)4 P. |' x6 I8 z8 e$ p1 ]8 ?; p
        For ii As Integer = 0 To allComps.Length - 1! x2 t% i2 m9 T) r0 `) V; b8 ^. q
            Echo(allComps(ii).DisplayName)) t) M0 S" X, r; }
        Next0 N: m3 {# f& ^& O" P

0 Z- ?! K6 D8 q( x, D, W+ |5 I$ R1 N        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
1 T1 c, S' C) k% Q: {        theSession.Parts.LoadOptions.UsePartialLoading = False
: c2 O9 Y' l2 x9 |+ L2 k0 M/ \6 U. g+ E' K
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus! l% P9 c% G2 @+ ]
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing, c, ]& P* K; [! X' \% d
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
% L# w6 R2 z/ q. f            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
0 Z0 H1 w! z9 z$ W+ q/ O
. O5 Z+ G5 ~! w* j        reportPartLoadStatus(partLoadStatus1)' [2 E  `- \9 `9 y9 `" j' a
        partLoadStatus1.Dispose()
$ V0 x; e0 V, c4 p# Z. r& T4 u* T; M' m% b7 e
        theSession.Parts.LoadOptions.UsePartialLoading = option1% X8 q- A  e- [4 v

: y% K4 l" t! K( z" `% m    End Sub* F+ v: Y( Y* g1 Y* z

$ t" b% c( g* \* s9 S    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()& A8 e8 a4 Z4 l: s: u
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList/ a: \* ]  s0 A. b+ U
        Dim aChildTag As Tag = Tag.Null8 R+ ^" m8 d6 e9 R" l4 q7 M

  F7 u5 M, M5 {- I5 ?* ]        Do
9 b+ p5 S; h, T% s8 Z. s            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag). j  {# S  B" I6 T% u: `# o; ?
            If (aChildTag = Tag.Null) Then Exit Do
0 z7 g+ ?* z* v& K# v/ f% r
. v$ ?5 M* S/ D0 y            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)( y6 `8 \( }( x* j7 `# m
            theChildren.Add(aChild)  i% o2 p* W8 `
        Loop
' a' t. {* v/ u" D        Return theChildren.ToArray(GetType(Assemblies.Component))
8 n( X) u) W3 m
' f7 ]0 d4 |1 @8 @) o) `    End Function
* A" N3 A! n0 Q5 T% V/ d+ j) k7 M* ~0 a
    Public Sub Main(ByVal args As String())9 \! O0 c  X- z( a: n0 V
        If dispPart IsNot Nothing Then0 ^) ]2 g3 r0 Y1 s
            DoIt()
2 S0 ^0 V+ v: ~( Z) r* P8 Z            Return6 O& w3 s, B; N) O- y" s
        End If# ^, U# a3 S8 X$ T* s4 P; a
( o- F" Y9 j/ `) \" e+ x" ]
    End Sub
$ }3 l+ e9 D! N8 j$ r9 _/ g( n) M" C
# j/ p6 ]3 C. R/ ~1 l7 I. A5 c" t8 ]2 v    Sub Echo(ByVal output As String)2 ~7 w: c% {( J, n
        theSession.ListingWindow.Open()1 @- X2 g9 I6 I7 x6 Z/ h3 X
        theSession.ListingWindow.WriteLine(output)
) d' }0 c5 G& a6 S! l/ y        theSession.LogFile.WriteLine(output)
' v; b* L, k' B$ |1 }: P3 J! P, ?    End Sub4 e1 Q& x; |# e2 t
# k! F' G. `, t$ Q. s, ?  f
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)/ G% ]7 H, `6 H- m$ i
        If load_status.NumberUnloadedParts = 0 Then/ h& c8 P) H8 R) l2 X
            Return
& V5 P! j, L, Y. k0 H        End If
, P( R3 I3 P) b; j! g) q
5 ]! h! ^* z6 R; t/ g1 @0 O        Echo("  Load notes:")
8 R" @: G2 Z" P  q/ g, O/ F$ J$ C8 u- U6 }. p2 O5 o
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1+ _* T( {: n9 O/ [. ?
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))0 z5 J' t+ P; @
        Next
# B+ o1 M8 ]8 U# u; ]0 b9 `    End Sub: _' f7 b" i: Z+ f0 ]2 i) p- ]; n% v
5 Z1 P6 p/ l1 x8 S' m
    Public Function GetUnloadOption(ByVal arg As String) As Integer
$ K. ~  i2 o& ~7 t/ T        Return Session.LibraryUnloadOption.Immediately
& q. D, {6 B' C" H    End Function5 l; Y* m; Y/ r. H. \. O) N4 d9 O
* e4 K' x: w$ x" |" p( S! T
End Module[/mw_shl_code]
0 Q- {. y6 l/ N7 ?% Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了