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

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

[复制链接]

2019-4-12 09:06:31 2455 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
6 U4 @0 S/ E3 X! i& bImports NXOpen
' D3 c+ C* u5 F0 oImports NXOpen.UF
8 w% Z# o9 o! O5 zImports NXOpen.Utilities
6 T% Q3 B; s/ M8 ~3 O, t; `" A$ V'
% c9 Y: p/ t* P. J8 M' y% |' The OpenComponents() parameter5 x& V5 p8 o: E/ u; x' @, @
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
5 O# ~; Z3 E+ ?) x3 i' only opens unloaded components fully (see also PR-8406345)
  A7 H" e( _9 j" B7 `% _' L# `' Workaround: collect and open all components individually5 h% {5 o' x* H; X# A
'
8 K  }" ]3 q5 nModule NXJournal
( g( o8 ]+ |' C7 w. ]7 d1 f$ B    Dim theSession As Session = Session.GetSession()
  d' [6 e+ L! S    Dim theUFSession As UFSession = UFSession.GetUFSession()% T* d; h3 P6 ~6 h
    Dim dispPart As Part = theSession.Parts.Display
4 E: a. v9 M, w# R! K! j  u- Z4 t( w3 E. B5 O0 a3 o# A
    Sub DoIt()* Y4 C4 h: J! x7 Y
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
% @5 U8 d" C9 c6 Q- w        Echo("Number of Components: " & allComps.Length.ToString)
. h. P2 D) b6 x0 p- a3 A. _/ ]0 @, d        For ii As Integer = 0 To allComps.Length - 15 @5 F5 a# v0 Y7 j$ r
            Echo(allComps(ii).DisplayName)4 B, j2 {, x2 ]4 V# N9 L3 p3 q
        Next) Y% F3 ~2 g" k. b) M$ c8 u. c8 Y

2 d5 E& w) ^4 h% q0 e. c2 X        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading  N& K+ `$ e4 n  V- w
        theSession.Parts.LoadOptions.UsePartialLoading = False
; m  U5 C1 z( g. j2 e. a+ \- ?* r) Y5 E3 j+ T% `. a+ `  r* Y! \( Z
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus+ H. o0 @6 B; v9 O
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
0 u% l5 w9 a) d. O        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(! ~' Z" _  d  ^* w
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)9 C4 a! ^* g0 U" d4 ^6 C
, l; j( j$ H7 C% c# ?6 F
        reportPartLoadStatus(partLoadStatus1)
# H  _0 \+ H8 b2 ^        partLoadStatus1.Dispose()8 x8 c" q2 Z# Y- j
$ x4 |$ ^7 B; d3 A
        theSession.Parts.LoadOptions.UsePartialLoading = option1% _2 x3 l& r. |! z6 `& Y
. P0 O0 e! ^; c+ _8 n0 D; l1 C
    End Sub
% V9 {3 U: ^: g/ _' A: o, z
. h, H! I5 q9 D/ @8 G" r) D- A    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
  J8 b+ T* B7 W2 y        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
7 f# U# K" {  q, o1 r        Dim aChildTag As Tag = Tag.Null# S% i# z' ~% C# P/ `, a. j
$ c, ~1 T3 V7 h0 I0 b$ f
        Do. x. G& m) r3 ]9 Q+ p
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag): f; v9 d0 O( U, ^2 o3 O5 c
            If (aChildTag = Tag.Null) Then Exit Do
; K. l0 g. O$ n. |' J
- m" q8 q4 o  A; t$ `            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
1 l* L7 {9 n2 |0 l3 I( ~            theChildren.Add(aChild): B: X! z! ]) C6 c9 s  S# y- R! V
        Loop
7 i+ w; J, ^+ K/ Z        Return theChildren.ToArray(GetType(Assemblies.Component))
6 [2 ?9 p. b+ K; I& x7 O8 j2 o2 B* A
    End Function
, q" h! O2 q7 O* s5 ^
4 ~( c1 F" F2 C( u    Public Sub Main(ByVal args As String())
0 L* l% W9 w! ~; C        If dispPart IsNot Nothing Then
9 ~  }9 X& c8 s            DoIt()
7 _: N& T' G1 D' u! T/ I            Return
" Y0 M, F  I& o0 N        End If' ]' ?8 I' p7 N: n) E
/ X2 d  Q: ]- l5 ~. V1 h
    End Sub: Q9 n' H- h# k  M! n* h
4 ?$ F% W% K2 J$ o; c
    Sub Echo(ByVal output As String)5 E4 v( E: U3 ]; U
        theSession.ListingWindow.Open()( R# |  G. T0 ?. J6 d
        theSession.ListingWindow.WriteLine(output)& R$ ~9 C, p- A' y# ~, Q$ m; j
        theSession.LogFile.WriteLine(output). p, c' H0 r2 l7 v) c
    End Sub
7 A( _6 ~3 C9 B
" _; M, G1 n  c    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)* J7 b) {5 E5 \& ^8 G% ^
        If load_status.NumberUnloadedParts = 0 Then% [' F0 M9 l* \; ~5 r% t
            Return6 M4 S- S: j9 V
        End If# W3 j8 i9 I, S  @3 I! n' ~4 N" B
. d0 h$ m1 [% V0 ]7 r2 Q1 S5 z, }
        Echo("  Load notes:")* D; @; B8 H( I, v8 x' D+ {

- j# m8 _( [9 O        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
9 R9 b5 a8 g3 k* Y/ X2 I4 z- ]9 m9 K            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))4 Q. g- H5 h- m2 k
        Next; g% }# y, X0 I9 H& z7 R9 E: a$ U3 X) o
    End Sub- A3 T- S, d. p2 I

1 `# Y# D/ q% C2 o. I$ _    Public Function GetUnloadOption(ByVal arg As String) As Integer4 O6 p9 o" ]% @  l
        Return Session.LibraryUnloadOption.Immediately
; E5 W- h- g! I1 J/ ?    End Function; N7 G( i9 n0 ^3 o; C1 I
; U1 U  i: H1 ~; Q0 R2 ^. @
End Module[/mw_shl_code]
' O* ~' K# Z( \8 ^# a( ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了