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

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

[复制链接]

2019-4-12 09:06:31 2500 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 X# Y6 C$ O9 K, H6 E
Imports NXOpen
( R: w7 c% i$ B3 wImports NXOpen.UF
0 \/ [& K& \6 F0 a+ {. T: N& ?Imports NXOpen.Utilities' Q* ]  ^0 k1 _  _  p+ K7 S3 g
'  k! ]6 d' Y% C6 }4 U
' The OpenComponents() parameter1 I/ V7 C% @/ y- h
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly9 q# o6 S/ ^1 O& e/ e2 J5 D
' only opens unloaded components fully (see also PR-8406345)* D3 a. I' u7 Z* [3 {( a3 |$ H
' Workaround: collect and open all components individually
  i9 m9 `. t; R4 J'
$ H9 i; l1 h4 S% ?, ?: I0 `Module NXJournal
4 r' I; j. n' ^( G# d2 [    Dim theSession As Session = Session.GetSession()
4 A7 }* q8 d8 H! l; p) C' p    Dim theUFSession As UFSession = UFSession.GetUFSession()
  s0 N/ l0 f9 C: _4 k6 ~    Dim dispPart As Part = theSession.Parts.Display
' O: e3 p3 x' \4 X% }! a3 [6 Q' w8 K2 M) p, N* n
    Sub DoIt()
/ r% _8 k$ o, r8 z! L% k        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)8 M% e/ p: l8 J6 `
        Echo("Number of Components: " & allComps.Length.ToString): O" a8 i* \  k7 z! C
        For ii As Integer = 0 To allComps.Length - 1
& u* V3 o+ E( k            Echo(allComps(ii).DisplayName)9 h; y9 R- y6 x7 Q5 a
        Next: ]1 e( e, x! B/ e3 b" z
& c+ }) W" ^$ v" g8 [
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
& w2 ?3 R6 Q# V1 ?, k        theSession.Parts.LoadOptions.UsePartialLoading = False
: }' ?, |! [  K$ V1 q
& \& Q9 S1 \$ M# x8 R7 [        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
) Z  T  }6 e0 O9 S6 H, s6 E0 ~        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
, }  Y% c' A7 K! I* g        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(+ k" C/ t' l/ E4 O! m! Z8 p
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)- ?+ |/ p- V  S5 \* R) T

% ^7 X5 ^4 U. h, ?, c        reportPartLoadStatus(partLoadStatus1)% |, X$ P7 s* T
        partLoadStatus1.Dispose()1 H6 p) f( v/ F9 ~; d

; ]5 g! N+ n; f! f        theSession.Parts.LoadOptions.UsePartialLoading = option1
& S$ B# A( i: b6 {" p0 I- l8 T7 p# E/ q9 T1 W3 e1 q+ ]' G$ P/ W
    End Sub: Y7 ]3 q4 a6 p0 v  |# C/ V
' p, `/ N$ d" c0 F9 |& K
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
! l* e9 S* @: G6 _  Z        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
* M& Q& C, e: U1 l        Dim aChildTag As Tag = Tag.Null
" D( ?- i! ^! B  l4 n- p4 n) ], o( p6 M
1 x0 x7 y4 b1 a1 \* Q; u        Do
7 |( L, p9 O6 e  |; r            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
0 l: ?1 a( f3 v3 q. ?4 |5 l7 i0 j; X            If (aChildTag = Tag.Null) Then Exit Do; ^# p* b9 E+ g2 k+ E& V
6 u( t  l6 R2 C! x5 ?5 {9 l" B
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
$ `3 [; g: T* j- L' p1 K0 E4 v            theChildren.Add(aChild)' k) K, C' ], G' s2 o
        Loop$ r& d( n: l: p" L/ i9 ]9 B
        Return theChildren.ToArray(GetType(Assemblies.Component))
3 U( I6 l: H$ V
# u$ W7 L2 B) p! S# k4 y    End Function
  q' ?0 h- B* D1 T/ R8 r- k0 w* e( \1 k" I* G. C2 j) W: w2 r- k! _" H
    Public Sub Main(ByVal args As String())
" g) m0 |8 F; ^% f/ R! X        If dispPart IsNot Nothing Then  H/ S: @+ x* X) O7 U
            DoIt()
. h) M4 y  t( T) X4 R! I9 Q& l; x/ z; g            Return
/ ]* j9 R2 q; H2 W. c        End If- x1 H9 J" z7 L/ E: F

/ K( c2 s' ~, G5 A1 f    End Sub( ^" l% ~& l" X% Z  O& V  k
) h$ m1 P3 v; b# J% k
    Sub Echo(ByVal output As String)- r. b+ _3 Q- u( q! ~
        theSession.ListingWindow.Open()
6 J# X2 Y# h% g3 }' y7 [        theSession.ListingWindow.WriteLine(output)
3 h) Q7 r$ E) R, i        theSession.LogFile.WriteLine(output)1 U' E* S- n; H2 P% z9 G
    End Sub
) _! e7 k8 c! d' b, a3 Z* ^
# a+ K% N& b+ M% B: k% {7 ?    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
; }) i( D" c  J7 a- ~        If load_status.NumberUnloadedParts = 0 Then
  V; b& w9 Y  U+ F            Return
$ J( w) O% N" Z5 I' E( H9 @        End If, z+ i- F/ |& d% S1 b: {
3 r& s) C  w" T! R  p
        Echo("  Load notes:")
7 A7 H# M9 w: ]5 ?5 I  F: S+ t: j- Y# B/ k
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
  O' M# ^4 ?1 D' P            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
* G2 {" P( J! c6 u  Z        Next) e: U4 q0 z3 I( K% D! C
    End Sub7 e/ Q" H6 Z  z2 N) }2 l, H% e
" f9 r1 Z4 d, f+ j) [
    Public Function GetUnloadOption(ByVal arg As String) As Integer
/ q. G7 ?: n' ~" d( D" b* [1 G3 E        Return Session.LibraryUnloadOption.Immediately% I' j0 B. Z& m' a
    End Function
; e7 D& P2 j1 q4 J, V  M! P) f5 p& l2 a. u4 |- b' S4 K6 `
End Module[/mw_shl_code]
3 o- k0 Q; ~+ `% Q* E
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了