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

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

[复制链接]

2019-4-12 09:06:31 2467 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
/ A3 e; p! u. y5 r5 P3 ]5 A% wImports NXOpen
- z& f" K9 E: N2 }* w. I  p9 s: c+ cImports NXOpen.UF
/ y, t1 L! L' Y3 S# _: m# WImports NXOpen.Utilities1 k$ }1 ?+ e0 m- t, {: p
'$ `# c2 G! L1 x$ v
' The OpenComponents() parameter  H& `- b- [4 s  H& K& X* j- P
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly% Q% s' P/ G3 N! ~" k. L
' only opens unloaded components fully (see also PR-8406345)
8 j) q# B& E3 l+ i, v8 X. v/ z0 e' Workaround: collect and open all components individually8 `- Y% Y% {' u  G' I* G
'
' u0 C1 ?, o# j. {2 VModule NXJournal' q' z1 }( Y) P; G4 }) p3 ]
    Dim theSession As Session = Session.GetSession()
# m0 |* M9 m4 U- ]- X    Dim theUFSession As UFSession = UFSession.GetUFSession()
1 o( }( d0 V- _& o# f' J    Dim dispPart As Part = theSession.Parts.Display
0 ~3 r" {0 d. o" J. |. @1 z! r/ m6 m) s. X) d& X; f8 G
    Sub DoIt()
, q3 u/ k6 ]3 Z" @        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)* b8 G. Z' Q' `5 g! g- N
        Echo("Number of Components: " & allComps.Length.ToString)% Y1 E. ?+ u) U2 p  g+ P! E" I
        For ii As Integer = 0 To allComps.Length - 1
' R- O" z0 }+ s5 ?7 \  N1 q4 T            Echo(allComps(ii).DisplayName)8 G, n4 S: K& a6 {* d7 Y
        Next
+ F) U/ }' `! i+ K" s1 ], A7 G
; D2 M) X  A! o& n# g        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
/ H; z3 i6 \& S$ Q9 L2 P1 @        theSession.Parts.LoadOptions.UsePartialLoading = False% r! z, q0 |% n" n# S1 n

& o- u. o6 o* b6 d1 d- e& {' u+ ?  \        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
2 W, s3 h& w  \# Q        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
6 }9 t" F/ {# ?; f4 `& n2 }        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
; }7 J3 {$ e* l  t! D; K            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)+ V/ X5 T  s; j  D
( ~* [/ D- j- ]0 h+ ^( X2 U
        reportPartLoadStatus(partLoadStatus1)
1 ~8 Z" j7 t! Z8 c& r* _, P        partLoadStatus1.Dispose()% V! s0 H' W1 g& b/ [  X

4 |( @; d* I; c+ M% l: L        theSession.Parts.LoadOptions.UsePartialLoading = option1/ _8 s' U! e1 V2 B/ r, ?: D
9 O% o) n# |# Z% b& J
    End Sub
  `3 u  K: n2 t5 E- c2 O# m3 K
3 u  g, x5 s8 n5 e2 d" D) p- G2 `8 Y    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
$ h1 T! h; [' t        Dim theChildren As Collections.ArrayList = New Collections.ArrayList* r' `4 v- p* z1 I$ O: M) R$ k
        Dim aChildTag As Tag = Tag.Null
) W  A8 N" G7 z# o7 M
+ f$ O7 D. ]( N& Q" V6 U/ ^1 N* c- _        Do8 E: F) @1 g( C  E( X% B
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
) K! G, p/ E" w" l5 I            If (aChildTag = Tag.Null) Then Exit Do3 _# ~/ b6 p0 z2 M
- N+ S) I+ ?# T! _* E9 P' I$ {
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
' ?; D, C3 w- M- K8 C            theChildren.Add(aChild)
' {$ _/ u) g; y, |! u        Loop! R' P; p# F9 G
        Return theChildren.ToArray(GetType(Assemblies.Component))0 d. E2 R+ _( V9 [0 U
- w1 C; h7 g9 l' `
    End Function3 i/ I7 p0 J" p' y# e9 B
+ [# s: a7 ?6 j+ l: R9 G
    Public Sub Main(ByVal args As String())
6 O, t+ x/ T! u* f6 K        If dispPart IsNot Nothing Then
. s) N' _* a) J5 ]            DoIt()( M( q) ~7 d( I' _
            Return
: {! l, e9 m) u1 ^+ h2 ~/ {        End If- a, o% A0 F3 e6 e
; Q) H# W( j% S' C% a/ j
    End Sub; l* t8 n9 ~# G* D: O

/ c3 I! P7 A% d+ m7 |0 @+ L& Q    Sub Echo(ByVal output As String)
9 G$ u* T( T1 a; l! e        theSession.ListingWindow.Open(); q# @; s/ R7 t) j6 Z! ?
        theSession.ListingWindow.WriteLine(output)
" I/ c9 }& P' z; [2 B6 f! K        theSession.LogFile.WriteLine(output)
: _6 p1 [. r* [" A    End Sub
0 Q  \+ n$ ~7 X  H4 n: s4 L/ D- ^: g0 ^: ^: q( _- v
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
! B9 J1 K0 f$ ?2 |5 V* G        If load_status.NumberUnloadedParts = 0 Then
3 U( a0 p3 P& C1 g  g            Return. A. S: a) t# j
        End If
9 U5 y, H; l9 V  [# F/ `: @# Y+ b- G9 R
        Echo("  Load notes:")
. W4 U; R! j. J7 |' O# K" v! V" t) P% c. Y, r4 z, p
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
% P0 ]$ \3 v3 }3 L& Q            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))7 b5 s  Z- n8 K7 u# t
        Next
0 n" p8 U! I3 j9 Z1 e    End Sub1 P( j6 R7 c0 F- D4 B, f

  S: `  m2 }, ^5 d/ A    Public Function GetUnloadOption(ByVal arg As String) As Integer& h/ H3 k! m) I2 ?( ~
        Return Session.LibraryUnloadOption.Immediately% A% E0 s4 A1 T9 M' [
    End Function- w7 v: I8 o9 s1 G7 [& f

/ g: w% w2 w* l. I! dEnd Module[/mw_shl_code]
! D; Q+ U8 ^1 g1 K7 q$ 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二次开发专题模块培训报名开始啦

    我知道了