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

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

[复制链接]

2019-4-12 09:06:31 2473 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
% V5 C, l6 A4 [Imports NXOpen1 `. y2 y& b6 R5 u
Imports NXOpen.UF( m- E6 O) C6 N' U
Imports NXOpen.Utilities" r% ~9 G, c0 W7 N' R% R
'
# ]( x- D* m0 I! X5 V4 h+ {, {' The OpenComponents() parameter) m7 L' L' w( }& l; j9 U! F
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
+ F  Q$ C0 F& w+ A( z8 Y' only opens unloaded components fully (see also PR-8406345)
7 M% K1 p1 X' D4 H0 E4 [' Workaround: collect and open all components individually0 l4 u- }3 J, }8 o" F8 R, y
'
0 P6 F$ p4 p2 T* s- DModule NXJournal" I, B; Y; j" N8 U+ a8 f
    Dim theSession As Session = Session.GetSession()
' q  P! `0 K1 }6 L5 w8 s. p    Dim theUFSession As UFSession = UFSession.GetUFSession()1 S+ v% x4 F9 q7 b. F
    Dim dispPart As Part = theSession.Parts.Display
8 Y  G% K) [. [1 l: B+ `7 ?1 M0 w7 a7 ~3 @6 M+ F
    Sub DoIt()
2 z# F6 S) m; Z: u0 g) C, u        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)* {" e4 s$ _) L4 e2 N' {
        Echo("Number of Components: " & allComps.Length.ToString)2 H' g# O0 G, L8 ]
        For ii As Integer = 0 To allComps.Length - 1
4 C8 l: P  \$ }5 s. p4 e! ]            Echo(allComps(ii).DisplayName)) w3 ^% ?) X+ P
        Next
8 S4 P/ C) y4 M5 x2 T4 e/ C/ W! L3 B: g  d
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading. R* h, m, K6 q: B" O* ]
        theSession.Parts.LoadOptions.UsePartialLoading = False
# ~% Z) E& Q1 i/ i9 n+ {. `( ~) v' S! o: T% O- _
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
2 u0 v* I" y8 a& O        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
( d2 U# Y. B( e# S0 ^        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(" O$ I1 o! V  s, C1 p( q: M
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
! M' ^0 S, x0 b( F3 `! Y7 l% Q9 @
9 {; c8 y% R7 \3 v( P, R  ^3 G0 f        reportPartLoadStatus(partLoadStatus1)
; W, d6 _# L7 q        partLoadStatus1.Dispose()
) |1 n: R, {4 \4 J6 {+ p2 l! |/ v; `0 u. A
        theSession.Parts.LoadOptions.UsePartialLoading = option1
: s% t* k4 u1 _! |
- [+ ^2 j5 b' s* `    End Sub
6 R" E: [# l% o. \) r- i6 u! b  ~$ l$ s) A5 @1 w2 B
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
3 \0 A, W- p1 D: b! `9 ?# n        Dim theChildren As Collections.ArrayList = New Collections.ArrayList4 M0 ^/ W/ K7 s- B5 U- X7 m% W
        Dim aChildTag As Tag = Tag.Null9 }' c7 |* r1 w$ [3 s  o2 ?: z9 n
# v2 k7 n( V* ?$ [' J- D6 C' s
        Do
" l+ q& x/ I% N1 f( Y( `            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)* h" y7 W5 P8 |8 {& P* b
            If (aChildTag = Tag.Null) Then Exit Do
% I, j3 c- K0 C+ g7 b+ }: m* i/ f5 p5 m% ]7 v: \# k
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)( K; w4 \+ i" M3 a! z  l
            theChildren.Add(aChild)9 \+ L* v; c) `* f
        Loop8 v1 D7 J4 U  `# ]
        Return theChildren.ToArray(GetType(Assemblies.Component)). x5 F8 M% M7 |: ]/ N
, n+ @$ W, t/ B5 d# ?
    End Function' ^9 a' X3 ~! y% W- t4 m
5 x3 S# W7 ^* q, e& p; z2 y
    Public Sub Main(ByVal args As String())# M8 M. {- z& P
        If dispPart IsNot Nothing Then
$ K0 l, _5 C: p- L& |            DoIt()
& I+ A: B9 H5 ^            Return
" J6 s5 K$ j' Y4 s4 c        End If
2 T; I4 l5 M) `; K# k. t! C# H7 U# b3 i
    End Sub
: S' ~* E7 C) H1 X+ r  i( |, r" P' V
, T7 k! o  I2 H; d    Sub Echo(ByVal output As String)
4 t6 ]: y& z1 \2 f: ?1 c        theSession.ListingWindow.Open()$ W0 D1 t+ L. z, J9 V$ j
        theSession.ListingWindow.WriteLine(output)% v- A  _( s4 {4 j4 b
        theSession.LogFile.WriteLine(output)5 b7 B7 d+ p9 E( c2 {0 Y
    End Sub/ W& @' Y9 P/ V0 j' z
! o- F& c5 f9 e* p- |! k; u. X# H1 }
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
7 t/ E5 n/ t" }$ j/ b, K        If load_status.NumberUnloadedParts = 0 Then9 l5 t8 Y! s: O# ^  g6 I$ J! @5 P
            Return
2 C4 f7 ^' ~! i, q        End If
' L& _6 f8 P" `$ n7 G8 P" G: z3 Z9 _- d$ N
        Echo("  Load notes:")1 K* U6 i# F/ v# A
1 t9 x  w- p6 W: K1 P
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
; R0 q% x" R; h% P7 r. @            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
! i/ o) Z. g0 \/ n4 j* N; R        Next# A' B0 }+ @- x7 G1 q
    End Sub
6 t0 P! `9 S, a" C, Y0 |% F: m4 J' I# X: ?. A& g& i/ @6 k
    Public Function GetUnloadOption(ByVal arg As String) As Integer
0 |. T( I( H* R1 B        Return Session.LibraryUnloadOption.Immediately
1 c/ Z) m! x2 }- n    End Function
9 n6 ^( D  z- P# U/ W  ]  X5 j* e- U1 v. N
End Module[/mw_shl_code]5 k  g& d$ m+ I1 \. E$ Z3 U
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了