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

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

[复制链接]

2019-4-12 09:06:31 2416 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
1 y8 q7 X( K) n6 W3 W9 EImports NXOpen
* L- g% X& Q9 h. G# s# n9 s! gImports NXOpen.UF5 }% T3 n; g0 X, M
Imports NXOpen.Utilities- p. e) x5 ], Z1 Q- U- Z% ^( G
'
, ]; }2 X: d$ |# |! e" H, @) f' The OpenComponents() parameter" C, @7 H7 _  a# ]3 t7 ^
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly* n- F8 w. ^+ f) U
' only opens unloaded components fully (see also PR-8406345)
' }5 k' W; k$ {6 F' Workaround: collect and open all components individually
. a' d* j' q5 ^) M9 V6 S'
0 ?  ]7 [: y# x2 n0 Y" N, ^Module NXJournal
( g% \+ R8 h& K% C' _( b    Dim theSession As Session = Session.GetSession()
* k2 ]. w7 O: V) K. ]3 @    Dim theUFSession As UFSession = UFSession.GetUFSession()1 {' E% _7 ]& ?
    Dim dispPart As Part = theSession.Parts.Display4 h+ X- e6 o# E; e7 v
! K; ~, \) H& t) Z  j/ g: F' s5 H
    Sub DoIt()
) R. E' y; [4 U+ z" j/ A7 \- f        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
6 U/ o0 k( o% D5 B7 P. f        Echo("Number of Components: " & allComps.Length.ToString)
9 X8 I1 r9 y, Y        For ii As Integer = 0 To allComps.Length - 15 |/ J( ?1 N8 p) {6 x. z
            Echo(allComps(ii).DisplayName)6 p8 Y3 }4 V. Q
        Next/ y" A/ C3 T2 a0 @; O

0 ~$ h5 w$ ^9 e        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
% U  f8 Q8 H/ ~6 @* n        theSession.Parts.LoadOptions.UsePartialLoading = False+ {* l* @+ |& }- }

4 V" J1 n) C! q6 u# w        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
: i5 K9 O5 d* |        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
0 l8 U4 s2 s3 z        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(; t/ S, X0 s. d9 x7 }; b% o" _
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
4 q- x3 A9 l8 o+ x+ u% u) {9 `
8 {6 g* _4 z# x4 y        reportPartLoadStatus(partLoadStatus1)' o8 B7 ^( C0 \7 U. n
        partLoadStatus1.Dispose(). E/ Y6 c8 d9 \/ Q# |3 Q
; T# k" J. _- G& z. h
        theSession.Parts.LoadOptions.UsePartialLoading = option1# u; U; Y# C* M6 D; r) I
1 s3 ]# @4 ^, k$ ~) e: p
    End Sub- ?. e* z# Z9 W/ ]5 }( @

! M$ w6 }8 H% P: Y4 H& g    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()' ~" c( j" e  m$ g7 q. B
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
* \3 M( g: Z+ k. l  d" d        Dim aChildTag As Tag = Tag.Null
/ R% \, a9 I. }( r9 i, Q
# U, u+ x9 V' w1 ~+ l7 N        Do9 I4 x, c9 I. }" {6 w
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)5 b; W$ P0 P( X9 _- |
            If (aChildTag = Tag.Null) Then Exit Do: G1 n9 {) F  Y' I

/ W7 Q4 ]% c8 }0 ?8 L2 m6 u            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
. f: n/ U8 [6 o% E            theChildren.Add(aChild)
5 g+ D- i  U7 y. l" E- m" G( _  `% z        Loop
8 H8 |) v5 h% p3 e) q8 p5 ?  D        Return theChildren.ToArray(GetType(Assemblies.Component))
9 ]' D. }2 g: P& i" c& k
# T' u& ?% U. e0 w; |7 O$ M& z7 s    End Function
3 O# F% d9 m5 F. k$ ?. _% a$ E9 C2 W0 S7 [" N9 x
    Public Sub Main(ByVal args As String())5 \( U; N! e+ m! _
        If dispPart IsNot Nothing Then+ v2 _" B' t6 ^$ Q9 a
            DoIt()  k8 R+ o/ ]9 X5 I5 }
            Return1 d) f% Z+ z( ~/ C4 _
        End If
0 f4 y$ b* N2 P2 G! t9 U9 W+ v/ E- ^6 Q' q" N+ x0 D% d) U" H
    End Sub& }8 W6 T- W* [0 a
# b8 \% E" n8 R
    Sub Echo(ByVal output As String): T7 o+ q6 Z; a- e7 }
        theSession.ListingWindow.Open()( c1 Z5 u- j+ j2 ^1 ~  V6 Y$ f
        theSession.ListingWindow.WriteLine(output). b: j; P/ ?/ R
        theSession.LogFile.WriteLine(output)0 v# B3 c8 N2 n+ |% B5 x( V
    End Sub3 I9 U! n" K; g6 n# W, B: G% H+ _  z

" P. X" P8 F. C2 D2 H% U; @* A) C" \    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus): k7 B* \+ w6 J) S' n0 K: F
        If load_status.NumberUnloadedParts = 0 Then
7 R' F9 a, W* C$ J+ f, A0 j            Return
( e3 W: V0 x1 c8 y  s! X        End If" M, t! Q8 r7 M6 j/ G5 B) P; l

8 Y& B' O* T1 u  ~) L        Echo("  Load notes:")
* t% O2 Q! d! u7 W2 a8 C) l7 @% Y; E, @* m% J+ C1 k
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
3 q! C+ x- J) g8 q            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))* E, C, V0 l/ [6 H/ B
        Next9 O' N7 Y" U( L& y- V3 ^, Z
    End Sub( T$ P; P6 P+ U' @; J
: S* |3 r: i  U1 x& R3 k9 n+ A8 Y
    Public Function GetUnloadOption(ByVal arg As String) As Integer6 }# o; C3 |) S# l0 F5 H/ C8 }; D
        Return Session.LibraryUnloadOption.Immediately
6 z, y' h. A3 f' r    End Function
9 \! p! n4 J& S: B# J0 Q" q# Q' ~# j( z7 Z: G* J8 v# L
End Module[/mw_shl_code]0 h2 a# s" n0 [# c# s) [
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了