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

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

[复制链接]

2019-4-12 09:06:31 2495 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! S2 m3 e* O! dImports NXOpen* h9 g6 e8 X9 ^' |# U- s- m' a
Imports NXOpen.UF
* \1 S5 C5 D8 Y) Y+ f0 z' RImports NXOpen.Utilities! l( Z$ Z3 d8 m' r8 m
'
) s( n; ?, F. E  X. @' The OpenComponents() parameter1 P4 `( q/ f! d" z% `# L( n
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
  ~, V: X5 {$ e* _' only opens unloaded components fully (see also PR-8406345)% {0 x- z# m% E1 x9 K! t& F# k' C
' Workaround: collect and open all components individually0 c/ K( W$ O6 K4 P/ d
'
# H9 E( C: V2 o, j3 r0 V+ NModule NXJournal: @5 }1 R1 `6 Y  I
    Dim theSession As Session = Session.GetSession()
# W  K/ k2 s1 C) d. t    Dim theUFSession As UFSession = UFSession.GetUFSession()
2 \$ |7 g* v4 I! d4 O$ c" G( E    Dim dispPart As Part = theSession.Parts.Display2 L) z6 N  ]& W2 n0 }8 ^

6 `  i" u% L: W" C    Sub DoIt()+ N! q+ ~6 w; u9 q$ m) a
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)& K2 M8 i0 S8 h2 {! X2 }
        Echo("Number of Components: " & allComps.Length.ToString)& r3 ^: j+ R. ^  |5 C
        For ii As Integer = 0 To allComps.Length - 18 g6 Y4 v) s/ {0 G( I8 @
            Echo(allComps(ii).DisplayName)
* A5 {4 Z$ @; k- f        Next
; P- f' n. x) A. {2 m
+ N' P4 {: K4 S        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading9 w, T9 r0 E. H4 H8 j: A2 }  h
        theSession.Parts.LoadOptions.UsePartialLoading = False
  ]1 [2 V! d2 M7 Z  [' D' x! B$ F( f3 q& L5 _
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
/ a, ]1 c! \% F( M        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing1 a$ \. B2 h- v
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
* C5 @1 O: ?2 I+ n0 g$ u3 g            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)  P6 V8 d7 Y- i8 p+ @( R5 q

* ?4 }) h$ w4 v1 [+ P+ ~. u$ @        reportPartLoadStatus(partLoadStatus1)( V& e4 S: s0 j2 g! m. [5 c# Y: k" }
        partLoadStatus1.Dispose()6 r. S& D' ~! b" t- G

! W% N! ^5 u- w7 V        theSession.Parts.LoadOptions.UsePartialLoading = option1! S3 M+ u2 }; c3 a* _: R
. j* P+ E2 V' v: G9 H5 z3 N3 [
    End Sub
2 r4 p. b2 L/ ]$ n2 K2 {" g2 P; j. }4 Z) n* @9 M% t
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
# A5 t2 u4 J# i; u        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
4 k- E$ c* Z0 I6 Y8 h        Dim aChildTag As Tag = Tag.Null% ]3 U8 n+ s6 K
/ |- _% x) i5 Y9 H
        Do
' _! O. O+ g* I+ n6 ?+ a3 o/ B            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
6 H" H; x) H4 ]. I' G7 `/ N            If (aChildTag = Tag.Null) Then Exit Do/ v5 I  L" e, [$ n# Z

+ Y% i' j7 l1 |8 F5 w# t+ ?% a8 x            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)8 J" D9 Y8 k) i- `& s9 ^
            theChildren.Add(aChild)* Q: p  g. T, M" ?& f# p
        Loop1 y+ }3 `0 c5 A9 k* r/ g
        Return theChildren.ToArray(GetType(Assemblies.Component))) y5 q& P1 x/ M

$ ?" }( r& D  }    End Function
$ O6 a% Z5 [1 o* W5 _: W: Z* P3 Y
' ?0 ~' G; G& c' Q    Public Sub Main(ByVal args As String())
6 y, d  [3 l! m2 W+ l' n$ L3 }" M        If dispPart IsNot Nothing Then
3 |2 e5 q. }: `' c8 x$ p            DoIt()
+ X6 T! p, R( {$ M# o. Q            Return* r4 }+ \% z+ A! Q
        End If4 E& }4 R0 H  V' y

3 b" |, n  \1 s/ _3 j! M0 }    End Sub
8 H0 v7 O- Y. G' ~$ B$ X5 C! u
4 ?2 o% M4 Z7 a6 J    Sub Echo(ByVal output As String)
% w. d/ g& h* D3 G        theSession.ListingWindow.Open()
" j7 P  V6 ~9 E- `        theSession.ListingWindow.WriteLine(output); g& r- S, {' t1 D) x$ G5 O/ _: M: [
        theSession.LogFile.WriteLine(output)4 t& g  f! H# [9 A5 U
    End Sub
" t+ k- Q# U& k# c- {) R6 v* x6 c" p; m
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
! t' M/ k/ [- s+ V( q; |2 q        If load_status.NumberUnloadedParts = 0 Then9 f( e: {# K: ^2 ?. w, `: ^& g  Y
            Return
" F" ?' d: l. a. o1 A" I        End If% I* R& F9 }4 T  h

5 t( _1 g" I. I2 h; x6 U        Echo("  Load notes:")
! l$ {' i5 w6 D( f! q3 c6 Y* R) z+ t: z! B" h3 C
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
9 M1 r; s, d! M4 I$ Y5 \            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
$ h5 K. N$ S+ j  ^+ K% d        Next  s6 U% w( i3 `& N5 O( `
    End Sub7 C" e) ^+ U4 P1 d8 n

. T1 o7 _" k* [0 A0 y  X    Public Function GetUnloadOption(ByVal arg As String) As Integer4 Q7 t4 N6 @0 ^. T5 G
        Return Session.LibraryUnloadOption.Immediately% L( F% I6 D" D" v+ o# M
    End Function
% [7 g% o6 |1 e8 x6 A0 C
) `& z, c" A7 w$ D5 o, UEnd Module[/mw_shl_code]
; s  s4 e& F+ U9 ~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了