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

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

[复制链接]

2019-4-12 09:06:31 2390 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
/ Z$ Y9 f, Z3 nImports NXOpen
4 B/ v- L0 O% CImports NXOpen.UF) I& x, p# g; {8 M3 @, D0 q0 ^" m
Imports NXOpen.Utilities
& x% C9 D/ t$ O( v: m+ Q'
" D# {5 m3 P- ^' The OpenComponents() parameter
. o. n. f+ m2 q% t$ ?/ b& x3 E' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly) Z/ @& c1 C% N( c. m+ y
' only opens unloaded components fully (see also PR-8406345)2 `3 Z- m: c% }2 p- Q5 T
' Workaround: collect and open all components individually
+ ^) L! v# i. h; D'# B) C$ v" l4 m" y- @
Module NXJournal
, b- V- i. Y+ Q. v+ w    Dim theSession As Session = Session.GetSession()0 d3 Q7 ^/ p7 c9 p9 x5 n
    Dim theUFSession As UFSession = UFSession.GetUFSession()
  f, e/ A8 E+ K/ k: t    Dim dispPart As Part = theSession.Parts.Display0 b6 @7 q! @; j/ W- A
: w3 t' q$ O% F7 b" j# @6 @
    Sub DoIt()
2 L' w3 L8 B! _/ e5 b) m        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)9 G( I% K8 c* _
        Echo("Number of Components: " & allComps.Length.ToString)
! H- x& U, A: s9 M; q4 A        For ii As Integer = 0 To allComps.Length - 1
( z" A5 L- @. C2 A; R            Echo(allComps(ii).DisplayName)
% a$ n- Z6 d. `# N- E        Next# c: M; o- p6 j6 r
2 l; }# s# M! ~& X! z
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
- j7 h' e/ c9 o7 |' h! \" J        theSession.Parts.LoadOptions.UsePartialLoading = False; ?4 u- o, D0 d  x: E6 D

$ o8 \: X8 G3 x        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
& N- K3 a: v; E/ s        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing4 Y. Q; D& X% L9 O8 h! \
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(; o( f- q, v, M4 g
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
. u  x$ i! M8 g# A* P
2 y8 n. |+ i) g! [" E" m        reportPartLoadStatus(partLoadStatus1)8 w: P; C, r! p/ d. d: ]0 M; a- U
        partLoadStatus1.Dispose(), q- [& `9 z' D: K3 p! S

' a, b8 Q! M3 S* S: h$ D' ~9 j$ i        theSession.Parts.LoadOptions.UsePartialLoading = option1
) ?- A4 d# h* V* k* g2 v7 g5 V3 g) J- Y9 i
    End Sub( {4 N0 |9 t4 X4 R! g$ V3 ~! Q
1 V& z! C5 X( K) u
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()* M0 S0 O8 c7 k1 }5 ~
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
8 v. T; N  ?7 G        Dim aChildTag As Tag = Tag.Null  b" x- v+ e7 I! c
7 ~! s9 N  a6 e4 S
        Do/ K! l5 \- c9 J) m
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
5 p9 j3 h6 {  A7 p' x- r' Y4 `7 s            If (aChildTag = Tag.Null) Then Exit Do) G" P( h) [2 z! K
: j$ {, C$ H: P7 y  l( W5 l# T% l
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag). \4 _: U+ s9 I& v5 I$ P; w
            theChildren.Add(aChild)) T( m4 A* m1 h/ N
        Loop
! h% o# a! s/ Q- `; l# u/ o        Return theChildren.ToArray(GetType(Assemblies.Component))5 y& I9 r$ r$ e: m! e
7 d& m- z9 M( X; w: z
    End Function6 h/ N6 J" [6 G% `. d2 @0 e
& E4 v" U( i* ~4 Y" N" s. K2 |
    Public Sub Main(ByVal args As String())0 y* t% j* i  l
        If dispPart IsNot Nothing Then
6 f) {' {8 u5 |% ^            DoIt()
! M$ E* ~  X& h2 h4 b/ K            Return2 x  s, y; S$ q3 N! i6 o
        End If
2 p* c3 p( t. Y, {
9 `* y/ N) f: w4 H( [. h* K    End Sub
/ d2 @; i7 b6 H& ~+ g* ]$ ^1 |  S7 ?
    Sub Echo(ByVal output As String)& h: y! }9 o! Z! z: p1 w% g4 {
        theSession.ListingWindow.Open()
3 y. s9 A& n1 y1 ]' z( u; y$ O        theSession.ListingWindow.WriteLine(output)
6 `! M8 w& ]$ P* Z/ y        theSession.LogFile.WriteLine(output)
5 x$ P# ~, `1 P7 ]8 F    End Sub
( s; }; z4 {3 i0 p2 D" ^+ q9 k" j4 k+ a7 X4 c% d
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
' ~  A6 z! t& n8 D" i3 G, M9 ?        If load_status.NumberUnloadedParts = 0 Then/ [2 l) A) U. z) z/ N3 e
            Return
& b/ \" d& E; n        End If
' L# C9 B* b) V+ `6 `* M* {  v% k1 e8 E# _; K+ e" B: p
        Echo("  Load notes:")
& D6 Z3 ^( e8 F2 ?4 q" v, ]4 j8 R
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 19 N3 ?& g9 D1 L& _* k) q4 Z9 h
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
9 @' U/ Q  P1 X9 L' j" s& C        Next7 q$ L/ j: j" w( v7 J  H! ?9 I
    End Sub
: X2 J) t6 ~/ x: Y  k5 N2 N" R8 Y/ G# n$ X
    Public Function GetUnloadOption(ByVal arg As String) As Integer& O; H) l  @/ ~$ e
        Return Session.LibraryUnloadOption.Immediately
7 t0 Q! y+ \& V& U! k    End Function
6 M6 d! E6 T$ j) A0 u. A$ b" n4 _) {( R) |
End Module[/mw_shl_code]
# d" A  M1 i9 i# @& n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了