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

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

[复制链接]

2019-4-12 09:06:31 2443 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- g$ p3 Y8 r% H& N% u& f. N- f
Imports NXOpen
. l9 p" N' e- c  Z6 OImports NXOpen.UF
0 N8 Q/ W4 Z, j4 K, m7 ^Imports NXOpen.Utilities
7 y: o' S5 w& I3 `+ f* B'/ [  Q% Q0 g' O3 _- P8 M
' The OpenComponents() parameter. w1 X3 y0 O$ O* U. H
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
& Y' @$ j0 f5 |  V# F+ O' c' only opens unloaded components fully (see also PR-8406345)
% I. _4 e5 w+ z! d' Workaround: collect and open all components individually" s7 y" b5 j3 T4 D0 z/ |
': T* X+ n! `% e& G, Z4 P- f. Q
Module NXJournal* v: H. k6 X" R( E
    Dim theSession As Session = Session.GetSession()6 E2 T) ~" k9 R) k+ J: i! D
    Dim theUFSession As UFSession = UFSession.GetUFSession()
3 q' f7 W" I8 `. ~1 N! {  u* ~    Dim dispPart As Part = theSession.Parts.Display
- B! ~" [: C8 Z" o
) S) S9 u% ?, Z* z5 c5 t  }    Sub DoIt()  n4 K! [1 M3 y7 F- z& H
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)4 y# m. E; D- ]0 E" a
        Echo("Number of Components: " & allComps.Length.ToString)0 F5 F4 Z+ Q6 c' R7 G
        For ii As Integer = 0 To allComps.Length - 1
; x  |1 ?- y, Y2 d) N( k7 ]9 k2 {            Echo(allComps(ii).DisplayName)# t  m7 M, X% j! o
        Next
" B9 w) U: Y9 }" O* `9 Q  [
* ^* N4 B1 K- b' d5 p& |6 M/ u        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
. o+ h' q) ^& \: A* T) W* S        theSession.Parts.LoadOptions.UsePartialLoading = False- J( r; c# v  v. c" Q$ H3 v% M
: D- l6 |6 F7 `
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
9 y- t5 ]( w6 c- X0 h  B" O7 h5 {        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing# A2 k4 u6 ~- r& L7 n0 e0 H3 A
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(% N# ~8 l9 Q- z1 ^2 _
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)- J  w$ H7 }2 d( }  a' K, ]9 ?
$ a' ]# o4 n) r$ |2 C) a
        reportPartLoadStatus(partLoadStatus1)2 |. b1 T1 ~8 D8 b/ d; u& c
        partLoadStatus1.Dispose()+ g' B' m5 I" m& e  a$ J

+ @* D7 V8 s3 j        theSession.Parts.LoadOptions.UsePartialLoading = option1  Y, o" k2 m$ c: O. r8 L0 m1 R
  P/ {! H1 @4 k# n/ ~* I: f
    End Sub
4 @- f' \" y/ @6 o8 `& R8 H
2 t, w9 a3 m! f! ?0 _# `/ \! a$ E    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
0 ?' w& Q5 G1 a9 B  h* R        Dim theChildren As Collections.ArrayList = New Collections.ArrayList) I5 T6 g+ J! m8 R6 O* C# R
        Dim aChildTag As Tag = Tag.Null
  Q' c$ j8 C- {
( t7 [  N' o& |) P3 {        Do
4 o: ^8 c  ?7 H# E            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)  P  x& q( d# o
            If (aChildTag = Tag.Null) Then Exit Do( U! I& W& s) g

: A, f4 I. j5 `( O. S            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)# f* F. P& C  Y% M# Q
            theChildren.Add(aChild)
, G5 t! [; M. t% v+ F! |6 {        Loop
$ }$ u' s/ h% ?6 p" M        Return theChildren.ToArray(GetType(Assemblies.Component))
/ F8 n( b$ ~. t2 F( d
, k3 K* i' h5 g  |. f3 ~0 m) V    End Function3 i" \3 \+ \- @; G3 l2 n5 y
- h% |9 C# ], C/ R% t
    Public Sub Main(ByVal args As String())
% m- }- r$ m) O. u) w# j        If dispPart IsNot Nothing Then' }" C* r  j6 }2 B" Z+ r# {4 Z
            DoIt()
$ I+ T: z+ Z* q# J# Q            Return
5 K( t0 x* _; t        End If
/ `8 h5 H7 O- W' ~. O: h9 O3 _0 T" w# c3 ^8 `
    End Sub7 E& u. }3 g' u- _
, z- I, y! \5 r" @* K
    Sub Echo(ByVal output As String)% i7 N3 ~# B# w; @  m  ^
        theSession.ListingWindow.Open()
+ x6 G6 @+ N8 M& ?/ }! j( E  P3 s& ?        theSession.ListingWindow.WriteLine(output)
- Q* T+ f1 |+ q  i        theSession.LogFile.WriteLine(output)
$ C& V' r! O9 [0 \+ o    End Sub
3 N; `  ]' \- i! `& Y* f
* P. p9 k5 T$ o    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
4 T) `( H7 b! W1 |" o% l; m        If load_status.NumberUnloadedParts = 0 Then
: z) J  v: }' i  t+ V) n1 `! p" t            Return" z3 o: Z' x+ g! h6 t5 n
        End If
1 M8 H7 N# z0 i, S2 S6 r6 ^1 K. H; b& S! v
        Echo("  Load notes:")1 W& G, e- R2 d4 i0 p, X4 z
1 O+ q$ T5 S  I& a' {" \0 l- V
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1- N1 R  M$ @( Y5 p  P* g7 E. {
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))* C, H' ]8 Y- t7 y
        Next2 b5 A% F$ d4 z. Y' M9 x7 s$ Z
    End Sub* u- v( i& E1 m7 u
1 S  n6 V( x& h) t% g
    Public Function GetUnloadOption(ByVal arg As String) As Integer* d0 u1 P: m* z6 C- w8 s: L
        Return Session.LibraryUnloadOption.Immediately: x0 ?! Y; d' v" K
    End Function
' B3 T) x8 i* z, T7 F; i
$ t5 @9 u4 u/ A! w& Y6 i) NEnd Module[/mw_shl_code]7 M3 ~  P) G* L( {: d
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了