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

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

[复制链接]

2019-4-12 09:06:31 2436 0

admin 发表于 2019-4-12 09:06:31 |阅读模式

admin 楼主

2019-4-12 09:06:31

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
[mw_shl_code=csharp,true]Imports System4 ~, D4 S. ?! l2 l/ P
Imports NXOpen
0 q" i! Q+ y( gImports NXOpen.UF
/ c) D" p7 r% o; y% FImports NXOpen.Utilities$ a; ~% p0 \6 R$ {
'
5 n7 h2 L! N& ]# X' The OpenComponents() parameter4 p5 J% o0 C$ T8 u& W& O# J; s
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
* Y' [: {  m, ^# f# V- u5 H" l4 L' only opens unloaded components fully (see also PR-8406345)
# {1 T7 O3 ]! c7 @) s7 H$ F) O' Workaround: collect and open all components individually
7 b* D4 i4 P) b- a'
* d  I( e& @6 T  U6 n6 T! `% X, BModule NXJournal
0 {/ u; r9 I: ^+ _    Dim theSession As Session = Session.GetSession()
  c* G: `+ B# b" M# I# t    Dim theUFSession As UFSession = UFSession.GetUFSession()% ?. Z- R8 V# f0 k' W9 X. U
    Dim dispPart As Part = theSession.Parts.Display5 u0 n( B! k) j' r3 O! f8 X

: Y* p9 {$ L5 e) o) k    Sub DoIt()
1 H; M. z+ h0 _* Q        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
& U0 k3 m+ l' d) V4 u4 D7 [  j        Echo("Number of Components: " & allComps.Length.ToString)
3 L! {6 U+ y6 t# _! L& {        For ii As Integer = 0 To allComps.Length - 1
0 ^+ W! Z, c3 W$ l            Echo(allComps(ii).DisplayName)
2 [8 \% {& X( U4 N  U7 s; O        Next
" t: Q. e" X  M# Z. @# C) s" p$ n+ T1 n& U5 a: n& m$ a+ Y) p
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading  L- I  G) r) X! r
        theSession.Parts.LoadOptions.UsePartialLoading = False
% r" b) d9 N0 w
$ B& T. Y1 s( ?        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
" P7 J# G' j: z: y        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing. T6 \4 }- J3 f' ^" |* B
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(* b; ^* a0 u; ~6 z1 \
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
) P0 a# S& q% d, Z3 u" }5 e, L) T$ U5 ]. [; N7 L
        reportPartLoadStatus(partLoadStatus1)$ T5 X% e# H$ Y5 B1 \7 P
        partLoadStatus1.Dispose()
5 k5 r5 r! O% y5 ^! ~, J2 I* c4 K4 E$ F+ O+ }1 z1 y
        theSession.Parts.LoadOptions.UsePartialLoading = option1$ _' c; d6 X2 ]: b( ?9 \7 ~' |' X6 |
7 S" v( v/ c0 H, s
    End Sub& q8 {9 i; @7 y: C

; N7 h+ W, j" q    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
/ o8 P4 \' }/ k% J) C        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
% Q* }0 p6 k" t) g8 ?8 {        Dim aChildTag As Tag = Tag.Null
( i) Y, G: m: G! J+ `' T( W- u' e8 B1 y% b
        Do
; ?+ V, j! Q" l" w% v, u            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
1 Z* w5 M/ c2 ~  v            If (aChildTag = Tag.Null) Then Exit Do# x2 E& |' _- J1 A) K4 A
, z% `3 J/ U7 J* P; o
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
& Y( {5 r# R; |            theChildren.Add(aChild)% T* n% l) ?6 v' Q/ a  c' g  r2 J- q- l
        Loop0 p+ q& h1 i+ w( o/ _1 k' B
        Return theChildren.ToArray(GetType(Assemblies.Component))
( z) Z6 R; V& |( U: @* `
$ `4 [2 V# p5 |3 U) m4 t+ B8 t% }3 T) p- e    End Function
+ x% k1 K3 q9 m: q5 D3 `+ G2 i9 R5 H9 d$ c3 h" p
    Public Sub Main(ByVal args As String())% h. n" G" X, j! n( \8 R- F- H
        If dispPart IsNot Nothing Then+ ^/ W# L# B: E' f3 e6 Y* q, }
            DoIt()
- o9 A5 q5 W$ y, H4 u: w2 S2 l            Return% F6 d( ]! ^8 v% v  A
        End If
/ E; F1 Q5 M: |3 U6 E1 L# B1 K! D# R. Z: [# Z
    End Sub4 V* \) {, z/ O2 V& L

. E. Q; O: B5 C! e* K& X. f0 |    Sub Echo(ByVal output As String)
) p* i3 I8 J/ k. x        theSession.ListingWindow.Open()
6 x  W3 |- a6 @; ?' t- r5 H! W9 q        theSession.ListingWindow.WriteLine(output)
/ j  F8 ?6 [* f3 ^2 K        theSession.LogFile.WriteLine(output): g- G$ C0 T. m" v6 {, M: L
    End Sub
6 j6 b, T' C& ]( O3 U* e, Z1 b" r$ \: B% U- X! G+ I' T; h1 N
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)$ q' h  G) K$ s! z1 I" @" G1 P5 J
        If load_status.NumberUnloadedParts = 0 Then
# w" A, l; ~! z( y$ ~/ p( p            Return- E0 B- |! B$ Q8 T* x# K5 T
        End If
# f1 n5 c, o7 H5 ]+ {
' M% M  _0 i$ p; D        Echo("  Load notes:")
3 R- L6 V9 P7 N- N
( c8 I0 F  z5 m        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
. r% M) L8 U8 _: ~            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
( M1 _: D. ~% ~; d9 w% p        Next5 {! `  F1 w$ e  |0 [5 W
    End Sub
9 ]0 V9 E5 M$ I. U; \, y7 y7 `: ?$ u2 v$ t6 u1 Y3 h6 L
    Public Function GetUnloadOption(ByVal arg As String) As Integer. B: J3 \+ H4 x/ |' N, A
        Return Session.LibraryUnloadOption.Immediately7 U+ r% ?, c6 Q
    End Function: H( X/ _" }/ M- |! v5 ?
1 \; l% m$ ~' x- G$ s/ ]8 u
End Module[/mw_shl_code]5 E- o1 d! \4 Y& f' e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了