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

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

[复制链接]

2019-4-12 09:06:31 2519 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/ A* x0 l& U5 G/ X
Imports NXOpen+ B; h3 P; P) {  e" [1 B  v
Imports NXOpen.UF, w: g* k1 [2 l2 j, Q
Imports NXOpen.Utilities" `% ^$ x$ E3 S# ?: T8 W
'
) S* g& B7 v, m" s5 Z* B9 D2 T' The OpenComponents() parameter6 i; Z% [' H" L. l; D: i! T7 _
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
9 w( |8 r$ {0 k9 ~! `' only opens unloaded components fully (see also PR-8406345)
$ M% {0 M- O  N+ f' Workaround: collect and open all components individually' ?) ?3 f0 E% u9 B( U* {6 r& A
'
7 k1 u* g2 z/ h7 OModule NXJournal
2 P7 C6 o, r0 U5 u6 G    Dim theSession As Session = Session.GetSession()5 d: H. o7 o, ]( Z' ^$ }/ K7 U
    Dim theUFSession As UFSession = UFSession.GetUFSession()* l! \. T) p2 _' z0 v% M* S
    Dim dispPart As Part = theSession.Parts.Display+ {8 ~. v" e8 O  L* S" W
- z! G  w& N+ O) t, H  r
    Sub DoIt(), r) Q. s- v3 p4 d; l7 J5 ~
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
6 u5 P  ]. Z3 q$ n" ?) o        Echo("Number of Components: " & allComps.Length.ToString)
8 T$ c: @  V0 {" o+ ?        For ii As Integer = 0 To allComps.Length - 1
/ I- b/ \# `1 r2 g            Echo(allComps(ii).DisplayName)
8 x2 G$ O/ K, j        Next2 A+ h" m% R, U9 c3 p
* U6 n3 i9 a( @6 H% \
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
+ {: ^' L2 P; B% J; f0 C0 A4 [        theSession.Parts.LoadOptions.UsePartialLoading = False
4 K& ~: v2 ?2 b% y4 v, D
# |5 ?) p) {5 f9 c; _        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus( H7 V9 C0 Y( K2 q5 r% P3 y& G
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing& b; C# M( `, R3 ]' ^$ O; }% ]- Y
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(1 `: H$ d5 B7 T$ N
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
5 h3 a0 u0 U. B+ m( l* |, |! S: m5 d8 E, b0 a( _
        reportPartLoadStatus(partLoadStatus1)2 o# X0 N* t+ v  P* u
        partLoadStatus1.Dispose()
$ v" P( |$ ]9 u1 d% j, i' ^& \& F! f5 I& _- Y: |
        theSession.Parts.LoadOptions.UsePartialLoading = option1- N  d5 N0 ^  n, B1 K
5 U$ q# H% n9 J
    End Sub6 {+ E: @4 t+ a6 g

* J' i8 Z- _! g! r    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()# S& ]8 W- M0 Y, z% `* j6 F. X
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
- t8 O1 v; I& ^# W$ k" o: }        Dim aChildTag As Tag = Tag.Null, {! q% y" [2 `, h
# b0 v* _. C2 q+ n* {2 R" Y( Q
        Do6 d" Z) a( @5 ?9 ~
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
9 m; U" Y  p. d4 R0 K% a7 f            If (aChildTag = Tag.Null) Then Exit Do
# z9 L8 }' d% I, h/ t* q# |. [; q' G7 n, ~% e# g7 H! v! M
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)/ j$ z* S( i6 [
            theChildren.Add(aChild)0 i: b0 w! o" u0 c7 u# y* t
        Loop
7 L: E' K( O9 @! C; e        Return theChildren.ToArray(GetType(Assemblies.Component))
1 I6 T/ l* H: V: {8 H( S7 ?) y* a& ~6 m* K/ c
    End Function
3 u+ o9 N" d- Y1 d" e, d" b! N8 a7 Z% l* k
    Public Sub Main(ByVal args As String())
! e; @( z1 G4 J0 T* G5 s        If dispPart IsNot Nothing Then
# B. h2 W3 ?: h+ d4 I            DoIt()% Q1 d7 f4 p2 v# }8 L' ^" f7 u) n
            Return
4 k$ u% B, }: Z# M        End If
" |  F: G# w# [7 w, N  G
# N, A# d& F2 z2 K& `, |. @  P. A    End Sub
! p. o3 M! M) ]- S% h$ i7 a/ a4 _! S7 b9 o$ j. s+ a! T1 H. j
    Sub Echo(ByVal output As String)2 {% ?0 ^& \. Z
        theSession.ListingWindow.Open()# q) L( W7 W4 O& o# E$ F
        theSession.ListingWindow.WriteLine(output)
5 h/ \; C, f0 i) t& c- l* M6 `        theSession.LogFile.WriteLine(output)
3 p/ \$ g% R4 _* _6 r* [# x    End Sub
$ U' M" Y, ~0 B2 {$ A2 ^; u4 Z9 A+ ^0 A2 {# M' d7 T/ F
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus); @! T4 I( D0 S# }* _4 l
        If load_status.NumberUnloadedParts = 0 Then
8 i  g7 m! _  x1 G            Return% f% w/ y. M; n% Y
        End If1 z& g( P8 p4 j6 @" k
" j" W7 \: s# z" `& f: r# n
        Echo("  Load notes:")5 a; m' C1 [6 I5 \7 {( e( }2 J
3 l( F- ~# `, K& ?8 `2 \
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
6 k) e# M& j2 @& y* `- Y$ g; D            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
1 a6 E, ^' M/ e8 K* N) Q0 H' ^        Next
3 r# ]& E* }6 f+ R7 k& t    End Sub1 w! ]* g/ Q% J6 Q. n
3 N0 A: f* X1 ^9 t% ]% l: K) x
    Public Function GetUnloadOption(ByVal arg As String) As Integer* F- c' t' O8 d8 P' k  ], n( F
        Return Session.LibraryUnloadOption.Immediately
; r5 H4 E) G8 ]    End Function
& J; ?6 b0 O8 m* J3 I
5 f6 c8 W6 p: E% `4 l; d- S* V& VEnd Module[/mw_shl_code]. @$ g" ~0 f* q. 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二次开发专题模块培训报名开始啦

    我知道了