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

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

[复制链接]

2019-4-12 09:06:31 2488 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) j$ ?5 G% m/ s+ q3 ?
Imports NXOpen
# d4 s  ~$ R. {Imports NXOpen.UF
. Z, i7 a* S1 h; q8 H1 [Imports NXOpen.Utilities& N5 ?  f9 C: l& g# P/ W
'
' ^2 d8 ^( u# |& v9 M5 U6 W% e3 o' The OpenComponents() parameter
4 R! y) }2 w0 S& Q7 s" c0 i8 S8 H  ^' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly+ E7 L- n" n* Y; X/ y
' only opens unloaded components fully (see also PR-8406345)
' S* d3 ]& B" J- Z5 R' Workaround: collect and open all components individually
* `& [- G0 @1 v1 `6 _'
+ P: Q; m( X) b+ A4 G( a3 ]Module NXJournal
- ?8 Q" w6 y. l  j    Dim theSession As Session = Session.GetSession()
8 g( K% d$ Q0 \1 x. ^9 J    Dim theUFSession As UFSession = UFSession.GetUFSession()4 u5 H0 `; m+ f% N
    Dim dispPart As Part = theSession.Parts.Display
  r  \- [6 q4 _, s  U# [4 K
9 J0 T  b) U) d% U. K$ }. a    Sub DoIt()! Y( z+ f" B5 s3 d( C: A$ ^1 v' E
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)# w- l* }5 ~! {
        Echo("Number of Components: " & allComps.Length.ToString)
+ p* z/ v$ h3 M; b8 g# v        For ii As Integer = 0 To allComps.Length - 1
- R: {/ Q, O( g* h! ~" u            Echo(allComps(ii).DisplayName)
- z6 o9 h- Y7 G        Next2 a  s# I5 v/ z
: ], O* M" s: y6 [# f
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
# T9 r9 V' _- P' U        theSession.Parts.LoadOptions.UsePartialLoading = False
9 }# W3 F, v, d% ^3 e1 W* s2 v
6 [  f7 v/ R* a& a3 x        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus- ]: M, a- k) ^4 D' Y8 Y: P
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing* U+ Y: }* C) {, A+ O1 p
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents($ |/ W! \+ B3 c' ?* ~
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
( L* n1 I  P: X( Z4 ~+ t7 E* M& `" t) k
        reportPartLoadStatus(partLoadStatus1)
- V7 M2 F  j" A5 Y; C  R% ~        partLoadStatus1.Dispose()
1 M5 d8 i2 L! M0 c0 Q% j/ F& Q% }  |/ T; H. G
        theSession.Parts.LoadOptions.UsePartialLoading = option18 B% b5 w6 l6 C5 [) g. {
" n, t. P6 O* h( n
    End Sub
. c. \4 M1 R& I) k4 s( ~# z5 l) V
( K1 W. P/ q2 [8 z6 c0 s/ _    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()! k! o/ L$ E% l$ l( i/ K
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
5 j. I/ Y( u. _7 ^        Dim aChildTag As Tag = Tag.Null
# z8 n9 g' h2 f: E) N9 c8 O2 x
% o, |6 y# _' P' x6 u; P+ Y. l        Do  E9 q5 l* z# }- i7 I$ x+ r, f! q
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)/ Z2 o- c( S$ i' j. S- `3 _- `+ v  c3 ^
            If (aChildTag = Tag.Null) Then Exit Do  n& b% d9 y1 Y: H1 O! N- t
8 a$ d: x; o" c( D, p
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
% R8 r7 A" o% _; B, c) }, |& [9 z            theChildren.Add(aChild)
8 r% t1 e8 R7 b" g6 [% S3 t        Loop9 {) Z; y/ s* N) ?, Q4 g) f  N+ d# L
        Return theChildren.ToArray(GetType(Assemblies.Component))
! S& I) @* G  I) ]
  {3 b- D  F0 C6 q7 R8 P5 D    End Function# z/ u" V, M6 o) x
0 w  x- s% ]$ i# u+ q( p5 D) B2 b
    Public Sub Main(ByVal args As String())  n" Q( C+ D2 P, S- n
        If dispPart IsNot Nothing Then
) k3 O4 |% x6 _4 P            DoIt()
. X3 ?/ G+ r' T, a            Return5 a. p) q: W$ k+ F" ]# A  j
        End If2 r) s0 a5 `+ k7 g1 u" g
2 s  D7 O+ E* u, J
    End Sub+ c& K+ O" c0 C/ K$ _
- k, |$ v% [+ W  J. _" g* n
    Sub Echo(ByVal output As String)
- {* M0 s# }/ T$ q! S  F        theSession.ListingWindow.Open()' Q! b7 r1 F$ v3 D9 l: l
        theSession.ListingWindow.WriteLine(output)- V2 n1 D/ c7 a! }5 T( |
        theSession.LogFile.WriteLine(output)4 z% s2 g) `; j& P) z
    End Sub
1 y2 L+ r" h2 m; [) |# c2 `! U! g
- t! J8 r4 I+ q7 }( `; D3 H    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
1 g+ P( j6 p4 _8 F1 w        If load_status.NumberUnloadedParts = 0 Then2 r4 H" P& t1 y  R7 n6 e- o
            Return$ N! D9 }  C$ R9 B6 ^# X: c; `
        End If
) B) P: o" c' k* F2 e; @& ^1 X/ p! j9 t/ H6 X& L% X# X, V
        Echo("  Load notes:")
# E; Q4 m8 m& S: M1 }  u( W6 x4 \4 F" b
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
* V/ q6 `% E) |! d8 o9 a* p" c            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
1 S& e# t5 q% h$ h! |2 ^/ B* _        Next
" c2 X% B0 N% y- P# `! N, {9 w    End Sub8 O: P) u4 W& N2 h# m
* `1 \* I5 S/ l+ P
    Public Function GetUnloadOption(ByVal arg As String) As Integer0 a- H2 |( @2 z0 I
        Return Session.LibraryUnloadOption.Immediately
/ _3 `% u$ L9 ?3 p; J4 L    End Function/ _8 G3 y/ K) ?! d! f4 j
0 ]3 n) i8 d3 C3 B0 _
End Module[/mw_shl_code]2 l! z$ L  p) ^( O  e4 T2 B  M
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了