PLM之家PLMHome-国产软件践行者

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

[复制链接]

2019-4-12 09:06:31 2296 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
# Z" O& G8 N! g2 }Imports NXOpen0 {' P3 @! B- f* Z
Imports NXOpen.UF1 K2 d0 v. r, p
Imports NXOpen.Utilities
9 x( u* z- L/ X'* z4 q1 d1 N1 k( n, q4 |; F: L/ E( }8 @
' The OpenComponents() parameter
/ `0 G( u3 q. v: m6 }0 D' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
  B0 V  M( y1 b8 p$ s. z: J' only opens unloaded components fully (see also PR-8406345)) L  _# L" o" X9 u9 y7 O
' Workaround: collect and open all components individually( d' l$ _: F  {* G
': v" K$ [- W7 z# P7 L) |
Module NXJournal8 o8 t7 x; s( h' B
    Dim theSession As Session = Session.GetSession()0 f$ P, r: _1 h
    Dim theUFSession As UFSession = UFSession.GetUFSession()5 Y' k3 ~9 u& n6 y
    Dim dispPart As Part = theSession.Parts.Display8 g0 y+ }2 Z5 p( s3 I& g
4 U( G2 w8 B- r* O! B4 f. `6 v5 F% P
    Sub DoIt()
; v; u# v2 E- Y$ x6 s; a+ q        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
% b' e9 t! ~' P2 }        Echo("Number of Components: " & allComps.Length.ToString), I1 j' x6 ^2 \7 _  A: L
        For ii As Integer = 0 To allComps.Length - 1$ T) K! G2 i5 F
            Echo(allComps(ii).DisplayName)
4 Z7 E+ _" l# R( v- C        Next# J2 T  H5 q- g' e% d# u( p/ D8 q

8 \% p% F4 k# E        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading5 ~9 g8 h5 }( H$ q" M# X
        theSession.Parts.LoadOptions.UsePartialLoading = False7 K" s- l; A. d7 a: _8 p7 B  ~9 H, O
/ @( E7 r- }# E
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus  f3 f, x* P( F3 a
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing' S7 N# `0 d7 `/ g* ^/ y4 M% L
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(, b8 K9 T8 r" |0 `% Z: q
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
  Y3 A; h: _$ j, R* [, {1 `% t0 ]6 Q: L$ I& z6 c; e
        reportPartLoadStatus(partLoadStatus1)
, b/ Q% D9 H' i- Q9 E, O2 ]        partLoadStatus1.Dispose()
+ c" }1 |2 x5 U4 o, b: F& _" s  y- X; d$ Y& N1 E0 [
        theSession.Parts.LoadOptions.UsePartialLoading = option1
# _9 Q! N$ f. p
# V+ e4 }$ |  B5 b( e7 `    End Sub
$ g; W$ j; w* ~6 {( W% x+ |& E, ~, n1 E2 P% n0 s" N. V; S/ h
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()% L+ u2 d& z* b& P$ ?1 q3 W. i$ G
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
) S6 j) M: C7 \8 ^7 n) s2 W        Dim aChildTag As Tag = Tag.Null
: Z4 b5 u( s3 d: u5 l& r5 g+ [1 F' u0 I6 }9 S$ a. U
        Do
" ]5 S3 Y4 O. ~$ @# r1 A- z; b6 E            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)5 y; v! y1 a! ?1 B3 l* h
            If (aChildTag = Tag.Null) Then Exit Do
6 k8 d* E8 @0 k/ u9 B
0 v2 }% i- f5 D            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
$ p8 N) b- C! a8 }* U            theChildren.Add(aChild)# R/ l) l2 s( J" ]! x
        Loop
/ M. ?( i) B: R, ~5 a        Return theChildren.ToArray(GetType(Assemblies.Component))
: r8 i# ~5 r/ t) L& h2 e' v* g  ^4 L
    End Function
3 R) M2 g% y; \5 }& T3 b) G1 z
5 C# Y- ?$ w# T1 U/ a, i" K. h2 ?    Public Sub Main(ByVal args As String())& q% I0 m8 M1 P# z
        If dispPart IsNot Nothing Then
3 s# x: k" o# [+ [3 O' j            DoIt()
0 q4 f- C( J: e; ?' F            Return
' V8 J; V1 y$ i8 j& v        End If
6 J2 J5 L- m( I7 r$ r* D. a3 H! P0 @8 l" ^0 O0 m3 d( r5 V% x
    End Sub( k' L" u" R% H$ N6 o( o6 |& b( n
- N( [, D7 M" p
    Sub Echo(ByVal output As String)
% _( p4 J/ B' g' z        theSession.ListingWindow.Open()
. N# z  u% Z+ A- b5 N# Z! m        theSession.ListingWindow.WriteLine(output)
" V3 E' J7 b, w: i) i$ L  N! P        theSession.LogFile.WriteLine(output)! n( J, Q" H$ M1 O% ^3 b" [
    End Sub
2 o& X( ^6 D7 t+ l" x, {: |4 P$ q8 L/ o' L8 o' W
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
3 z. n* o$ V# a/ D7 l5 [2 v' X        If load_status.NumberUnloadedParts = 0 Then
' f% E$ q+ e8 M6 Q' Z  b            Return
) G& i. U0 d/ `  s6 e        End If" f0 ?. G# ]4 n! w6 {

! o! V& Q3 G/ {5 [8 ^; v! x        Echo("  Load notes:")
  j+ R/ `, A6 d! n/ p( j5 P
! J% ]8 D5 z* v        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
4 W. A& C) ]7 D% Y- N, l' N7 W            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
* J" C( A7 n% F% l# H% @        Next
- l8 \, O! y# U    End Sub
5 v$ j! b* ?' b6 j! z) R. |1 e( O+ L3 U$ D: D
    Public Function GetUnloadOption(ByVal arg As String) As Integer
9 ~9 j' j5 O4 Q  j        Return Session.LibraryUnloadOption.Immediately
' a1 b# H! k1 _5 b    End Function$ e3 t( z+ k; W$ n+ c8 J, u
9 u  ?( X& j7 a+ V
End Module[/mw_shl_code]
3 [! k* A6 H8 ~! u* B$ S3 n3 H
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了