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

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

[复制链接]

2019-4-12 09:06:31 2326 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
- `4 ^+ S* `6 r5 O: ~: gImports NXOpen+ l. s- R/ F9 w, o6 l* j
Imports NXOpen.UF
# i( Q6 I. f, K9 IImports NXOpen.Utilities( G& U9 ]2 Y4 N0 l+ g  s% a; F# i7 |
'- P1 s0 W  p& ?0 I6 U, `
' The OpenComponents() parameter* ~9 Q% ?2 p, c4 o; m
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
; N2 g" X6 s% j& G. b1 f' only opens unloaded components fully (see also PR-8406345)
$ X# w( t! ?3 ]' Workaround: collect and open all components individually2 g4 u7 _3 \6 p
'
2 R: \9 k8 s% O& rModule NXJournal3 D6 M$ N; \, }# K9 w$ K* n/ i
    Dim theSession As Session = Session.GetSession()( O/ K/ t( q0 e. ^- ?
    Dim theUFSession As UFSession = UFSession.GetUFSession()  `3 X+ y9 Y& W$ J/ ]3 @! Z2 r- m
    Dim dispPart As Part = theSession.Parts.Display0 n) c% N7 p; i* y

- V  V; h0 P/ @, o+ i    Sub DoIt()7 `( V+ A# R7 z& |1 h
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)0 J, `5 J% Z! g6 T7 G8 K' I
        Echo("Number of Components: " & allComps.Length.ToString)
# k! C) R6 m7 f. Y/ n3 f        For ii As Integer = 0 To allComps.Length - 1
4 T& W9 h  [0 f1 x1 K            Echo(allComps(ii).DisplayName)6 B# c! p/ I! A- I9 n5 e  w' X5 _+ x
        Next
7 x$ _5 K& p" G* C6 e) \0 s' m( O1 u3 Y9 |3 e* v0 P
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading1 ~6 d  S+ {: F
        theSession.Parts.LoadOptions.UsePartialLoading = False
: u% J& `3 U. _
# v% q7 O+ t- r8 D& T9 b/ ]% l        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
; p' V: {: C" p        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
2 L9 g) Z, E* X. Q        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
$ ^5 j6 h/ ^  l, L2 B- d9 f2 ]/ J            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
# ]4 X  W4 b# q* j5 \+ |  k5 n
* _" u" b- j# b  L, \        reportPartLoadStatus(partLoadStatus1)/ b# Q; a6 B# \  V+ H
        partLoadStatus1.Dispose()
7 B2 n& q8 o. U0 w6 w4 p& d2 j& X' x" Y8 j$ c% S
        theSession.Parts.LoadOptions.UsePartialLoading = option1: Y8 x$ m+ I: j+ x; k2 g/ d, U

1 H: M  B/ {: ~: Z7 x/ |5 D    End Sub
# U3 o6 _9 Q! K) J1 [( P# K1 r, Y7 n) D' {6 ^7 d
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
, v* R  b/ }" D+ V' H$ O        Dim theChildren As Collections.ArrayList = New Collections.ArrayList7 j) u* R: g. W% k! b
        Dim aChildTag As Tag = Tag.Null6 u5 _( D4 l( Q1 {6 Y; d+ j/ `) b

9 k- [/ s; U  o; {3 ~        Do
: y9 F: a6 L3 Y6 D6 x4 J$ }            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)- z0 e1 n2 s: X% \2 O! |2 W
            If (aChildTag = Tag.Null) Then Exit Do6 [& x. \5 ^0 \# n: A/ h

( j( x7 ]/ b/ @2 q  d$ P0 t# r            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)0 p" D* h7 l' [. Y* q# m8 C
            theChildren.Add(aChild)7 O# d9 U9 v# j! a: h
        Loop3 G1 |/ q: R( b0 T: u
        Return theChildren.ToArray(GetType(Assemblies.Component))3 l9 R7 ]' q* F- b, U
4 g' i& ^: K; n0 X! U( u) q- R- Z
    End Function+ w6 J9 g) `5 O- u
8 C; i4 r4 V) ]' H$ u, A3 p* V
    Public Sub Main(ByVal args As String())  R- a7 s, W! Q4 l, g& E; I% a  _
        If dispPart IsNot Nothing Then( P0 @9 b7 F5 _" T4 s) O9 {
            DoIt()" f! D$ G  p" w5 ~
            Return
/ e- g$ r3 G6 ^. a: h; e8 O        End If: P* x. e, h' x  w1 A- G" l1 m
. D1 v5 N5 a4 a" L
    End Sub
: z+ i  d' W1 V" T) b2 A, E; n( ~
) F* h3 I( O5 w    Sub Echo(ByVal output As String)
2 a6 M0 m+ d3 k        theSession.ListingWindow.Open()
5 {7 ^: O, v6 b+ f; O# L" ~$ g) ]        theSession.ListingWindow.WriteLine(output)
& O9 c  _/ K0 W! [, B, y        theSession.LogFile.WriteLine(output)
. |2 s7 U% m# K) O3 h# C5 v    End Sub
, S; s9 i1 X! N2 L. D: j. P
! x5 a. p( f$ z8 @5 ~* @3 Y4 P    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)- A8 {& T1 f4 p7 }
        If load_status.NumberUnloadedParts = 0 Then
3 Q0 l- O9 X& T* W            Return
8 p2 F* c" s7 b2 o6 z. C: R( a        End If
! r$ J( w( [5 V' j8 ~6 h
& [; Z+ U3 Z2 ?+ }        Echo("  Load notes:")
% N8 Q6 G6 j  Q6 _3 _# [- }  f9 Z+ H$ t; @9 V) y" f
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
" a6 C; {6 k: Y, h            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
: w2 L( m' S* T% e+ K: _0 b- o8 O. h        Next
, b0 N7 c/ H" H# I2 l9 r    End Sub! Z6 _5 X4 J0 [
' ?( b  U2 b: B9 S# K
    Public Function GetUnloadOption(ByVal arg As String) As Integer% T) x# S% h) `
        Return Session.LibraryUnloadOption.Immediately
0 l$ m' T! |: e    End Function
5 d/ T( E$ g5 _: A5 ], @  Q( G+ w* E2 b& N$ F: z
End Module[/mw_shl_code]4 e: D# N- F  T0 w) V
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了