PLM之家PLMHome-国产软件践行者

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

[复制链接]

2019-4-12 09:06:31 2281 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
& h6 r  F( z' R: m8 H: oImports NXOpen
/ J7 _4 x, N6 X: I2 F* aImports NXOpen.UF
5 t5 }' x" |! D2 b% i1 E8 ?* HImports NXOpen.Utilities* u8 J* W! C5 p
'
) h0 ~+ y2 v+ S7 r5 d7 H6 _' The OpenComponents() parameter
( {4 Z4 Q  S# U) y' L0 U( R! [. K' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly; d( m" m* r2 G9 ~3 S  {
' only opens unloaded components fully (see also PR-8406345)
- u2 \- v8 V3 e% j7 M: B' Workaround: collect and open all components individually
. U& g) ~" S7 v9 R'5 j; o# X' }5 ^0 l5 W. f* E
Module NXJournal6 V# n: J$ Y7 T/ r' i" F1 v
    Dim theSession As Session = Session.GetSession()
1 l2 U& r! [% W6 w" Z2 F% L9 V+ k    Dim theUFSession As UFSession = UFSession.GetUFSession()
) o3 n* p8 t# l. @( S$ K& n( ^    Dim dispPart As Part = theSession.Parts.Display1 C8 f& P1 W4 I3 J7 p3 Q" B

0 g' B& d1 S% p# a$ I/ C    Sub DoIt(); Y' @5 x" I+ `' h) _& d) l
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)5 [1 U& |# h1 t" `! r1 c, S) y
        Echo("Number of Components: " & allComps.Length.ToString)/ f; f8 ~2 E1 g5 j
        For ii As Integer = 0 To allComps.Length - 1
3 [. \' ?8 \: t1 ?# D            Echo(allComps(ii).DisplayName)
* n( J8 ]$ u- l# F8 @+ T' z5 W        Next
* M- |. t  N# p- i
; T/ m& ?- R1 u" X- I: I        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading1 A) `/ b( F4 s
        theSession.Parts.LoadOptions.UsePartialLoading = False9 W; Y/ w: Z6 S" x! R8 l+ J

/ h9 t7 E: t5 o$ L! J        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus; f  Z: u4 s6 l* W/ J
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
* l% g/ o/ @8 A) s- V        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(+ }9 k  i/ |+ N" ~' \- q& a
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)1 k. F! T2 [& z

% r/ y9 Q" O% H$ q# a        reportPartLoadStatus(partLoadStatus1)
" t! e" V+ L, |( {3 a        partLoadStatus1.Dispose()
/ [# q( r5 f) ~% i! g) T
/ ?* j. j- V" w6 p2 o        theSession.Parts.LoadOptions.UsePartialLoading = option15 Z, y# x4 e& }

7 L; Y* F6 V/ B: U    End Sub* x, P- j* B9 J/ d% s/ d

" V  G  `$ n5 S0 `  |! v/ e7 H    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()' {; x9 i3 _. U3 a3 z! T
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList/ m" J8 a& A1 h6 T
        Dim aChildTag As Tag = Tag.Null
) L' S/ [! j- [; A* }  x
& j, b: a" D  F0 V        Do9 K% t3 n' }0 \& _! E
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
" N4 W' V" P  [6 u3 t" H            If (aChildTag = Tag.Null) Then Exit Do
$ v& a* O3 V8 G* h5 |- i2 ?# e+ t' f8 g
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
# @9 X( O* O$ f1 ^7 r0 [            theChildren.Add(aChild)( I, N! N9 d+ A, c( u$ Z
        Loop
2 i  g5 B6 H/ p& q9 V$ h        Return theChildren.ToArray(GetType(Assemblies.Component))& D3 g8 H) |9 w8 r% A0 D
& ~, c. T2 J, G6 z  V. r2 O
    End Function
1 A% ]$ O, j0 g6 C. E
9 |9 J4 F# J  w: b    Public Sub Main(ByVal args As String())
3 H9 h: s, m, a  Y) n6 o        If dispPart IsNot Nothing Then4 g& {( l: `  a) ?" e
            DoIt()
% _# u3 b2 q4 ?0 A" @: q            Return  C8 E% d" |/ |$ l2 X- I+ R' y
        End If
4 N3 [. e. d8 [9 t- d; W
" J/ W: B  j, y- y; z    End Sub
9 I( [' y6 |/ Y. }
9 v3 Q( i  B7 y1 E9 k    Sub Echo(ByVal output As String)6 `- Y) l  t! E
        theSession.ListingWindow.Open()
# n+ I" T9 a* ?) I8 P        theSession.ListingWindow.WriteLine(output)9 V# }' }1 X- ^' i  U- n, V; N+ e( o
        theSession.LogFile.WriteLine(output)
' P, x8 ?3 z& d( K    End Sub
/ T% g0 U  m6 L( U( N; v* P8 c: `  J" P5 h9 C
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)2 E, |# J% \' o$ J4 B- ?' i
        If load_status.NumberUnloadedParts = 0 Then# ], ~+ \9 |! f
            Return. V$ Q3 t5 |' P
        End If  M$ l8 v0 K+ p  ]9 l. g5 r1 D

4 C& _4 C3 z- e# G0 U2 g        Echo("  Load notes:")
! C+ H) a# \3 ?2 d- G$ S2 ]6 {- Q, k& w  s9 [; w/ d6 F
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1' ?- k6 |$ x9 {5 a4 o% |# c
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
) {  k! j, j3 a* N6 A! l9 ^0 G$ K        Next8 t/ z+ {0 a6 H$ w# l
    End Sub
  F1 [# D! z4 G0 j9 v
/ ^. Y  w) @5 g9 D7 U    Public Function GetUnloadOption(ByVal arg As String) As Integer
1 `' A, |8 x3 O; a& r' B3 z( q7 X        Return Session.LibraryUnloadOption.Immediately! W1 R7 O$ f1 [" t5 `0 w
    End Function
/ J& A( U& t- ^' i2 W1 Z# }2 H. h% q7 K' n
End Module[/mw_shl_code]- Y4 q5 t7 H& B( H
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了