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

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

[复制链接]

2019-4-12 09:06:31 2388 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" ^" [" @, c4 p
Imports NXOpen9 t, e8 ~3 G2 t! m. J& c) H
Imports NXOpen.UF7 N) s* D9 C3 W: b1 J' O
Imports NXOpen.Utilities, m8 x) ?* O9 m8 C; j9 [$ I
'' T" y% f8 P+ x$ e% f
' The OpenComponents() parameter4 Z% y- K$ r! R7 q' q
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly+ t1 Y! N! m- v' C$ J
' only opens unloaded components fully (see also PR-8406345)3 s1 K9 l# x# O' J( |; h6 i
' Workaround: collect and open all components individually
9 H6 ^% H: h/ ]- Y0 v'7 K" s) {) H. ^
Module NXJournal  |' M1 i: ]6 a8 d3 U
    Dim theSession As Session = Session.GetSession()
, z! u2 z5 L  E( H: Z    Dim theUFSession As UFSession = UFSession.GetUFSession()+ t) n- Y3 i. t1 q) v0 v9 n
    Dim dispPart As Part = theSession.Parts.Display
. p; [# ?8 Q( G. N' _+ C/ o; ~! Q
# N2 c  m0 H* _, F9 e; ?    Sub DoIt()$ ^' d& G3 Z2 Q3 V( d' b) `$ @
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)) `+ Q  f7 s2 x: m4 q$ }3 a
        Echo("Number of Components: " & allComps.Length.ToString)  J: s! d) I0 z$ w  W
        For ii As Integer = 0 To allComps.Length - 1
# ^5 q/ S% ~/ @. e/ H! y1 Q            Echo(allComps(ii).DisplayName)
& ?2 w; p! B. K$ Q: \! q        Next
; z. N8 G( h' }! [
$ m. w, {  d" h/ W3 P* k9 N' Z8 n        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
, D& I, _/ ]8 {3 E* L! z        theSession.Parts.LoadOptions.UsePartialLoading = False
# Z$ j, W/ {( a- k) }  g+ N) a  O1 V% k0 j( X% F. g
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
- t0 f' ?9 w" ^3 }$ y1 l        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing  I+ i8 ~" [4 j: Y1 Z
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
/ J: H6 w  x3 O6 o            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
& N9 Y6 u' ?- \$ ?( S6 m8 `
! d" _$ ^$ o7 A0 n- v        reportPartLoadStatus(partLoadStatus1)# s. K. U; g1 i. z: P6 L3 G
        partLoadStatus1.Dispose()
6 h8 [" }# ?: ?5 k! e  G! R: `% B9 n& V$ h$ {0 W7 B, z1 K- B
        theSession.Parts.LoadOptions.UsePartialLoading = option1: m0 }! L1 b+ E, j, I- {
" f" j' U: x" d
    End Sub- N$ @' g9 c. ]

  U5 c* l5 U+ D" X4 o0 a, F* t    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()9 U8 d- a  A/ M! C) s
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList  y6 ]) \' m1 a
        Dim aChildTag As Tag = Tag.Null/ V7 _% {0 O$ T8 l& v7 u- l: n; ^
+ _1 `: A% l/ ]4 `$ H: J
        Do
& {! K8 K2 j5 E1 s0 a            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
. b2 Y. Y( @8 j% Z* H3 S% [: L            If (aChildTag = Tag.Null) Then Exit Do2 Y% y1 T  `* X8 N& A
* b7 d. r" H8 P" I9 ]
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)1 y+ y- e1 I3 T1 k
            theChildren.Add(aChild)$ B3 K  W- O- A1 @" J3 r7 o+ P) _
        Loop
: S; K+ R9 x' k/ E/ s; M5 D; ~        Return theChildren.ToArray(GetType(Assemblies.Component))) [2 q5 y8 C- J1 S+ v+ {# _
- S' k  w; e7 I& X, A% Q/ M0 j2 V
    End Function: n7 O; p& n4 k
# c7 f3 _- N+ H: o( b% ]3 q# H
    Public Sub Main(ByVal args As String())3 `3 {' m7 B9 l: ]& f5 f
        If dispPart IsNot Nothing Then
# J5 R& |. A4 H8 u7 H: h# E            DoIt()) {+ m9 `1 r2 w6 C' M
            Return
, q% D$ L# i, @8 A        End If: v. c! t3 g' l5 t
: P" d" a+ h; _3 t6 B% A
    End Sub9 c" L5 Z4 W' _" L/ U" _
: r, O" q' |! W1 a8 }
    Sub Echo(ByVal output As String)! Y9 L0 v3 \+ y, f) m# s
        theSession.ListingWindow.Open()
# m7 S# B# s  Q2 h        theSession.ListingWindow.WriteLine(output)
/ h6 J  t  s' w. j. l8 U9 i1 @        theSession.LogFile.WriteLine(output)
4 u8 V$ t2 R2 |1 f+ ~$ F- X0 l    End Sub
2 \& m) L! v4 U  |3 }. m  X( q* Y4 S0 y" e
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)# g; t: ~4 l+ J' l, o; I# k
        If load_status.NumberUnloadedParts = 0 Then
& }2 ?7 t) L) W5 r9 C            Return
1 l" n- P/ a9 v" E; D/ o4 x        End If3 A8 ~1 F6 S/ G1 W- [8 S8 ?

) Z" R/ T3 F; ^/ e  i3 y( k, i' K        Echo("  Load notes:")
$ g) d7 V/ Y+ U* |
2 e/ p; J/ [: F. y: i9 j        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
( X7 e, a; }# G) ^8 p% g            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
' T1 R6 g* n( ?- E$ P        Next
( M; b4 n0 k- }    End Sub
& X* U( d! N* W
2 z6 {: s( y, K! U    Public Function GetUnloadOption(ByVal arg As String) As Integer* r$ q3 l% p9 ?- w; U$ @% y
        Return Session.LibraryUnloadOption.Immediately
* ~' R) u6 _2 k4 T& A    End Function& \* q: d4 M: S( f. w

# r7 `2 i, E7 _# n" X3 ]End Module[/mw_shl_code]
) b" M! R1 F/ U- T
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了