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

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

[复制链接]

2019-4-12 09:06:31 2503 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
# h8 F  l' H7 c4 C8 i/ |Imports NXOpen6 I$ w  t) H& T  G8 V0 M
Imports NXOpen.UF
' |2 D' d) r: X+ u# K  [- V4 T3 WImports NXOpen.Utilities
$ ?+ I# j- @6 F. O# b0 b'
( G: o6 g+ ]4 e5 A1 u9 e' The OpenComponents() parameter
) x  J/ ?3 f  _0 M# u- k' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly4 t$ J; R0 @" q' D
' only opens unloaded components fully (see also PR-8406345)- U) j( O4 c2 ?4 U% M
' Workaround: collect and open all components individually
( Z. r, m/ s% j* h( y3 ['9 B  U6 \/ G- x$ m
Module NXJournal
6 x5 c9 Z6 n( a- L3 J    Dim theSession As Session = Session.GetSession()/ l, }! T  ?( y; c# o
    Dim theUFSession As UFSession = UFSession.GetUFSession()/ Z2 X2 n* E' z0 e  e
    Dim dispPart As Part = theSession.Parts.Display9 g, S% @4 ]/ W& J; ]+ H+ Q9 U

1 I; i2 S! l. Q! G% B  ^    Sub DoIt()) K1 d, A. ]8 s* j' ?
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
9 v# _0 g4 w& k* a+ R        Echo("Number of Components: " & allComps.Length.ToString)
3 O- q1 G' L+ v- k; F        For ii As Integer = 0 To allComps.Length - 1
6 Q9 w2 ]$ e; a3 t/ ]% f' f            Echo(allComps(ii).DisplayName)2 W* q; j/ {! S
        Next8 {6 P1 g. B0 n' ]* f

' \8 e7 W3 V1 x' r( w        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
' ~6 g; p+ }. F  ~% z( V1 {        theSession.Parts.LoadOptions.UsePartialLoading = False
- V5 e" K7 r7 J: R: v& N. Z) X/ A# Q2 }) S  e
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus) R9 K, i* _9 E, g' e+ R
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing* X, j, K( Q/ z! l! w. K$ D
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(3 q& H3 }# y5 U: A7 U
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
3 p$ ]. A9 D% F, S5 \5 B0 i+ w6 t+ E, `- j9 {$ u0 E  R
        reportPartLoadStatus(partLoadStatus1)
' @. [, l% Z$ g9 {' ?- v+ T2 \        partLoadStatus1.Dispose()
; _/ M5 b* h. [3 K( R/ X$ E  ]5 ?
        theSession.Parts.LoadOptions.UsePartialLoading = option1
# q$ f* p7 |" |
/ L% g' H) d; \% q2 s$ J( B5 `& q    End Sub6 c$ ?9 X, v( f! _
4 T/ d0 r4 l2 g' L- D+ r2 ~8 S" s
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
7 j! |1 ~5 g1 u+ P: i" Y- k8 X        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
, H, ^: [( t/ I3 }        Dim aChildTag As Tag = Tag.Null
9 i6 O$ X9 \8 D: p. E0 W9 m- z3 S& P
( Y; }' G7 n6 m" `! a        Do
0 p3 `' S+ R3 u) g' d+ h2 M            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
  [2 _3 ~# t. H; M            If (aChildTag = Tag.Null) Then Exit Do9 K9 G0 K$ C/ Z- U5 @/ S
& H# h$ B1 C( z# m. g3 _
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
. S2 \: f) a0 P. {            theChildren.Add(aChild)/ K: P6 d3 \5 A: `! P+ D
        Loop
: B6 r1 u2 r8 d+ K' d2 z3 F        Return theChildren.ToArray(GetType(Assemblies.Component))+ c- u+ F# x" f
" E" ^! \& |1 B, ]: f
    End Function& x# c( _1 ^+ u5 Q
0 ?+ x+ M5 O1 n& L
    Public Sub Main(ByVal args As String())5 q9 s+ d! r8 |) Y( T
        If dispPart IsNot Nothing Then
# `; o* c0 m6 l" i, J8 m2 V            DoIt()2 h" u  U. {. |" u  b6 f9 b
            Return
5 Q$ b+ Y' B, p0 a2 e0 A        End If
2 D" \7 F7 P  G4 b. |7 ~8 g# H# w3 O1 \
    End Sub; |- l( m! y5 M
2 d$ n" i; o  d2 T; L
    Sub Echo(ByVal output As String)
$ W6 n( I+ H6 E. f" u        theSession.ListingWindow.Open()3 k  c  e' }+ m, H
        theSession.ListingWindow.WriteLine(output)
, U5 z4 B  Z2 i  ]( X        theSession.LogFile.WriteLine(output)& l9 D! m. [) L
    End Sub
' s# U6 Y! K& |+ C0 U- C% u; h% H# f+ r$ R' p
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)4 n, ]3 |8 f6 h/ y7 s# O
        If load_status.NumberUnloadedParts = 0 Then! b( |6 W/ v; }: n' `; D1 r$ S
            Return' U$ \* N; p8 d) z1 t3 T2 k; d- I
        End If. f0 m' L  ^4 Q. f

$ l9 i1 h2 |. R        Echo("  Load notes:")
, Q4 F' [9 d; W
: Y1 Q0 U( O! v        For ii As Integer = 0 To load_status.NumberUnloadedParts - 10 G! J- {2 L8 `1 [+ B  r' F0 k3 _
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
, P$ |( v5 y( B! X        Next
1 b$ q0 e* M( A( I( q6 d    End Sub  v% a* C' o3 y4 W
( t/ e3 n2 S; |5 |8 c0 j
    Public Function GetUnloadOption(ByVal arg As String) As Integer
0 ~# ?  f8 a& W4 u3 x- H$ z6 ^        Return Session.LibraryUnloadOption.Immediately
% _6 i. f) [' W: {) p/ D* Y9 d    End Function
" A9 c8 l" M& J6 M1 K5 j& E9 C  u# u4 Y& U# I( I
End Module[/mw_shl_code]" I! L9 ~/ M, P/ q) H$ ^  D
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了