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

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

[复制链接]

2019-4-12 09:06:31 2392 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
: c" p1 i* m; ^0 M4 hImports NXOpen
8 _, Z1 P+ H0 wImports NXOpen.UF3 M6 F4 ~0 c5 o9 Z% z  N  r- s
Imports NXOpen.Utilities; K! V' A2 I& F' S
'
6 Y4 v, ?! S, e# C3 d  L' The OpenComponents() parameter! w; z* T* G) `" Y8 o0 l$ [
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly9 U) e* R+ d2 Z1 o7 d( B
' only opens unloaded components fully (see also PR-8406345)
3 |& ]0 y* D, [1 H' Workaround: collect and open all components individually
. j( h) ^) U0 M( c/ K( u'
; v4 I1 p7 n: V" E& QModule NXJournal% m; W& K+ |- _" @4 `
    Dim theSession As Session = Session.GetSession()
$ `. E$ S9 k) F4 D. J) A    Dim theUFSession As UFSession = UFSession.GetUFSession()( ]3 |( \. o% @9 V+ I2 h8 n# H- d/ \
    Dim dispPart As Part = theSession.Parts.Display
+ F( e3 }) a4 i. @& L; l9 T
8 k% |# I+ Y. a8 _* Q    Sub DoIt()7 ^  V% U8 o8 \9 x' h% _
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)9 R& Z! O6 _2 Q* p: K1 C
        Echo("Number of Components: " & allComps.Length.ToString)3 n1 E7 l! f/ g$ K' |
        For ii As Integer = 0 To allComps.Length - 1- }, r5 \4 o0 i& ]
            Echo(allComps(ii).DisplayName)/ Z0 |# m+ {  X' d
        Next
& ~& k) w/ F% e0 t4 j; S0 j  D; J6 z1 G
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading9 `5 u9 p% R( S5 j: B- `* u, _: G2 Z
        theSession.Parts.LoadOptions.UsePartialLoading = False8 |& ]8 q+ Q( @, a" h6 D
1 s" M, C- ?" ~( L6 C+ B9 H  C
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
' t2 k3 x2 S. [7 R4 i9 _5 J        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
$ R9 a6 Q8 @2 ]        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
. g& I" ^" Y* s$ k* G( B            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1); j- a4 G4 h" D" i" S

9 k2 ~% ^2 g' Q& A" _4 O" I        reportPartLoadStatus(partLoadStatus1)7 }/ g, B* J! V& z
        partLoadStatus1.Dispose()
' F# P, }1 B1 v! b% D* h4 v; c* [: z
        theSession.Parts.LoadOptions.UsePartialLoading = option1
6 ?/ I7 y1 |% n: d, ?  o  y3 v. P; g8 Z* l! q
    End Sub# ?2 \* l* {6 y- s& r8 }
9 u1 K7 R& N# V! _
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()* G5 I$ d6 [/ b9 b
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList- T. V4 O$ X5 F+ ]4 b! _; c2 d7 n
        Dim aChildTag As Tag = Tag.Null
! e: }* G3 E  A& F# C* c1 h4 {2 y6 ^2 G
        Do
4 {2 R' O' C/ E) M  |8 h3 W            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
0 ]4 Q7 B) D% Y5 A            If (aChildTag = Tag.Null) Then Exit Do
( ~% y4 {  ?1 t. X# i& k. m' F- Q$ k
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
- }$ l7 k( Q% W; _            theChildren.Add(aChild)/ p. _# n& ]9 F! j) N
        Loop
9 |5 R; R- C6 e! v+ _        Return theChildren.ToArray(GetType(Assemblies.Component))* x4 m* d: r8 |+ h* D) y6 P/ [9 }

. A% a0 Y, N; M2 B" B5 ^    End Function
, U6 G- _# r7 k' P
9 W& S8 S6 o* u) C. c! R' `8 [* O0 n    Public Sub Main(ByVal args As String())  _* f8 c' `+ _4 H5 w8 ~5 _
        If dispPart IsNot Nothing Then) |; f5 P# {. O8 {1 l3 A
            DoIt()# m# E9 T- v. T! L7 }, X- k9 D, A, D
            Return
& U( d' i8 W8 s2 u) b        End If
$ P/ C$ `2 J- u! i6 b$ _/ E. T2 H4 c2 Q# z0 p  ]3 H
    End Sub; I+ T  _$ s$ n: P8 |7 l* \- l
$ b" M8 Z# {1 b: _" M) @5 s
    Sub Echo(ByVal output As String)9 ?/ y0 I% ^/ y, q5 u
        theSession.ListingWindow.Open()  I0 U% h: a% z" S9 z. e
        theSession.ListingWindow.WriteLine(output)- p, G; ?+ c6 k' z. r% f
        theSession.LogFile.WriteLine(output)
( b( q3 j  ]( A    End Sub
: s, ~. V1 ?/ O4 \( Z* i3 l% J9 c6 f/ f" m8 U4 W
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus); {0 ^8 u/ |: I; y: J
        If load_status.NumberUnloadedParts = 0 Then
% P) L2 _5 z) ^: z, U, c6 x+ `" N            Return
8 l7 {* T' y3 M8 v! G% \9 b/ g& W        End If
' B& A' G0 m0 w6 Q) c
9 Z/ T* r1 v5 A3 ^$ z/ e6 W        Echo("  Load notes:")
* t' Y" A4 M* X3 u' y
( E! C9 m: ]* e' u* M: J        For ii As Integer = 0 To load_status.NumberUnloadedParts - 12 {6 M  V8 r; l( U8 O# q5 N- P
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))4 h7 z# \( \7 Z$ H6 V
        Next
( p$ c: j2 |0 I* |5 H4 @9 k    End Sub
4 j7 o9 ?5 g  n. v) ?1 S0 R
9 l2 q! U6 y" F: P( U1 q2 }    Public Function GetUnloadOption(ByVal arg As String) As Integer
2 [+ ~4 U6 W/ e- G- m        Return Session.LibraryUnloadOption.Immediately
! s  P7 C  q7 j8 {    End Function
9 p6 w+ z$ `0 B! H
0 u6 H: f0 K% M& }End Module[/mw_shl_code]) i# ^/ B8 M( Q. d; n- ~& |
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了