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

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

[复制链接]

2019-4-12 09:06:31 2425 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
- O, \5 \8 h0 I8 m* l. qImports NXOpen
; p" P6 i  r! ^Imports NXOpen.UF
! x: i. i9 ~2 W5 E! v' Z/ Y) ^Imports NXOpen.Utilities3 m( L$ A8 A& r' M
'
9 k& L% v& B( b+ B7 {4 p' The OpenComponents() parameter5 N  Q! U% }( r
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
* t/ k9 l# M+ k. p' only opens unloaded components fully (see also PR-8406345)
* q- a3 v4 |& L) |* q' Workaround: collect and open all components individually; l( j0 q1 p" f% J
'
# Z+ l/ l3 d! iModule NXJournal
. h; {* X+ c# E8 s1 K+ a8 u    Dim theSession As Session = Session.GetSession()4 D1 v4 q- Z" D' Z9 s; @
    Dim theUFSession As UFSession = UFSession.GetUFSession()4 A* U! V, h7 e% x, S" ]. H
    Dim dispPart As Part = theSession.Parts.Display! x+ `; h% v/ m) m5 X( j; b6 z, ~
, f& f8 M: s# Q8 Q
    Sub DoIt()6 j! i0 h5 ^7 m' h% M$ [* G3 K
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)# J6 L; q+ W; A9 ~/ C
        Echo("Number of Components: " & allComps.Length.ToString). |% S2 o) A: d0 d; B; ?$ b, F5 N
        For ii As Integer = 0 To allComps.Length - 12 [& L- t8 L3 @  j" f% d
            Echo(allComps(ii).DisplayName)5 u8 K: G9 R2 j; B, L- ~7 R( i0 c
        Next
; [1 X' x$ p& @1 m: q% W# G, M8 w9 P# _4 Q" e8 i
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
' T* ~9 @. z) c" a* f; F9 L        theSession.Parts.LoadOptions.UsePartialLoading = False
4 W9 t7 a$ d9 e. k2 `5 Y+ Q0 l5 X
- Q) M5 S: E& J' c$ }6 m0 U/ w        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
& _9 o) g2 k8 }& P4 I        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing. ]6 a6 T3 w2 H6 g* n
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(  s- a9 u: z. ?
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
( b: h+ M8 M) e4 j3 Y+ z, i4 C0 c6 q# P3 o
        reportPartLoadStatus(partLoadStatus1)
' w3 N  r8 O7 z! }+ i5 O        partLoadStatus1.Dispose(); u( |! A/ B# _
1 p& m: ?" p; t7 m
        theSession.Parts.LoadOptions.UsePartialLoading = option1- f9 `; W$ ?: G/ I" s2 s. L7 n& [

1 w4 q1 b/ O/ L0 [    End Sub2 N, G& u5 e, A
) l+ @8 ?  ]- {3 {
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
* ~3 `9 a/ P- [3 Q% h        Dim theChildren As Collections.ArrayList = New Collections.ArrayList7 G, ]# ]. D. |( m- u) M5 u/ D
        Dim aChildTag As Tag = Tag.Null
5 |) Q' o0 E# Q* J0 ?, m$ d! k0 j  ~3 H; K! M2 Y& }4 @) y. c% @% z
        Do4 ?) f1 a* U! K3 J! u2 d4 ?
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
# c. F2 @, T8 Q4 U6 o" T5 x: j            If (aChildTag = Tag.Null) Then Exit Do
" M6 W! I  O: A2 M6 D3 a3 E8 v1 v8 q( K7 D% d. `! F' T& w# e
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)8 i$ u3 _0 b4 }% @9 ]3 r, L3 P
            theChildren.Add(aChild)7 N5 e8 M: `( E( p* ^& T& ~$ E: w
        Loop- ]8 A- x9 t& o+ S
        Return theChildren.ToArray(GetType(Assemblies.Component))
' c+ Z) P+ T& k! F$ g+ r6 j) U- s! R1 T# G- }6 @2 s
    End Function
' o' X6 a& v+ q, Z- i7 j
8 p9 J  l0 J$ O& b/ \    Public Sub Main(ByVal args As String())
( }! R1 q: Q3 H2 E( {        If dispPart IsNot Nothing Then# V  y  l& ~4 o8 m" ~. R
            DoIt()
/ f/ x  ?: `" s7 k- Q            Return
" R+ C, h: R8 T) C& q        End If
) \4 z6 i: h8 X- t! N, Z! P% g5 e- A- {
    End Sub, I- z5 x/ a( b6 ^  r
( H% ]7 X& y5 l3 R/ z
    Sub Echo(ByVal output As String): p* @8 C$ _$ A. B8 x# t( w- Q2 ]
        theSession.ListingWindow.Open()
  e1 {( t: i% F! a& |' s5 @        theSession.ListingWindow.WriteLine(output)
8 l2 }% K' V9 _) m4 w        theSession.LogFile.WriteLine(output)5 l$ U8 w: S5 m& r. i( ^
    End Sub
! m8 j1 H/ }0 D1 V
5 g9 x+ m1 Q) R, r: G. u/ H    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
% v: e9 X- Z& ]: c# L        If load_status.NumberUnloadedParts = 0 Then
2 ^9 Y; p9 {- E& d  Y            Return
( P0 s7 I% W: j( b        End If, B' z7 \2 v7 W! @/ I& f; F
% x8 U% b0 W2 b: `4 |
        Echo("  Load notes:")7 V( a$ X, {( L/ v

: r, A% }9 s) f# L2 W        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1- Y3 h# O( A# o4 B5 R. _7 `
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))3 g# f$ o" ]& [9 l0 [: h6 R# ^
        Next, l6 ~- J! ^7 j3 I  N$ j: t+ S/ s6 c
    End Sub
5 J  n& U8 z- }1 u2 ], `/ j5 T; ?8 K5 X: P5 m) ~. T
    Public Function GetUnloadOption(ByVal arg As String) As Integer* r2 Z: {5 z/ p! q
        Return Session.LibraryUnloadOption.Immediately( Z: f0 |! i) ^4 l2 _& p
    End Function
" D: e' d  B; g/ N* q, b
: x. G) L; o1 O1 P& c3 M/ wEnd Module[/mw_shl_code]0 I) ~  `4 G5 _. _1 {1 h0 b; |' {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了