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

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

[复制链接]

2019-4-12 09:06:31 2461 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% k2 H9 K: S0 T
Imports NXOpen* G0 X) ]$ C! A& y, Z3 `# d& `
Imports NXOpen.UF
8 C1 \/ y$ ~* m) c6 W9 CImports NXOpen.Utilities- V; D" I: J2 ^' q
'
. L7 m0 [2 |/ F& `1 _' The OpenComponents() parameter. e: L/ E9 l0 |' l: Q
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
, t4 ?5 ?* f: _) K9 H! u& q- A0 w' only opens unloaded components fully (see also PR-8406345)
! w- `. U* ], g) {& O# Z' Workaround: collect and open all components individually7 M( X1 a$ `6 b: ?6 w/ j
'
% D/ x# A& b! ]$ u4 U/ V0 w0 ~Module NXJournal& k5 h' ]1 r/ w5 v4 m1 |( C, Y
    Dim theSession As Session = Session.GetSession()
. O( u6 z  q1 C# t% v4 j    Dim theUFSession As UFSession = UFSession.GetUFSession()
, i8 A# C/ }7 k6 ~' m    Dim dispPart As Part = theSession.Parts.Display, Q! T2 Q  `* u  P

4 L1 U# M% j# [& b) X! c8 \    Sub DoIt()  q- W$ f/ P. C# R2 a1 l0 X
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)( s+ C7 e& b2 k0 {0 p5 Z
        Echo("Number of Components: " & allComps.Length.ToString)0 H/ u+ F% P8 d. g$ f- s
        For ii As Integer = 0 To allComps.Length - 1* |: e0 h# @3 z7 B5 i
            Echo(allComps(ii).DisplayName)3 d5 B2 T$ F9 G; }
        Next# \* H8 w9 O, t; I9 S+ r/ M
- ]/ R/ G/ l' x) k' H, |
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading5 f' y* |* d) X8 E$ H  e2 O
        theSession.Parts.LoadOptions.UsePartialLoading = False" P  V$ E2 V( y, b, n2 z* F" I& R
- r& H2 T. M2 d9 \6 S3 a
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus8 [/ u: ^  ?& T& G- K
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
' u& T3 j3 _" A4 G0 b- L        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
+ y( A6 i0 V" g$ U  ?0 K9 k2 h            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
+ y% F( d& ]7 M4 f: j
# j8 N: d; h3 `, N5 ^# q        reportPartLoadStatus(partLoadStatus1)$ X; z: M% ^( u
        partLoadStatus1.Dispose()
0 V/ T& O5 Y. [) ?# L. [0 [9 x8 U) U, q3 Q
        theSession.Parts.LoadOptions.UsePartialLoading = option1, O3 q/ ~+ n' G: e
# {( g" e( O" L
    End Sub1 j# d: \! f7 N" a! N2 H9 ]7 g
" E* w/ m1 E. L5 z1 e
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
  u2 h7 M; |' T+ T        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
+ |" u- n1 U+ A# ]4 T        Dim aChildTag As Tag = Tag.Null5 H) e: N& s  A. ?
/ b3 }6 z; N. b$ R
        Do0 ^2 F) h: n  D# H! ~
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
0 M7 B, x( g7 `# v4 l% K) a4 O- O            If (aChildTag = Tag.Null) Then Exit Do, B8 M2 \3 {' q/ v: [, ]( p

& N( w8 B- X% D; G/ h1 M            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)  {# s. I" G( }- G+ q) n* ~2 G, X
            theChildren.Add(aChild)- d# J9 P4 I( ~7 R* k
        Loop/ x3 T: }. Z- v+ c: B8 u
        Return theChildren.ToArray(GetType(Assemblies.Component))7 T- Q$ ?8 Q" E, a

- G5 q0 V3 p$ ]* t1 \    End Function* n3 o# V8 O; g0 i6 w7 \* T! w
* G- C9 |) e; m6 O' Y; ]. R) n
    Public Sub Main(ByVal args As String())6 I0 Q5 l8 }; R! g3 R) C
        If dispPart IsNot Nothing Then" ~, l2 Z4 w, O
            DoIt()
& c4 L, T6 C5 m3 d$ O" I            Return' g2 O6 @# `- ~
        End If, F& m* ]: I9 |% o' s8 c+ o( C+ u! H7 Q
/ E" @( ^: P3 Z+ T. P9 b( `
    End Sub' i7 R: [+ u. ?1 T+ ?4 c3 h* l

; v- w4 j* }0 k    Sub Echo(ByVal output As String)
; L( ]7 G; q: m0 {' i/ }; o        theSession.ListingWindow.Open()( R7 C) B, |9 A$ Z8 ~
        theSession.ListingWindow.WriteLine(output)
  z3 `( X" A, }. K6 c; j        theSession.LogFile.WriteLine(output)0 h  a+ O- L0 s5 D
    End Sub
9 D! r) B; n$ J" r$ ^% \  D) }: J+ {
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
9 x/ o. r5 Z+ ]6 J# ]        If load_status.NumberUnloadedParts = 0 Then5 g+ {7 N( D5 [
            Return
  R& l6 x, S7 r# Q. z- i        End If
$ h+ ~/ L" _: w1 E4 {& ]7 u- G* ]% |0 B" l
        Echo("  Load notes:")) ?. d1 |& }/ b  t

% K1 Y4 i. `2 z3 {* ?$ Y/ b9 ^        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
2 o# T. a/ n6 i) n  K+ L9 t            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))+ k3 \' r0 t" ?% C
        Next
( H" a" m+ A4 P. Q& M) R    End Sub
$ u0 Y9 ?) r$ A( f. U( P6 d  f* _& d! R; X) G7 ^
    Public Function GetUnloadOption(ByVal arg As String) As Integer4 P8 R# T' |) H+ {/ z$ M2 s, J
        Return Session.LibraryUnloadOption.Immediately
" A. @/ c" t5 Y! a7 J    End Function5 m" W9 `, T! x" c: [( o
1 b5 s+ q6 Q( E. W# T7 s$ n
End Module[/mw_shl_code]
  O6 a% ?/ X  l3 z5 p' i( f
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了