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

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

[复制链接]

2019-4-12 09:06:31 2383 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
  z2 ]) E$ A: ~) o; W' @! RImports NXOpen) C5 r2 u! p: N8 G- P
Imports NXOpen.UF. D+ R9 Q# U4 R8 m8 ~7 r) R
Imports NXOpen.Utilities( Y. E7 j) }+ I4 V* x# k+ ?
'
& @# U/ E* F0 o# x$ C+ b' The OpenComponents() parameter: ~" L9 l6 m$ y
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
( j: L" n/ W" _0 X' only opens unloaded components fully (see also PR-8406345)& t2 V+ ~" g1 k8 C. G
' Workaround: collect and open all components individually# e5 P% V# I. ~& b8 T; b6 g
'
+ k5 [9 R7 ]# O1 hModule NXJournal
: l: e9 e0 I( C# T9 B    Dim theSession As Session = Session.GetSession()
$ U- t8 Y5 a% H1 T- R    Dim theUFSession As UFSession = UFSession.GetUFSession()
, j* D5 ]. B) {- h8 ^# X' [    Dim dispPart As Part = theSession.Parts.Display
6 I& f8 E* B8 J+ [# N( _8 r  E$ y( d$ G
    Sub DoIt()
$ R! W0 C% U! |3 m1 x; S! c        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
5 e2 Z7 F* q" O) m        Echo("Number of Components: " & allComps.Length.ToString)
, i6 b4 f: A) h9 c3 E        For ii As Integer = 0 To allComps.Length - 1( j* F- D" a- m* {% ^
            Echo(allComps(ii).DisplayName)
8 a4 Y% M- F) j4 r. q        Next
" O+ H9 Y- u1 H# S
; T/ y6 W9 a( \! |! x        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading- b/ {- |, B; k, a0 h0 A8 i
        theSession.Parts.LoadOptions.UsePartialLoading = False' H( x1 T1 H% B  c- o! H- P! v
; u+ O+ e' j/ S3 |
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
& F( I6 ~  \' F, n, ^. s1 H& I5 f* t* Z        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing# f4 a5 T. ]9 T) S
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
" D5 O/ R) h$ Z  }            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)8 u- `& w* ~) J, u

2 x2 ^3 R& Q& ]9 |9 ^        reportPartLoadStatus(partLoadStatus1): |  k* C5 Y) {7 L$ E% e
        partLoadStatus1.Dispose()
0 E5 @. t1 w# l  S& S0 X! D
  S# C  E8 K( ?2 c: b. o        theSession.Parts.LoadOptions.UsePartialLoading = option1! u2 k; r3 j* Z# t8 E1 F2 p' D
0 e% U; ]& ]) I
    End Sub! E/ f0 G1 T" h) ?) Y' O
4 q/ Q- u0 K$ ~
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
9 ]. d' C9 d2 X/ R        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
2 Z' a3 M# F, V. h$ K' Z1 T$ n        Dim aChildTag As Tag = Tag.Null
/ t( R$ }1 Q$ a0 r1 A
( \- ~2 M# f% v$ [# C. W        Do
) o; |4 c- j- O& i. R8 L            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
, o) e$ q8 _0 ^2 O2 w# {            If (aChildTag = Tag.Null) Then Exit Do0 m3 s6 _, _$ {! c. }- F

7 g: G4 c, Q( [  h3 e% g' W            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
0 f. U0 z9 N, q6 ^: ]: d0 A            theChildren.Add(aChild)
+ I, W% x) ]2 u0 x( ]" K. }# V        Loop8 f# ^1 o3 c2 f8 i9 I
        Return theChildren.ToArray(GetType(Assemblies.Component))% e4 H  z' G, E- O5 p6 D
/ b/ o, ]( B$ o9 X1 ?' k
    End Function/ i; `* k. J2 I! x
3 |0 g1 Q" A. V5 R1 r
    Public Sub Main(ByVal args As String())1 y8 W/ R% P$ X4 m
        If dispPart IsNot Nothing Then/ f; E2 F2 y' W5 F( e
            DoIt()4 ^2 h& ~/ \$ o! P$ V; `/ p
            Return+ A' E9 R" q; Q' O. X+ {. N7 M
        End If
/ G; a, w& K9 h8 r0 r$ s- \4 w9 K6 x7 v% \( d
    End Sub( H8 K5 ?. K4 b# D
& m" k/ O: B) e; O" ]$ d
    Sub Echo(ByVal output As String)
1 y& V0 q- x0 \' w% Z$ a. t        theSession.ListingWindow.Open()$ o5 E% `/ ^! N2 [& W
        theSession.ListingWindow.WriteLine(output). n$ t( T) v0 f9 d4 }
        theSession.LogFile.WriteLine(output)
. A& Y7 d/ g: [3 b! E% F# d: N    End Sub+ z7 K  z2 \8 K9 F

5 K  p; _* z# E; l$ d    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)9 Q1 x. ]; N8 ^) v$ |' F
        If load_status.NumberUnloadedParts = 0 Then
6 g+ F) X$ w/ Y            Return
' C7 j/ R( C) T, X: J- s. v, z& q        End If: b1 H7 U' x9 ~, t' |

3 {! ^, \: Q8 J+ f        Echo("  Load notes:")
5 l/ c2 N% M) W% ~4 Z+ H- j; I6 S
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
/ w" Y" x( r& X8 [( q: U            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
% v6 o4 P- e# i( Q# C' h, g/ y) `        Next
3 I1 r+ Y% A/ @2 z    End Sub
- ~+ `9 c; b. }: a8 z& J+ w$ x+ G+ D. W
$ o) f5 k- K+ g. |    Public Function GetUnloadOption(ByVal arg As String) As Integer
5 f4 y' Q5 M4 ~& w7 g        Return Session.LibraryUnloadOption.Immediately
0 C1 \8 |; Q  B2 V2 a6 j; t5 v    End Function
: M! `+ H" \; ^1 r- w( B! S
6 H# i% {2 I: YEnd Module[/mw_shl_code]
4 U0 I/ W* A; e- P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了