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

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

[复制链接]

2019-4-12 09:06:31 2481 0

admin 发表于 2019-4-12 09:06:31 |阅读模式

admin 楼主

2019-4-12 09:06:31

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
[mw_shl_code=csharp,true]Imports System5 g- u. x- [/ k& ]8 o3 i
Imports NXOpen0 g7 J5 K& ^# b5 X5 m2 W
Imports NXOpen.UF" E4 H; |2 r  t) ]3 Y" z7 b# _
Imports NXOpen.Utilities
3 F0 Y. T; c' {/ w, t/ ~; J'  m- S7 Z" {4 O: g2 h$ F, t
' The OpenComponents() parameter
* ~7 P3 z: u1 K4 Y' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly9 |* s$ H1 t* F) s: @
' only opens unloaded components fully (see also PR-8406345)4 k/ \( C$ f: M0 b1 |8 V
' Workaround: collect and open all components individually/ }3 J2 `; b% L# ~) C6 r, D
'" `, N- Z+ S# U- I
Module NXJournal. b) o5 Z* q% O% r# n
    Dim theSession As Session = Session.GetSession()7 Q; A; w4 M: i  Q
    Dim theUFSession As UFSession = UFSession.GetUFSession()+ _* m& b5 E% U# t
    Dim dispPart As Part = theSession.Parts.Display' R8 @9 ^, \9 c- B7 H5 V

# m3 r" i8 w6 Y# k0 `4 @    Sub DoIt()- c3 u0 Q; [- Y8 u/ v+ J- y
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)$ r6 @) _5 ?$ }2 \2 u% ~! Y
        Echo("Number of Components: " & allComps.Length.ToString)
% m9 l, v" z" V* A: y% `1 J        For ii As Integer = 0 To allComps.Length - 1
. I! n! X; O: V' u, K/ h: K. k            Echo(allComps(ii).DisplayName)8 ^0 x' l* j; s
        Next( j. w- o% V0 Y

7 [4 Z, d, E- \, i        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
( h3 [6 {" {, s( q% H+ j5 m  c0 y( o0 @        theSession.Parts.LoadOptions.UsePartialLoading = False
, K+ ]0 p. M% o" v6 Y: {) a/ [6 a; \
. C) |7 L0 p6 u, U1 f( p4 i' ~        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
% L/ r( J+ |0 H  ?& U: O" @$ a        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
8 g' e& Y7 t4 c' ]; L# z3 d3 Z$ x9 U        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
* k  [$ F0 `* k4 n2 x* x            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)2 c. T% v4 y! g
' |+ r; g( i" C+ z
        reportPartLoadStatus(partLoadStatus1)
. b* e) Z0 b" ?; Q+ a        partLoadStatus1.Dispose()
' ]4 Y7 \# q+ k) @7 o
2 D/ f/ D$ w+ c4 L1 p6 P" \        theSession.Parts.LoadOptions.UsePartialLoading = option1
* @: l' l3 c. q" S* h9 Y& P  }; e) b- L; H% l
    End Sub& j! h5 W  a5 m. t7 F
1 ~6 q8 e( a# F; w6 a3 Q
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
$ w1 O+ x; ?" e; U0 U: l2 ~: X& H        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
2 N( A& C& _7 [' T+ X        Dim aChildTag As Tag = Tag.Null5 _) u- ~1 p/ N( x* ?2 n

% s$ W4 A( x# P/ N3 k, N        Do* ^1 l7 o1 \1 c. Y3 [& X
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)( J; X& F; Y- P" o0 z% L8 n
            If (aChildTag = Tag.Null) Then Exit Do& w( _: i$ V) Y" b, s) w
! D4 Z5 K3 \3 R$ M
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
( R* b. \8 H' Y' O! K/ `            theChildren.Add(aChild)
3 f# X1 H+ E" b1 l" e3 j        Loop. L* T$ Y4 U0 s7 q$ ^9 ]6 Y
        Return theChildren.ToArray(GetType(Assemblies.Component))
' _$ O/ Q' o7 F, d$ o2 a8 P2 z% }7 e% a: I3 p- V
    End Function1 c3 I+ |# B6 B( d9 }7 t
! j& u% ?/ e+ ?* P; b7 B
    Public Sub Main(ByVal args As String())
4 A8 i2 `# W* s$ m5 g, m/ \        If dispPart IsNot Nothing Then" e, F6 g" B- f4 A$ K9 K
            DoIt()
% V5 m, n/ U* |$ x1 n) @; y            Return3 D5 z% y" p7 b3 P
        End If+ [" O, d' F! _1 ]# }3 ]" d

0 F( h: a/ \3 s4 E  Z/ G3 {# w    End Sub# ?( X1 t) V1 M6 F/ B
  |) @6 ?  N+ B' H: t5 h0 I
    Sub Echo(ByVal output As String)7 f4 p* B9 e8 Z
        theSession.ListingWindow.Open()& @1 I& n: i  p* n; J; A
        theSession.ListingWindow.WriteLine(output)0 a2 u0 M) }0 y, R
        theSession.LogFile.WriteLine(output)( k! h* @: H4 y& c) {
    End Sub8 X* h1 O% T1 [& H

' b2 B+ T+ l9 b* ~# e, J  g( J    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
* E6 `4 \( m8 c, `        If load_status.NumberUnloadedParts = 0 Then: [6 T  J. z; e  z( |6 M' g2 d
            Return
2 a9 U# N; V$ q6 L' H        End If; c0 g% p4 e; H0 N

) e5 N: F: m9 `1 K        Echo("  Load notes:")
( Z) T8 w9 B5 C0 l5 p- n1 |  P* z$ Y4 D( x8 ~6 ?) E
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
! a9 d8 t% w4 }            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))2 v3 Z- B. N" w; P2 ?% o3 b
        Next
+ @9 Z8 p& m. w& F    End Sub* r" A$ F% `" p% L7 g: t, a5 l

. y3 ?' w2 g& B) Z9 S: x    Public Function GetUnloadOption(ByVal arg As String) As Integer* W9 a7 U# d5 M
        Return Session.LibraryUnloadOption.Immediately
5 ?) g2 R8 U; O0 w1 W  [    End Function
6 q% X5 l7 {  d* _
6 Z9 u3 k( l4 E3 q0 O: Y$ i) R9 ]End Module[/mw_shl_code]. c- k2 e2 g  a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了