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

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

[复制链接]

2019-4-12 09:06:31 2485 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- l( o# T4 h' d9 S+ y
Imports NXOpen) n4 y% ^% F, W( @) l
Imports NXOpen.UF" V3 S; r1 R' V( F) F/ j
Imports NXOpen.Utilities: r) S& a3 P0 o
'  ]& @# }5 S$ C: ^' V
' The OpenComponents() parameter
  {8 Q1 A' I8 m' w2 Y' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
  E6 M# o" D1 {7 }0 E4 G8 z/ d' only opens unloaded components fully (see also PR-8406345)( b! f& l: J  j
' Workaround: collect and open all components individually
. S* |# B; T$ D% \'
! \9 _# A7 g4 Y$ x( C% i3 }Module NXJournal
9 c0 T7 X* Y1 u( y- a! z    Dim theSession As Session = Session.GetSession()  L" X, A' n, O. Z: S
    Dim theUFSession As UFSession = UFSession.GetUFSession()
* X" D' L0 `/ D7 Y. T$ e    Dim dispPart As Part = theSession.Parts.Display
8 u; g  y- `! k! X8 k$ M6 R8 y- O
# b1 }- C# ~: H+ [8 O' {    Sub DoIt()' a8 C. v1 ~# L! t% ?
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
+ G# @/ l. a$ ^8 j+ F        Echo("Number of Components: " & allComps.Length.ToString)9 B+ P6 z; Y9 f3 B' p& t
        For ii As Integer = 0 To allComps.Length - 12 w  r, H# c1 q7 r
            Echo(allComps(ii).DisplayName)
, i. f8 M5 U- w0 N4 V. b        Next
* W* P7 y- g9 [; E6 n; ~
/ v% y: @9 x0 R        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
& y3 m7 ]8 j" x% Z0 s/ ?- I        theSession.Parts.LoadOptions.UsePartialLoading = False
( U. s" Q, C/ |( E6 F8 n5 ^) r- j7 Q0 f  `
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
  G( `  ]& L1 D5 I2 f        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
8 ~5 i& [/ E; k- Z4 N) Y0 K        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(3 T9 V7 [5 I. N5 Q
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
. s  c: b, a4 V' e7 |1 q( G6 L9 S0 ^/ w1 ]3 }$ X
        reportPartLoadStatus(partLoadStatus1)
0 F1 K: m% d1 |$ o# ~& ~        partLoadStatus1.Dispose()
$ O( L6 _8 V7 z  Y9 u2 j" Y* u
: e; L% C; @; |1 d$ f4 C! y        theSession.Parts.LoadOptions.UsePartialLoading = option1
+ e3 i/ \" q3 f2 J% v5 ?/ b" t: G3 z1 N1 Z
    End Sub
: Q* `% j+ }. D; `. E5 t$ {
7 o2 a# Z8 b7 l# `/ [* b9 g    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
2 q' c* K2 h9 A4 O3 o        Dim theChildren As Collections.ArrayList = New Collections.ArrayList+ v0 x( o, `7 ]7 r+ q1 S$ X' H
        Dim aChildTag As Tag = Tag.Null5 v. v# R% J  g$ C

  C* O7 j& L: u" `, p! [# |        Do* d' z" Y7 e* k9 m4 `6 D$ c$ u
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
1 ?. C3 X, F* ^% o8 Z            If (aChildTag = Tag.Null) Then Exit Do
* c3 t6 n2 n7 Q: ]8 p# O, C: Q9 H! u  N# h
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
+ V( S6 {$ R7 e            theChildren.Add(aChild)
5 Z  V8 c- l. d1 m% k+ \        Loop0 B* z& C; U* m* t8 d1 u: S: @
        Return theChildren.ToArray(GetType(Assemblies.Component))- Y* @) c  e4 ~+ ^  H" r+ a

$ z) s: }- c3 R6 s    End Function, {* Y# H" L5 P

3 X5 ]: f( T( m7 `- C% F    Public Sub Main(ByVal args As String())6 L$ y, @$ N# I& k
        If dispPart IsNot Nothing Then! `7 ^1 ?6 i/ k
            DoIt()3 S% I+ R. f- l% x! o
            Return! |2 X& z, Y' d
        End If
0 }9 r+ ]; L0 d! a: F- Z; D
! t7 n0 e; @1 |    End Sub8 {; C- {! y3 M, M3 e

' j' S2 i1 j% u7 S/ u5 U& j8 h+ _    Sub Echo(ByVal output As String)
9 Q( [6 `2 m% B8 K/ {! L! G4 y        theSession.ListingWindow.Open()* S" K1 s* Z3 Y6 Z1 `' r2 b
        theSession.ListingWindow.WriteLine(output)
  H3 ?! k, `3 N% O! d        theSession.LogFile.WriteLine(output)
6 _( C5 a6 s% n9 A# j+ q    End Sub! [5 m3 z! g! Q

: E0 s( Z- }# l1 O' G$ |    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)+ R; q9 m. [$ R. }
        If load_status.NumberUnloadedParts = 0 Then
% y2 C  B/ B, }, p9 T- I1 G7 Z  G& E            Return
7 u( I, y% F* H7 w# M        End If) B3 T) h7 N/ y, `7 G

4 c5 {" f) {( S        Echo("  Load notes:")
( v- _. y$ G/ L& f+ q2 ~) l/ W7 V( u) R0 S" a$ G* T$ ]+ L
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1- t& u4 {0 o  H0 m+ Y
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
  e  J: R# [$ K5 [        Next
/ D+ O- D' w0 B( m) Y0 V/ O7 |    End Sub& D# b2 m8 c) G* L, P7 w

) s, Y- _5 {) N( O6 B0 v5 c: M0 |    Public Function GetUnloadOption(ByVal arg As String) As Integer, C% n8 U5 Y# Z' ~9 h
        Return Session.LibraryUnloadOption.Immediately
. s7 l6 E0 O  V! o( G4 W    End Function9 v+ O# O0 b2 ?2 ~9 Y

! W1 n9 r& s* SEnd Module[/mw_shl_code]
+ K- D) o- Z- z4 `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了