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

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

[复制链接]

2019-4-12 09:06:31 2396 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
( ~+ ^" v. T+ HImports NXOpen& y4 c2 }& i/ d2 m5 T
Imports NXOpen.UF# N8 ^$ C: z8 @% C3 r  Z
Imports NXOpen.Utilities5 w/ P) Z  _6 ^
'  \: `6 |8 W# _$ d* Y& H
' The OpenComponents() parameter. ], c6 c, G$ U3 V/ @+ R4 A
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly# v2 g) _4 S# A# i5 X, v
' only opens unloaded components fully (see also PR-8406345)/ m- A! o0 e7 v; F2 M1 q" @
' Workaround: collect and open all components individually$ W# L/ N  D. Y3 s% y' J
'. y/ U/ T- A  `1 m) A
Module NXJournal
! {7 G6 _7 Q8 w! X3 P3 b    Dim theSession As Session = Session.GetSession()
  w0 `- v6 w. s, z% X+ J    Dim theUFSession As UFSession = UFSession.GetUFSession()! C2 O- O6 b* V2 G' s) z$ N. k
    Dim dispPart As Part = theSession.Parts.Display6 `% B' w* ~/ I) N- t. P

2 n  {0 c3 h6 m3 j# C    Sub DoIt()
+ G; E" q, \5 u3 `! |# O        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)8 _/ B! G; L. p4 N5 L7 j% Q
        Echo("Number of Components: " & allComps.Length.ToString)% o; }8 w2 _& Z& o6 @
        For ii As Integer = 0 To allComps.Length - 14 q9 s+ H! D3 P: i( _7 o1 j
            Echo(allComps(ii).DisplayName)& x7 Y3 q& L' q8 q" s! j/ L
        Next3 W8 l' D% Q+ e( w) ]- t& n
1 Z- v) g* M* u) `. m/ V
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
5 J% W* n( O/ c2 w9 l4 A' e; K' L; S        theSession.Parts.LoadOptions.UsePartialLoading = False
2 N5 b0 Z. ^5 E& b. B. z" U$ X" n
5 m8 z4 X6 N. p        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
2 ~5 @# O( \) f: E8 s        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
+ c+ y5 F+ |# ~$ r  G: ~        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
$ q3 O3 a7 ]6 A# A            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
" l, z  d2 H" m9 O  f
+ l  q& n  f4 @" [        reportPartLoadStatus(partLoadStatus1)4 t3 `7 Z2 r  s* K* I$ Z0 V
        partLoadStatus1.Dispose()
$ f- {# K7 w! F6 p  E: y3 ]% E; N; F3 V  S* u- j" M3 |# i; a: ]
        theSession.Parts.LoadOptions.UsePartialLoading = option1
  H: ?) \- }5 Q+ v, b
* @6 t6 ^3 g/ P' ^6 d    End Sub
7 _* l8 f+ e2 Q$ O5 s# M6 F$ ^, [1 Y; ?0 c  {# P
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()# C) G8 s/ i) ?
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
7 I: R) J0 U2 I) G        Dim aChildTag As Tag = Tag.Null
- _9 R% \( o1 {& k* p7 B. a3 W
: o; H  [! U4 J: }/ x1 A. [% H        Do; a6 W  G3 E2 X+ J  u1 V- x, I
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)- N0 r, \( l2 P" [5 ?
            If (aChildTag = Tag.Null) Then Exit Do5 Q9 r' T4 I. H' K. r6 T/ ~
% J& o' \! [8 C2 j, Q& f7 v( U
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
- e1 j, P) x% [# P7 m            theChildren.Add(aChild)' i, x8 R! Q: {4 n, Z
        Loop, h2 U, P' v% z8 A
        Return theChildren.ToArray(GetType(Assemblies.Component))
: ^/ W1 \& D4 @3 T" |9 e$ J* d& L
+ F- ~4 ]* A: n5 _" f    End Function( h0 d1 G# H" K  T0 S

4 R* t: s0 O9 p4 h+ M, [7 `/ m1 j    Public Sub Main(ByVal args As String())2 Q! q9 `& n1 E9 A3 Y; \
        If dispPart IsNot Nothing Then
: _* n! b3 m! d- H3 T            DoIt()) [- y0 L; p2 e3 j0 k$ h
            Return+ |, P; [1 l$ N5 b
        End If- v4 D" G; z. C; V1 _8 G
; M  a& n, B( o7 k' |
    End Sub
5 N1 j/ i0 A/ y+ ~% m" ?+ O: d: r8 M3 _( ]4 B7 h) P# Z4 |
    Sub Echo(ByVal output As String)  s0 m( k4 Q" w, X' Y" M7 |6 r# K
        theSession.ListingWindow.Open(), w$ J, d8 O9 J1 A6 b
        theSession.ListingWindow.WriteLine(output)( l5 M' s& O1 b/ C
        theSession.LogFile.WriteLine(output)! E# Z/ c# V2 n# C# V. p
    End Sub
7 w. c6 ~6 x- r/ n
% W3 a; T5 r( e, r( r4 V    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
" r; A; o8 R& o        If load_status.NumberUnloadedParts = 0 Then6 ?  K* ?! H6 S: z" N5 E
            Return
4 [+ E3 {8 T" O; x        End If' ~1 a# }: s! m  x8 j, \) b
  y% G6 }! v) \. }/ T
        Echo("  Load notes:")
& n8 O- Q! B/ P+ k0 v6 e; Z$ k0 ]; D+ F% g) _
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1* m, ~( _5 A" j. S
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
6 N6 f; _5 Q+ P7 ?. e        Next5 p0 R6 R$ J' f+ m7 ^: M
    End Sub$ x2 V6 B8 b; v9 f2 l* Z

2 C( p1 w) }" P8 ]6 x    Public Function GetUnloadOption(ByVal arg As String) As Integer
. f# n1 q6 Q4 l- \6 D: G        Return Session.LibraryUnloadOption.Immediately4 H; y1 e% O: P# B5 F3 O2 g: G
    End Function
2 z1 q" T( [. P* F9 x- ~& `+ }. Y3 U2 u2 q2 X! p% F
End Module[/mw_shl_code]
# r7 I. Y6 [" V9 m" o
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了