PLM之家PLMHome-工业软件践行者

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

[复制链接]

2019-4-12 09:06:31 2364 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  x: {/ l) c: v2 p) fImports NXOpen% R- u6 F: m9 p0 I$ _- m
Imports NXOpen.UF/ `7 j7 e& G' S; z; l9 z/ V" a6 H
Imports NXOpen.Utilities
+ m  B, S4 P9 _'+ G: Y' F1 }9 m# l* T0 v& K
' The OpenComponents() parameter
2 c, ]" {3 q7 g" I- }' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
/ H; ~  |* M1 t; T/ v+ F( w2 X' only opens unloaded components fully (see also PR-8406345)( P) b8 \9 X* \( z! w3 }# y/ o, E! o
' Workaround: collect and open all components individually& G' F" H% p1 Z+ Q) B( ]: q/ g
'1 T8 O' H' F3 q* R; v( N
Module NXJournal( g/ p* A+ i3 ?% H4 \" c5 p. a
    Dim theSession As Session = Session.GetSession()3 @5 t7 ]) H( Y# g) q& v* y
    Dim theUFSession As UFSession = UFSession.GetUFSession()5 i% r& x, N( ~- C3 S  e
    Dim dispPart As Part = theSession.Parts.Display
# h; a+ J$ D7 W- h- Q* U+ k4 F* l; l0 x- t1 M
    Sub DoIt()
4 H% E/ I) A2 |8 d+ E# \        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)6 s% i( I5 C  M5 P/ N
        Echo("Number of Components: " & allComps.Length.ToString)
5 u/ a1 w) J: `3 C        For ii As Integer = 0 To allComps.Length - 1
. C9 Z  q8 P+ w            Echo(allComps(ii).DisplayName)+ y. _5 B7 }, D' b' C, G/ J' r
        Next' H$ @0 W- K1 g! _3 ~# T2 s
9 E& b" F. }. g; L# l9 B+ z) Z
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
5 ^8 x) F. }1 `( Z# m2 m! N        theSession.Parts.LoadOptions.UsePartialLoading = False
3 q. r# ?( z' U- C
' a- n' e7 H5 s, x6 H+ I/ i# \4 j+ s        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
. E8 ?  Q7 K0 K8 g        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
* C5 e2 E+ c: Z1 Y        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
' h3 J' U* |) F" Q" M            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)* r3 y( f2 p# r
( t/ Z7 }- [- M1 x( M: R* C- M
        reportPartLoadStatus(partLoadStatus1)
6 Y9 g/ H! r+ B8 i1 U        partLoadStatus1.Dispose()5 q; }/ ~! F% g9 r5 _9 A, @
6 L9 e3 J1 V& |/ W2 L0 C# v; y
        theSession.Parts.LoadOptions.UsePartialLoading = option1( ~# c4 G' u1 c! i1 a8 B

) E$ a4 r! ~) y2 {! C    End Sub2 k+ q+ e& R  O/ d

) D% L' G% i* e. h" W) l: P6 s3 o    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
, l' x& o, h2 Z9 x. v: C        Dim theChildren As Collections.ArrayList = New Collections.ArrayList2 f. i  H  C4 E4 F8 N$ h/ e- v
        Dim aChildTag As Tag = Tag.Null' o, [" D0 o0 _, ~

/ E2 U; x( n6 S% A        Do) [8 L6 W# a$ X# \. ?5 \' K( B
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
6 A9 n4 P6 j: M* a4 H            If (aChildTag = Tag.Null) Then Exit Do  x- Q: z* Z/ ^0 @1 I) ^! k

$ N2 s/ D  X! K9 n( Z            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)9 V/ F5 E( R7 \2 p
            theChildren.Add(aChild)
0 U# @. d4 F! F2 N2 P% z6 K" L( _5 x        Loop$ x) q; F# R; y8 Z
        Return theChildren.ToArray(GetType(Assemblies.Component))$ T, i$ I4 D) ]( N) }

5 ]( Y" M3 q# Q; x0 J    End Function4 [* R: R: @  j: h) O; J5 E+ M/ d

6 Q' b; l6 d- v* ?( R7 t" ]: D    Public Sub Main(ByVal args As String())& _5 A/ y  P5 S$ Y) F) n
        If dispPart IsNot Nothing Then
- O" l& L' Q& T0 e, _" z/ @            DoIt()! y" K+ o+ \& H1 S( d
            Return$ Y( N% j: m1 P0 L9 d
        End If  `: V. ~! n9 L, M
, o+ u% _7 P" g- _& L
    End Sub! ^+ r  q7 H1 e; g; d  h  v
5 w: A+ J9 i) Z6 A, @
    Sub Echo(ByVal output As String)" v' M- O- H0 M( w& r& @
        theSession.ListingWindow.Open()
; L! G* e4 e5 [: Q& o9 d        theSession.ListingWindow.WriteLine(output)! a9 G& B! X$ o0 x) q
        theSession.LogFile.WriteLine(output)) z3 Z" W5 ~' Q; r$ @! C
    End Sub
2 a' ?+ n1 z8 |* E
8 h- x! v( ~% K9 W) ^; p    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)- |  r6 ]2 |% h; [+ a! b" [) J* g- Q
        If load_status.NumberUnloadedParts = 0 Then
7 J& Q3 V; k( I1 O0 C, M7 g9 c            Return
5 A" B1 G- n0 l  p& H        End If
7 k/ {2 b9 N" [1 M* g; J3 z3 N8 C
! }. O, M& ~3 F3 X: h        Echo("  Load notes:")
3 I0 n9 v$ q: W" e$ [* j" n0 Y3 b
! z( v: w6 U9 L  p2 x        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
7 j6 {* }( L' l3 U4 a  k            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
! ?5 A9 o* W4 o8 \8 w- b        Next
3 M9 M7 I/ U6 }& j  Q+ S( j    End Sub
2 t. c1 Q% |+ ]/ E! U
3 A" f9 P: f1 V: P    Public Function GetUnloadOption(ByVal arg As String) As Integer' P0 R  i. _  f' ?! o1 W, B
        Return Session.LibraryUnloadOption.Immediately; {( V% `" `, d, J9 z( ]1 @
    End Function4 p7 ~. f& {  j7 K" l" s
! D6 X8 R- N4 d0 E
End Module[/mw_shl_code]2 X0 G3 h2 I* ~( V: Y6 \+ W8 |% H; B+ L2 ~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了