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

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

[复制链接]

2019-4-12 09:06:31 2452 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/ V, ]% n$ ~, n- c
Imports NXOpen
+ I' I; @; G2 I( j5 w& A7 \Imports NXOpen.UF: Z  {( f' h0 g& L) w) x. v4 W
Imports NXOpen.Utilities4 r8 {4 L$ v5 g- s" V
'9 m- r# d& W! A' \$ |. [) H$ P
' The OpenComponents() parameter
+ \2 X4 B* e% K1 v' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly( O# U; O4 d# J& w
' only opens unloaded components fully (see also PR-8406345)
/ h3 B' b5 x' M! N' Workaround: collect and open all components individually
4 x* T7 j: R1 e'% t+ H5 k, U- ]- }3 g
Module NXJournal( A. \6 L: y8 {# e0 Y
    Dim theSession As Session = Session.GetSession()$ X- A1 D- m( i. [
    Dim theUFSession As UFSession = UFSession.GetUFSession()
$ |  y( q) T" k& t    Dim dispPart As Part = theSession.Parts.Display) ?! K4 W: B6 n  c! \* G/ ]

7 a3 ?- B5 F; l$ G    Sub DoIt()
: ~" k& Q  |0 Y4 H0 o        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
* I- l7 A7 ]( Q        Echo("Number of Components: " & allComps.Length.ToString)7 l6 ~$ t/ E& {9 o
        For ii As Integer = 0 To allComps.Length - 1" O1 T/ j: r7 S9 o# z; e& O3 b
            Echo(allComps(ii).DisplayName)0 |( S+ u4 _* f3 h
        Next& ^# g- H5 h% G
, v1 q" R. {6 H
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
0 D, h4 t) q$ b$ J- R& G+ P/ H        theSession.Parts.LoadOptions.UsePartialLoading = False
0 l1 F  P% M  z4 ^" [4 J  P
9 p2 K. T2 }: j( I9 s2 N/ v        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus& c6 T& a' `# a
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing$ A  y. N' J7 Z' J
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(6 J+ Z+ v3 H2 i  y
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
" i: J4 f. U8 n9 i$ |2 C4 }
4 w; e$ `' t% D! x/ G! k% v        reportPartLoadStatus(partLoadStatus1)) {  I* D# e- t  e/ m  a; m1 C1 A& R
        partLoadStatus1.Dispose()
, S( f* N, \5 d+ Z" q! z+ H
8 Y# j8 f& X# ^$ X) x% ^        theSession.Parts.LoadOptions.UsePartialLoading = option1
) a6 q. |3 ~: a3 K( M6 t* ^. `. A1 `! ~1 H* o. H0 q
    End Sub" x/ O* N" g" }$ h/ W

( W* s6 m5 ?" t. V) U$ q" Q    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()8 ^4 F0 D+ A+ l
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
) q. ~: b" c! o* ~9 o        Dim aChildTag As Tag = Tag.Null
- w6 c+ I0 P8 X- J& ~' `4 e3 f4 x1 i9 x0 e" `7 u0 a9 B+ s
        Do- I" X& `& T! _( A
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
. P. e1 p, c; B            If (aChildTag = Tag.Null) Then Exit Do2 X: g" G6 W% q5 S" z5 Y
9 ~( F& h  r4 m( [' r7 n
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)9 S" G4 b3 @) E+ Q) `! O
            theChildren.Add(aChild)
( n$ w) E1 ~7 [% m        Loop" M6 @! y* v" _& }, U
        Return theChildren.ToArray(GetType(Assemblies.Component))
+ ~' G8 k8 @4 U3 Q+ ]- z' Q( S  }& _  k1 \" }& ^! _
    End Function+ p9 @/ ~( E$ n  k0 f" U

, k) U' S$ g/ i9 I* ?    Public Sub Main(ByVal args As String())1 s& [- u& B$ {9 r6 ]# J
        If dispPart IsNot Nothing Then
; L" k2 `& \$ _5 V* p* Q. r            DoIt()
! b# E4 O. n8 F6 B5 }3 ~% H( n: M            Return
1 J+ c# ~  C. b4 a8 n: K/ i        End If
! o/ [/ I6 {' X  s$ `& x% U, `( v
    End Sub
1 M% B5 H2 j+ z. V+ n8 _( J2 [4 e2 f, p' y) w' s
    Sub Echo(ByVal output As String)$ l9 Y) q5 d5 O8 K. U2 R2 {0 z
        theSession.ListingWindow.Open()
6 T+ j7 P! H: f6 J& r# v2 Y        theSession.ListingWindow.WriteLine(output)
, K% E. @3 S4 I. e& v        theSession.LogFile.WriteLine(output)
+ P$ X: K2 w: g5 {2 m    End Sub; Z  N! B7 A, j
& \& L# K& J: g- A/ r, \( h4 ~. g
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)0 W6 F* p5 l$ i7 ^4 R5 o4 I
        If load_status.NumberUnloadedParts = 0 Then
' E4 D7 ]- n' n8 M, J9 R8 h            Return' k  M$ S5 I7 |1 M  @
        End If
5 v; j# w: L  H4 @( k
6 u& K: ~8 u  X  J3 c% `- I        Echo("  Load notes:"): n, s# a) B$ q8 b" y5 t4 {

0 `  P4 R, B  q3 N) O        For ii As Integer = 0 To load_status.NumberUnloadedParts - 17 D, H5 |5 H& o' e" w2 e/ l6 a
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
  M% z1 q, @3 E$ n+ h- e' R        Next
8 k$ B$ L! R' w2 f0 t    End Sub% b- U  [) D( _+ t
/ M8 D& a' K$ H! Q
    Public Function GetUnloadOption(ByVal arg As String) As Integer, r/ @+ m! G  Y: t. C" v
        Return Session.LibraryUnloadOption.Immediately
4 l5 K" V! d* a5 r0 }    End Function
, ]" x! R8 F* O/ j' V# s1 D# K% r
- e/ S* K% H5 V4 G% x& QEnd Module[/mw_shl_code]! `& \4 E6 y+ a4 H. [& ^0 ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了