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

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

[复制链接]

2019-4-12 09:06:31 2470 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/ r, `, Y  e: n: m9 Z% k
Imports NXOpen  ?9 g& U- U, s# }  k3 \; v
Imports NXOpen.UF! q. r5 a9 P* |" Z
Imports NXOpen.Utilities
* D5 k% J) ~& P# L% q5 A! S9 c1 h'4 K" J, A4 Z' K; g  o
' The OpenComponents() parameter( q7 R: t7 J; m( ]8 _: r/ B0 W
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
$ k% N4 E3 K( d. T1 C' only opens unloaded components fully (see also PR-8406345)1 S2 {- h% ]* m( L; S% ?0 e, i3 X
' Workaround: collect and open all components individually$ A7 n) R% x( a+ P8 l4 Y
'; x4 T4 o) F$ p) e: N
Module NXJournal
8 X- ~! D* e2 T9 Q  M* r- W    Dim theSession As Session = Session.GetSession()+ ^- q+ U7 C/ R: G
    Dim theUFSession As UFSession = UFSession.GetUFSession()
) H7 m& r1 {% b) x0 l6 I    Dim dispPart As Part = theSession.Parts.Display- {$ y1 p# j9 I1 U2 l

& L% h! U# U  ]$ e5 C/ S$ H: F    Sub DoIt()
; ?# s2 q$ ?( w. P8 N        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
% q! E  E: n* b+ }# `& \        Echo("Number of Components: " & allComps.Length.ToString)
% V5 K; G4 R: |4 O% ?2 e3 s' o; _, K        For ii As Integer = 0 To allComps.Length - 1
; |. \" P. L7 ]' Y: M            Echo(allComps(ii).DisplayName)+ }) `8 [' y. d, @7 N0 n2 O2 x
        Next5 F. b4 `: y6 D, G

, ]8 `, R( S& ?' l        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading4 z" U% S: H0 ]; \5 |
        theSession.Parts.LoadOptions.UsePartialLoading = False
7 K$ B( A' F' _( t7 a% e$ ]: t
- f! Q5 s8 n, `& J- y& Q        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
1 f) @& k! h: |' a* f! a        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
4 x7 U1 H6 n0 E0 `9 Y9 y7 k; G+ p        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
/ L. B  N2 Q6 N" s. P" }            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1), N( o/ Y4 V- R& K8 N% C$ Z6 B9 k
1 T  W! a  J7 `" T
        reportPartLoadStatus(partLoadStatus1)8 \: |6 s% w) R: u7 [/ _
        partLoadStatus1.Dispose()5 C: J. Y& Q3 c% }" _7 B! {: L. P

' O) V# q( Q. a- l        theSession.Parts.LoadOptions.UsePartialLoading = option1
4 O& ]2 N& Q9 ]9 Q1 v2 u" i8 @+ J
    End Sub8 C; A  F# g. l1 c  `) X% `* ~
  |5 O# Z" \" U' q! r" c/ Y5 i
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()% t5 E1 J) h7 i# M, H1 h9 T& E
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
( }- h8 q/ X- p0 l' o/ d        Dim aChildTag As Tag = Tag.Null& a( e3 |  x* j9 F2 M3 v" J

  Q6 x/ ]# \& j/ i6 M        Do/ Y* r( l  Q% M, i/ t. Y# D& m
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)* T& X3 g! `/ `: p
            If (aChildTag = Tag.Null) Then Exit Do
  ]( U8 f, u; p3 V" w
, E8 K* w; A4 V3 ]            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
  }3 @8 |5 X* Z" }" c, y            theChildren.Add(aChild)( G/ ]- h) I) F$ i: \' a
        Loop
. w/ p5 r0 A) T2 h        Return theChildren.ToArray(GetType(Assemblies.Component))' d! d3 E' y- U/ P. y4 T, l7 c
, k4 ?. D% I0 h3 R- ]% Q
    End Function
" O: a. s6 J5 V8 p- D+ m/ S/ ]; ?1 L( C/ |! Y0 W2 F
    Public Sub Main(ByVal args As String())5 I6 D6 ^' ]4 b
        If dispPart IsNot Nothing Then
2 n6 e5 r+ B6 Z5 P) j  q8 A& U            DoIt()
& f: n+ }  r# Z- ^1 M; m            Return% ^! s; ^0 t' ?. Y* _5 z/ E, |8 S- F& q
        End If8 d1 O3 P/ q/ L2 p
8 N5 G% {9 |+ r% M, a
    End Sub2 M: V) Y9 H4 D( o2 D) K& V

* o" Z( f" e6 _6 k& y0 c8 A; ~    Sub Echo(ByVal output As String)8 ?- d1 U5 n3 h
        theSession.ListingWindow.Open()+ r" D  P/ N* P$ V; n- o! w
        theSession.ListingWindow.WriteLine(output)% z0 Q7 L: k( n# Y1 c! O; ?9 q% W
        theSession.LogFile.WriteLine(output)
' X4 B0 E* H) U6 ?- O8 V    End Sub# D8 k7 |4 \6 ?" h

7 M5 j, E# o2 E% b; |6 k    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
# R- W# f; o* \- {8 K: f& z% X( Q        If load_status.NumberUnloadedParts = 0 Then
6 V$ r5 p( W5 q6 s& H- B& @- @            Return
4 R6 O: d- ~8 p. ]        End If
- B7 m4 Y3 x6 S. B7 [! \
5 n  Q5 [: b, @; F& X        Echo("  Load notes:")7 o6 E, Q" K. L+ Y* d
8 w" @# P: Y2 m6 {
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
5 b# S. v! X2 _( m            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
% b3 {! x0 G. E        Next
6 C- k  G" q* K% j1 N& r+ C( U    End Sub9 K0 N' s2 c$ D9 K/ ~8 K) ]

. U: s! z! F  [8 J$ P    Public Function GetUnloadOption(ByVal arg As String) As Integer) G! p3 e: }  ^1 ]4 ]! G1 {  J
        Return Session.LibraryUnloadOption.Immediately6 k( a! d7 H$ v8 P0 K
    End Function
1 B: F6 L3 ]0 a& ]1 ?0 G& K# {0 D( W6 h" B. N, n, ?
End Module[/mw_shl_code]' d; E4 D2 Y( z% ~; i. {+ i- J
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了