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

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

[复制链接]

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

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

admin 楼主

2019-4-12 09:06:31

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

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

x
[mw_shl_code=csharp,true]Imports System0 ?* I5 W/ }6 m8 k) J
Imports NXOpen9 H$ Q( O, ~, V9 e  x
Imports NXOpen.UF
* V: U5 N7 K# z& |* j& OImports NXOpen.Utilities  T, q5 Z& W+ a2 w$ D3 g
'" u4 y( S* e( B- V
' The OpenComponents() parameter9 c6 b/ p# f6 L6 m+ R
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
% B, t) D* @) e1 k# g! E; @# F' only opens unloaded components fully (see also PR-8406345)
' w; S! d7 a+ V: U; e9 _" M$ H' Workaround: collect and open all components individually
% X( e1 y8 H; T# Q; }4 z! H7 k'! k8 W: u2 `% ~( Z% Z- \1 S
Module NXJournal
0 F) D* N5 t7 a- `! n# B4 x    Dim theSession As Session = Session.GetSession()" m3 m! A  W& F" l3 ~0 Y: U
    Dim theUFSession As UFSession = UFSession.GetUFSession()
  ]' o; ~. I6 `    Dim dispPart As Part = theSession.Parts.Display
' e; x9 W3 o8 n; u# G" C+ n" X! |! i! @! B6 S8 k1 p9 w: n6 m
    Sub DoIt()
, y0 x  ^6 L2 P        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)0 P( k( s9 T  a
        Echo("Number of Components: " & allComps.Length.ToString)  Z) V% a, n9 G/ n
        For ii As Integer = 0 To allComps.Length - 1
/ B& M8 m, {# \& u. w0 m7 d2 a            Echo(allComps(ii).DisplayName)8 `1 s1 p. z4 }5 l) w
        Next8 y( l0 J! C; c. x6 k4 D8 e

6 E8 o$ b' G) K        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
' E3 V6 W/ T* x% ~5 c5 E        theSession.Parts.LoadOptions.UsePartialLoading = False
0 T" ]0 r& W' n+ D/ X
; F/ ?6 k2 \6 n# \5 E% d        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus! I4 F" F3 H+ V2 o0 L4 k- a+ z1 ^: D
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
# R* u; ?- i  _- ^* ?5 R        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(2 Q+ Y4 K3 P& I7 w- p& `5 L
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)* i2 R; a2 Y  [/ X. w

+ y. {: m1 g0 w6 |# ^9 B- C- K        reportPartLoadStatus(partLoadStatus1), {& }& l  T5 G) d. S
        partLoadStatus1.Dispose()
; L$ E6 z2 ]0 N! R" w
8 n' a9 f" d% Y. k& ~        theSession.Parts.LoadOptions.UsePartialLoading = option1( C& k/ n4 F3 i2 ^1 {/ c; o

: @% k! x7 ?* [% d: n4 |' x    End Sub: e( _. _; z" Y$ U( V: l* E
$ B7 Z% W; Y, i: y; f; s9 \6 _' B$ y
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()# ^8 D4 T4 ?" A% [5 e
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList3 n9 X, j" \0 B) N2 P7 _; h8 V
        Dim aChildTag As Tag = Tag.Null
. ]5 `6 B& M9 ^  F( ~
: w- G1 C8 A. _        Do6 W3 P3 E$ H7 K! a, ^
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
: i) F0 o& y0 s            If (aChildTag = Tag.Null) Then Exit Do
; L! `. Q6 r9 |- n) j! Z2 l, x3 @) C
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
4 w9 r# W" Z* Z$ i            theChildren.Add(aChild)
$ `' K, W, {: }. S2 ]& z& t# ]: \        Loop5 `1 V/ h% x# U. p( M6 @# u
        Return theChildren.ToArray(GetType(Assemblies.Component))6 I  J0 v  @" H# a
) F8 t: z3 ?% g5 z2 `4 E8 G
    End Function
5 y" u* w4 R; D: r2 j/ A0 Y' a6 X
    Public Sub Main(ByVal args As String())9 l, I5 s( y) U- _& M. n/ Y
        If dispPart IsNot Nothing Then) s) ]+ m) p- p( B
            DoIt()( f+ w& V1 \5 B8 d, \& G$ @
            Return  r, L1 G- s9 y
        End If7 q! c- L: c9 h0 x' @2 S% Q% [
/ j2 X* l5 o: m0 e9 |5 U
    End Sub3 f3 o8 ?: X5 ]; t2 }* A

8 m& r. ?& t* r5 s! ?, n    Sub Echo(ByVal output As String)
* e$ ~# S+ Z; R% i' Z2 r) l        theSession.ListingWindow.Open()" |! ^2 i. F, P% f: s
        theSession.ListingWindow.WriteLine(output)# B$ u* i& l  `8 T, j$ ?
        theSession.LogFile.WriteLine(output)
, P1 S, U% z! S+ T+ K) Y) G! T    End Sub
3 j6 F. q( H9 ~( o- u! B6 [, G7 @& {( [: H
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
4 M8 f, j$ O) i7 h" [8 V$ j        If load_status.NumberUnloadedParts = 0 Then
" d  x- z+ e& t9 W+ O4 j            Return
, ~$ W0 \4 d' F7 e1 Z( _5 w        End If
* n4 ?' t( p+ E" F
+ w' y9 @' I0 ]( x8 Q        Echo("  Load notes:")
' N& d8 n* J3 ~+ p- ~7 H5 v+ s9 S, {# R: R+ _+ B: ^6 G  f
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
! L/ e5 S' m7 S            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
6 i! _; k( z& ]4 k  E, ]4 M        Next; I; Y# N5 L9 U! b2 |
    End Sub
6 h5 I& Y; G* S  S9 N
% m2 x/ b" w$ S    Public Function GetUnloadOption(ByVal arg As String) As Integer8 g6 u% z; n4 W
        Return Session.LibraryUnloadOption.Immediately
! Y4 a9 o5 g7 o! ~    End Function( Y% |" x% G" L

; d8 U4 P2 m: w! t! NEnd Module[/mw_shl_code]/ Y3 g( \  D3 B3 Y* I" 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二次开发专题模块培训报名开始啦

    我知道了