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

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

[复制链接]

2019-4-12 09:06:31 2415 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  z9 r/ d& z: G5 v4 s
Imports NXOpen
) d0 Q( C8 t6 X8 S+ iImports NXOpen.UF. ^/ K  j  M. u% i! i
Imports NXOpen.Utilities  O. x$ U; W# u9 F2 r
'' |6 W1 t: X0 S* G' m
' The OpenComponents() parameter2 m3 |, w3 ~/ G8 G& @. w; l' x: A
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly3 w, z- m1 i4 ?- R
' only opens unloaded components fully (see also PR-8406345)' j: F8 p2 a1 I+ }- `
' Workaround: collect and open all components individually2 v7 ^6 z, c5 S
'
* a' Y9 k# d! h1 P% i& x& fModule NXJournal% S* ~- ]7 A  r/ c
    Dim theSession As Session = Session.GetSession()
8 o) R5 P: i& k2 [9 b/ S    Dim theUFSession As UFSession = UFSession.GetUFSession()
; ~" w$ m/ M- x7 r  Z- q    Dim dispPart As Part = theSession.Parts.Display
: S8 J. R/ z8 K( n- Z0 c
0 l( R8 A6 \( D    Sub DoIt()
8 y# O' D! j, u        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
8 |! M; q1 L* }! ]! H4 ~# r! F        Echo("Number of Components: " & allComps.Length.ToString)
+ e" O7 x9 t; e7 c  _8 E6 p        For ii As Integer = 0 To allComps.Length - 1. l  z+ [% y9 c  i) l; K
            Echo(allComps(ii).DisplayName)
$ F2 q: F5 r2 Z5 K8 T6 l. \        Next4 w9 q3 k+ k+ S- l6 Z
. x6 I5 I4 @1 b! @2 J- A
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
) t) [' ]! \: ]        theSession.Parts.LoadOptions.UsePartialLoading = False
% L$ r: J6 o& p3 w3 }% E
: k5 S9 V$ Z/ l) E2 ~        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
( `5 P* Q& U+ ?2 N9 v0 |        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing! m  q" p& ^+ _5 H
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
2 X% ]0 I, r, C# K3 V, H            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
) P, k2 Z* p  F- O5 z, c2 D% [6 J4 _; J  W
        reportPartLoadStatus(partLoadStatus1)1 ?( v$ `$ A5 D8 I
        partLoadStatus1.Dispose()6 s# B7 q2 _; {  _! b
0 B- F" i% P% B* g0 l: b6 u
        theSession.Parts.LoadOptions.UsePartialLoading = option1
. X" O7 f+ w) k- t! N5 M: z1 p2 ?9 ^5 \/ F# {
    End Sub
, z9 b0 H7 \, W! k# N7 p6 W9 N/ D3 o; A& x$ {4 f
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()9 v7 u+ X( C8 n
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList6 u0 h+ ]$ f: @5 ^6 Q
        Dim aChildTag As Tag = Tag.Null
4 I; _8 ]% P$ K- L; G* b. Z$ g
+ K' [4 J/ K5 c( f+ n        Do
2 U4 W1 {2 D/ |) e            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
3 o, O. w( e- ]( o" ~            If (aChildTag = Tag.Null) Then Exit Do5 z8 F6 x4 y. O. t2 t

, B" |0 X% \* m  z2 h! i            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
" S+ K; p7 D' S' l" C6 C" K            theChildren.Add(aChild)
$ ~$ O4 d* f# L/ I        Loop
, D, r7 {) k, k4 k& M6 Q        Return theChildren.ToArray(GetType(Assemblies.Component))1 g' N# c% K: c5 j, v3 D! ~

" R  n; q# s0 t) G  l$ X    End Function: W3 r7 V5 M' Y) p8 J" \2 Y- p

6 g; w9 ^/ |/ {% I) _/ ?' H    Public Sub Main(ByVal args As String())
8 \5 x1 Y1 B9 z" w# P        If dispPart IsNot Nothing Then( ]- s# M; D3 Z$ a1 |, s5 ]
            DoIt()# ~3 S0 R+ n" @1 |3 v+ y6 n% c+ o! L
            Return. K5 L- A0 b! `: E; F2 l7 O
        End If
5 ~' i5 \. I" R' k4 i, i/ ~
7 J# g% E% H+ C    End Sub
. Z' i2 e0 I# w9 K
8 ^; w& u4 [4 M    Sub Echo(ByVal output As String)
- q3 K1 x' t7 C- u$ T2 |        theSession.ListingWindow.Open(); U% u7 M2 c5 G
        theSession.ListingWindow.WriteLine(output)
) Y1 O$ b1 E( V4 U2 ]        theSession.LogFile.WriteLine(output)( M+ K0 v! k8 z+ O9 e
    End Sub3 L1 O+ e) m4 h, s. ~6 U
/ C' {' R  P! p( j, ?4 A% h
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)! D2 Y. Q5 W. H! u/ w# n
        If load_status.NumberUnloadedParts = 0 Then
3 n* y6 t$ h6 k! ]3 N3 ^; [            Return& x1 {: Y) V- I5 m3 M
        End If4 P8 a- ?' A( z7 v' w+ P0 h- f
5 `' x1 Y; Z0 w# \; ~0 F
        Echo("  Load notes:"). @/ z! l4 [6 v* T

+ _1 a  o. A) `- m% F5 k        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
& _+ V+ y: ?2 Z: U3 H* A- t5 u' P- s            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))# |4 _" C! {5 |" S' M0 n4 y; o' g6 ?
        Next6 b, v0 w) S6 E
    End Sub
4 V5 f# }4 ?0 b3 p6 C
0 U- `8 b/ S$ Q3 j. G    Public Function GetUnloadOption(ByVal arg As String) As Integer5 t7 t# e/ f7 i7 t2 `2 C, J3 a
        Return Session.LibraryUnloadOption.Immediately
* h6 l  v/ A  o1 e    End Function/ b4 U7 T3 [  p( X3 u. \, M
* _! C$ p! \0 J, Z; Y
End Module[/mw_shl_code]
; T1 p8 ?( C- H2 m5 ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了