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

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

[复制链接]

2019-4-12 09:06:31 2449 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; I/ f- A! d# b" ^
Imports NXOpen
/ X3 E, o3 C' H5 ^Imports NXOpen.UF/ _8 Z# Z1 Y+ X8 N- K; D
Imports NXOpen.Utilities7 s; x1 o0 A8 U, y, v2 l- q
'; t2 c9 k. B0 T! c& h
' The OpenComponents() parameter8 G) [3 z, f: s( j$ N( r, Y  P
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly5 }- D7 \" ^% f1 l  s
' only opens unloaded components fully (see also PR-8406345)
  F1 d- r- r7 U2 c' Workaround: collect and open all components individually) w% w( ^. ]: q" l7 v2 i
'2 r3 s/ M+ b) N
Module NXJournal
5 x$ w& ^4 p+ Q, D1 i! r$ ~# l  E9 t    Dim theSession As Session = Session.GetSession()' h' q, [) r7 O, z! p
    Dim theUFSession As UFSession = UFSession.GetUFSession()
, J+ s+ V4 @7 ?0 K- s+ i, t    Dim dispPart As Part = theSession.Parts.Display9 Y4 E" N' `# J: [
9 y2 \, ?* A2 n% a7 L! t
    Sub DoIt()
9 t9 j" C% x. W% W" q! s        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)# B+ `& C: h$ P4 K$ r0 d1 |8 l
        Echo("Number of Components: " & allComps.Length.ToString)/ j& \- a$ R# T; _
        For ii As Integer = 0 To allComps.Length - 1* q8 b; Q* K6 l3 G$ U+ D
            Echo(allComps(ii).DisplayName)
* \: B- `! T% c1 w# p- p        Next
; q- ?2 J  E. d' E! f) I# j2 T' {$ K5 U; f0 n* P5 r3 P0 x6 k
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
* d8 p3 Z3 `; Y2 u, `        theSession.Parts.LoadOptions.UsePartialLoading = False
: W: C1 z& q; u& A2 I
" P" W( N; Q6 h) y* U2 Q        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus: a9 J+ V* W& l* Q" Q0 L
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing. H% A1 {. f5 n9 i5 K
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
8 c0 Q" o& R- `/ [            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
4 d9 ?7 q! T' A/ p' }0 D: e- V+ f8 C  q# ]6 Q
        reportPartLoadStatus(partLoadStatus1)6 m- D7 @0 {( U* P; H& b
        partLoadStatus1.Dispose()
" O1 r( j% F6 @" v4 T# o- f8 J
9 Y! X* q/ C! B1 c8 [  y1 w* J        theSession.Parts.LoadOptions.UsePartialLoading = option1+ F. |2 [& w( t' E

' F3 Y/ E" v$ f- B. R% q    End Sub
! U3 p) v4 f* x1 Y4 A. T' B# X: d' S9 S: j6 e/ c
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
6 b: p$ s9 c! y! [        Dim theChildren As Collections.ArrayList = New Collections.ArrayList5 j: q  L. E5 ^8 Z6 k+ C
        Dim aChildTag As Tag = Tag.Null0 l) m9 l: L' @& G: M/ r4 m

3 ]9 x8 K- C+ h: g" W6 T* P  v- e8 V        Do# \& Z  H- G! D
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)+ _. G+ [0 }# c* n& P9 }, L* A7 |
            If (aChildTag = Tag.Null) Then Exit Do  E3 z7 b( S/ v( v) ^8 O3 J
% J3 p" `. J, \5 b% B2 T0 [& W/ t
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)& E$ E2 b! U, E( n
            theChildren.Add(aChild)7 M8 t1 R0 L5 g" y8 A
        Loop- k+ j4 F. R/ X/ h
        Return theChildren.ToArray(GetType(Assemblies.Component))
' {9 N2 c% o3 u5 @8 Q0 p  u% C, L4 X. W0 U  e
    End Function. P1 ]' F3 h! H9 {( F0 K$ b% j

6 n+ n9 i; d4 p: J/ _    Public Sub Main(ByVal args As String())
/ o3 J! _  x$ c9 d/ \        If dispPart IsNot Nothing Then( {; c* ^$ w% N6 R: v# J0 \+ h. @
            DoIt()) {  g* |8 c9 \3 C1 C0 t& u
            Return
, E9 E9 s1 {) H! [* s' D  Q        End If
* e) b0 a$ G/ V* `5 r; ]' P: m! E6 G1 [9 E4 r
    End Sub
0 c3 A) w' |5 Z7 g4 f! l3 F5 }- j. h& A0 W
    Sub Echo(ByVal output As String)
) C/ @1 F' [- G# `# p9 D        theSession.ListingWindow.Open()
8 u$ Q. p( l; w* Q8 X9 T        theSession.ListingWindow.WriteLine(output)/ k' B# }. X9 N0 t( ^$ J( p
        theSession.LogFile.WriteLine(output)
, J) D8 Q7 r2 J; A    End Sub6 I% A' D) w5 |2 {$ {

! l( Q# N9 q8 m- k' i; W    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)$ S8 o- X. g: F% b1 j
        If load_status.NumberUnloadedParts = 0 Then  Q4 p2 w# @4 x0 Y) B& L
            Return7 c! `% D. m) a) P2 r
        End If
7 i  v: v9 Z" d: o
0 s4 i1 i& a- ~+ T8 S* U% u  x        Echo("  Load notes:")
5 ^& V: w; [9 b  `2 s& {$ p8 a; Z% R+ u- ], l# n; S0 k, I
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1( j' m; E6 t  n3 [
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
4 g5 J  v% w% _+ y9 |        Next. Q/ Y) {6 X  N7 C' }- a
    End Sub
  g1 `6 W/ Q" O  z
4 r; @; c, |9 H% y/ Y, e5 e9 L    Public Function GetUnloadOption(ByVal arg As String) As Integer- h0 @3 g" N! {  ]7 i% C6 E4 @' n
        Return Session.LibraryUnloadOption.Immediately
  ^  S! B8 f6 ~$ @, _% W4 N! o    End Function  y# s: S, n8 f! N. y
% O9 W2 I) w) z7 m/ Y4 }
End Module[/mw_shl_code]$ V" N* Q% ~, L' q# R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了