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

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

[复制链接]

2019-4-12 09:06:31 2508 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
/ @$ N" o  y1 R9 z6 mImports NXOpen4 g& C( ~( X7 L1 q: i
Imports NXOpen.UF8 `! Q5 H/ i/ R) ^! x
Imports NXOpen.Utilities
4 R, G' H+ Y& u2 k- Y'
9 O. a* F$ p; `; H5 _$ d6 `6 [' The OpenComponents() parameter' c: t* m9 Y( c. Q0 {7 X
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
% G# |9 z2 K1 \2 x' only opens unloaded components fully (see also PR-8406345)
6 A& P( e; U+ E' Workaround: collect and open all components individually% l! B$ r* T( }5 |- i& W0 R6 y# R
'
5 A& N( E+ S5 l9 T7 I: ZModule NXJournal3 M0 X1 M9 x. |7 M4 n* T$ I" ^$ A
    Dim theSession As Session = Session.GetSession()
. n& m7 E* q  a# A( v; T    Dim theUFSession As UFSession = UFSession.GetUFSession()
# E1 t0 ~$ p6 Q$ i: [7 c    Dim dispPart As Part = theSession.Parts.Display( ~- U/ D. r8 {" \
+ A* l: i0 H! G+ w: f1 ?: d( j8 n
    Sub DoIt()- s- ^" ~2 J$ ]) J
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
2 D3 a! V3 W' E* Z. Z0 [        Echo("Number of Components: " & allComps.Length.ToString)
1 w4 D! N( Y& |4 L+ W$ }& c: l        For ii As Integer = 0 To allComps.Length - 1+ D% a5 V. [% J9 {4 |3 d
            Echo(allComps(ii).DisplayName)5 A( {9 Y9 K0 Z* L/ P$ w$ e
        Next
1 r% _# X( J; f: q* s0 f% {) o) c. o; ]7 z* ^  L
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading6 |0 z0 z' t. D0 G
        theSession.Parts.LoadOptions.UsePartialLoading = False
8 t; \  U) \2 V# ?/ y8 _) ?' H! _* A5 e
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
0 k: X! _1 c7 D- u+ {+ N        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
- L3 Z  }4 W6 j6 ?5 p6 [& ~9 r8 Q        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
5 {, \& S$ q, B% m            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)0 h( ^4 e% t% s

. Z" A# s5 N& f9 d& R) E        reportPartLoadStatus(partLoadStatus1)/ K/ d3 f2 w; p& j& T
        partLoadStatus1.Dispose()
: ~& s; R1 G* o; e
5 F% a6 f. }1 T* Y/ }        theSession.Parts.LoadOptions.UsePartialLoading = option16 H% v& b& e) B  B0 H
( l7 ]. |6 i* w: r/ j! W/ ^5 t9 f
    End Sub5 K2 G3 d- \! `: N2 [8 ^; }
( H0 N7 W; t& t1 ^0 d. U% f  l' e
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()' i9 N8 j& J8 v4 |9 a. i8 |( q' V
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
4 [9 p7 a/ G- l; Y        Dim aChildTag As Tag = Tag.Null
9 T* C6 C& ~' [2 B2 I
/ Y' j, O* W" ^) v$ h2 O9 s3 Q. Z        Do
0 z8 \* @# N# }3 o3 o1 Z& J& q! r            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
8 d' I8 }" F; g& s7 m' K  ]            If (aChildTag = Tag.Null) Then Exit Do
: f) ?% c+ ?: t/ Q
0 O* G5 B' Y  |6 H: _- a; O            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
! Y. V2 `5 ~/ m& i+ c2 V$ }1 I            theChildren.Add(aChild)
4 f& @" \( Q/ d) M/ e0 c2 C        Loop
. u' b+ t# o/ A( F        Return theChildren.ToArray(GetType(Assemblies.Component))) Q" |6 J! E5 q1 _# {! `2 e& G- q

: r# R" \" V8 l0 R" d4 Q& _# p# p    End Function
0 L" J! G+ [, ~/ H$ I- x
2 R$ b9 t3 G' A    Public Sub Main(ByVal args As String())
1 f5 ~! f$ [1 {9 C" S        If dispPart IsNot Nothing Then, g% q- @9 O# b) N" P
            DoIt()- P- \/ b8 ?  B7 T
            Return# Z; q' a& M* j& s, ?+ l
        End If
- e, H: Z9 V3 `2 u8 C# O# Q" x$ q/ ~
    End Sub0 ]% _; X) z' `& c* h$ q! t
- c, ^9 a0 x' v" t# `4 x
    Sub Echo(ByVal output As String)  ], [% n# O. y4 y& D/ N2 y5 r8 A& ~0 Q
        theSession.ListingWindow.Open()
: t# y% ], B; \        theSession.ListingWindow.WriteLine(output)
8 T5 n8 e# c8 g  v1 ?9 p        theSession.LogFile.WriteLine(output)
1 k. E* H" P# g# B( M6 A( R' Z    End Sub
& b2 ?9 d7 g6 D* [2 k8 Y2 i2 G9 k+ l; O5 S
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
8 Z+ }' B: a9 |        If load_status.NumberUnloadedParts = 0 Then) B& d2 r/ d8 Z' n; {6 X
            Return
4 @8 a2 b9 b* y8 L! F3 M" L  Y, c        End If' F( u5 r. \- E! z
' g: t  W* _* |$ ]9 d
        Echo("  Load notes:")
# N' p- h* O. g
8 K/ l* ?% Y( J, Q" |7 P( v  X        For ii As Integer = 0 To load_status.NumberUnloadedParts - 10 A: h& ~8 U- \3 X' b, Q8 m. _
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
8 O/ X3 h% i  q) i        Next
' X; Y9 C; u3 f+ p    End Sub5 P: {$ @0 D; p
9 K* N" I1 h) D6 i. |
    Public Function GetUnloadOption(ByVal arg As String) As Integer" p; H* S% T/ q, _
        Return Session.LibraryUnloadOption.Immediately
1 w  u0 l. S" n/ H; W    End Function" U7 E, o/ M" `) Z2 X& V5 t

: Q# A  w. m2 Y/ gEnd Module[/mw_shl_code]
& g+ `" ]! b( k/ E! @+ [
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了