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

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

[复制链接]

2019-4-12 09:06:31 2450 0

admin 发表于 2019-4-12 09:06:31 |阅读模式

admin 楼主

2019-4-12 09:06:31

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
[mw_shl_code=csharp,true]Imports System1 P8 ]9 m  _# ~2 s8 ?) u* F
Imports NXOpen; V0 Y. g4 z. J
Imports NXOpen.UF
2 J) f$ p3 N* _* u; I. U4 GImports NXOpen.Utilities
; K4 z  _: u9 T1 h# g$ r/ a'
0 j9 }, v6 i, m- \4 ^/ W9 z  C' The OpenComponents() parameter' x6 p8 |8 M2 n+ \- T/ g
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly4 v% A" N' y2 P5 o
' only opens unloaded components fully (see also PR-8406345)
# x; s9 d$ e  W9 w' Workaround: collect and open all components individually& G2 y5 q, @7 X* a7 r
'( a- T# ^" q' b9 k7 o2 x
Module NXJournal
9 [/ j% R: O/ J8 s4 e    Dim theSession As Session = Session.GetSession()
5 V! \6 V8 Y1 x8 z$ i0 r    Dim theUFSession As UFSession = UFSession.GetUFSession()
: v- v5 g* x0 k4 O4 C5 N4 k$ F    Dim dispPart As Part = theSession.Parts.Display( X+ H2 E' k* g% v+ F9 D

+ T7 |; S" j1 L) A0 U    Sub DoIt()
6 z/ @8 Q& Z; b* v9 J9 ?0 j7 n        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)9 E5 N/ @" `/ o3 M* B' m+ E
        Echo("Number of Components: " & allComps.Length.ToString)
; u  j5 ?9 D  `        For ii As Integer = 0 To allComps.Length - 1
; D0 u- Q; N1 W- Y0 N6 i$ B9 ~2 Q            Echo(allComps(ii).DisplayName)
$ M5 E; ~% L/ S        Next2 k4 {1 A& |2 s4 M8 i% r  \
1 c, r* i0 D: G. d( A. I
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
8 W$ h  K( ]6 w0 }9 n2 }        theSession.Parts.LoadOptions.UsePartialLoading = False
" P, k* I* S  _/ A- e! m$ m4 d& \' K2 R2 a3 f. ^6 l# L
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus3 i6 G4 z& e9 y, R2 H1 d0 C
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing6 g& \! y' J8 a, ?& Z+ K5 A
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents() F' J. D, F  h
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
- [  M, y; a& D5 C; z1 p- I7 g0 B7 b
        reportPartLoadStatus(partLoadStatus1)3 X5 }+ L* N* e" U6 k; l
        partLoadStatus1.Dispose()
( n0 E7 {& N) y% w' ^8 C
+ n" C" a; _" C; }7 b+ e        theSession.Parts.LoadOptions.UsePartialLoading = option1
& `5 n- b6 ~" d3 W! o
8 L3 T1 b. ~/ s4 X2 e    End Sub
4 n. J  ]' B7 e  E: ^3 S- J8 K% J
1 ^. P/ U# J" c    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
" ?+ ~. S- Z7 c) G3 X* Z        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
. @" h! J0 t, b& G        Dim aChildTag As Tag = Tag.Null7 M( T- [, J- V/ u) _, w( E8 M
5 A$ z1 y$ @% ^5 Y
        Do7 u5 z5 X) d* I6 B4 J! q! I1 w
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)  B5 i/ g3 e2 z5 c) u
            If (aChildTag = Tag.Null) Then Exit Do/ X1 |& n& |7 ~# [& J" _% ~1 p
0 E+ ~  t  ?- I  h
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
& ~# W# `# m- Q5 T3 w" l1 j            theChildren.Add(aChild)
' [. `/ k; v% `, {, |% |        Loop, n$ X6 b; D( j/ |; I" Q
        Return theChildren.ToArray(GetType(Assemblies.Component))
1 o8 ^2 a- W, A) r. e+ q4 g
' j9 q( ^  ~1 m' X6 z    End Function
  B. _7 d( J+ E: f4 S! f" U: W
7 H6 K) B" _# n2 ]. B    Public Sub Main(ByVal args As String())/ \% ]2 f* P. L% x3 C
        If dispPart IsNot Nothing Then
: j# G! P& p0 @$ K; V' v% M$ Y* _            DoIt()
4 H; G- z) O: L7 N' l& m            Return
- J) e2 E# c; _6 {* j$ y! v        End If" `( k  u" V+ t3 T  [
) n! Z  J) V3 P5 ]6 o0 t
    End Sub& |5 L9 b* c8 l/ T
0 F( `* q3 W0 H8 U" T1 ~$ C6 J
    Sub Echo(ByVal output As String)+ S2 O6 U) T- s6 y: _
        theSession.ListingWindow.Open(): u/ u1 C" a1 q1 p- i" m
        theSession.ListingWindow.WriteLine(output)
) g+ {. k: d3 t        theSession.LogFile.WriteLine(output)
% y% @# o: d; z6 q5 Y. }5 @; k    End Sub
7 i/ R5 N8 ^$ F& o1 n' c, O" z# Q, o
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
- i4 Q" Y- x; R% A& Y        If load_status.NumberUnloadedParts = 0 Then
  r5 a( h1 p6 O% v. Z            Return) K, G& \2 s& n! }% @
        End If
2 }5 E) d; m( N* S% ^0 M8 D7 u& }# v3 e& Q
        Echo("  Load notes:")
) f/ Y+ P: ?. k0 F% b6 ?
! M) S$ e: w0 `( {& h% Z. ^* y        For ii As Integer = 0 To load_status.NumberUnloadedParts - 17 P9 F" \' P7 s7 l8 v1 V
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))2 R5 U8 v+ e7 x; I7 r
        Next
& {3 f; L$ i1 N( g3 I" V    End Sub" i0 r. J% `1 ]! n' k

' J; S( H. N( K    Public Function GetUnloadOption(ByVal arg As String) As Integer
1 t! G8 K8 y: a8 q" s1 U2 J0 A0 [        Return Session.LibraryUnloadOption.Immediately
4 ~6 u( E! m! r  t, r9 l4 O    End Function
" x3 t1 @, }1 T
  [3 T. r0 K  M7 n3 y5 \' N' TEnd Module[/mw_shl_code]
3 g3 [  G8 T( ^6 P7 g6 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二次开发专题模块培训报名开始啦

    我知道了