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

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

[复制链接]

2019-4-12 09:06:31 2506 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" ?7 n9 ]8 Z# Y( d% l: _
Imports NXOpen& Y& ?& A2 p/ s0 J$ O8 w
Imports NXOpen.UF/ f+ t4 u4 G4 C2 ?: f
Imports NXOpen.Utilities
) M# L4 P  X( N) f9 n! Q'  |7 [+ P; b. _! @, }
' The OpenComponents() parameter. ]% @  p8 \$ @( C
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
- v( `( ]6 u1 B! E6 T3 O' only opens unloaded components fully (see also PR-8406345)
% X' i0 ]' V8 ^1 u' Workaround: collect and open all components individually
) }/ H9 v5 D8 {', o* N( H5 {# e, h. C7 K
Module NXJournal
0 {/ \: U1 r3 Y! \    Dim theSession As Session = Session.GetSession(); R  }: @5 b. y' m! W  o6 a
    Dim theUFSession As UFSession = UFSession.GetUFSession()$ h3 l0 S2 j6 ?
    Dim dispPart As Part = theSession.Parts.Display
/ \9 Q& q" P& p. p# D+ k
, `1 X: X$ I8 W/ ~# t6 A    Sub DoIt()/ P, A! Z- X, n+ [2 r5 c1 ]
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
) `) n& ~' U; z3 k# Q5 o* r        Echo("Number of Components: " & allComps.Length.ToString)* v9 d) s3 P0 T0 J$ ~# R
        For ii As Integer = 0 To allComps.Length - 1
6 h+ l6 N1 A- O+ B. P1 j            Echo(allComps(ii).DisplayName)+ C' n' p  b8 g7 E+ B
        Next
- M/ q- o, k  r4 J/ r: ]
1 C5 ?" x' C- n! y) s, x        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
7 O9 T) d0 C7 Q. X        theSession.Parts.LoadOptions.UsePartialLoading = False
' M( @1 x& A1 s  i1 E7 a- v  i! P- L( Q$ d
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
3 Y, u4 d0 A: u& W4 {        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing  q2 n0 c7 \& b. T
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(# X: z/ t" J% Y8 i& C# X7 `, `
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
. L" n+ J1 P- `% N6 K
2 x. |, p8 f0 z  k) X" M5 G        reportPartLoadStatus(partLoadStatus1)
9 R9 N# B/ a) T: C: x" c        partLoadStatus1.Dispose()
& x0 v: D3 {3 k/ ?4 f& e1 b3 a; i: R5 g& k: t
        theSession.Parts.LoadOptions.UsePartialLoading = option1
+ {$ z5 q1 o+ I& c3 g$ N
( \# N0 k5 J" u1 g    End Sub5 d5 f6 c7 _, T1 @

! ]1 x! f) f7 B; y. u    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
7 D4 m3 s# k0 D        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
  _) |& q! D: x4 g4 T1 |3 w) M" z' W        Dim aChildTag As Tag = Tag.Null
7 I! T' M& V3 ~# M. F) d0 x: ?5 M$ X, C- ~. y
        Do& P  R7 J: t) K# A3 e" `7 K+ B
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)$ [2 V9 U! ?- ^( K
            If (aChildTag = Tag.Null) Then Exit Do9 K' x' \6 C( }6 w

9 E. K; k! @8 y' b$ O( k            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)% b9 N; {  r, E* B1 f0 H+ x
            theChildren.Add(aChild)4 ~: w! P1 w4 c" R' l/ U& O0 V- ^0 F
        Loop
2 L" C7 G; r' Y$ O% h2 y        Return theChildren.ToArray(GetType(Assemblies.Component))1 f) w: b0 m' J& f! a

2 Q5 {) ]& M  G: s! N* w# \3 M. |% N6 f7 F    End Function
) E& h- U3 w) y! Z# g/ K7 o5 h
0 c5 M  i* a$ _$ y+ Q- k( v    Public Sub Main(ByVal args As String()), Z0 B% M& X% e3 q; P. i" y5 f
        If dispPart IsNot Nothing Then
( H9 m2 J6 U6 S# Z. V9 _9 O) j/ x6 V            DoIt()' q7 L. z, [& {- Q2 t* K* p
            Return
# A4 X$ ]$ \+ x, m  @* ]        End If
$ D" M: c. s, n2 o& _' ^& t: k8 n0 K# c2 |4 z' \
    End Sub, n' Q3 ?4 v$ n/ W, A
: [  c2 h% Z; V; P/ M, J
    Sub Echo(ByVal output As String)9 R. _% f- q# q0 a& ^1 E
        theSession.ListingWindow.Open()
' V4 I2 |, @0 I/ U' o6 W        theSession.ListingWindow.WriteLine(output)1 [2 B! ]1 E+ K0 f
        theSession.LogFile.WriteLine(output)
: X. K3 c+ x+ c    End Sub
3 u( _! Z! J) k2 |! B2 j( |3 s, _6 A! P4 h
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)( D9 Z9 o$ T$ A9 f
        If load_status.NumberUnloadedParts = 0 Then7 H+ J2 z3 H9 n5 ]& j
            Return. `! X4 a  s# T- a: f- r
        End If
+ A6 S5 Y8 J+ B( J" B) w2 e; K- s0 G; x5 g) L' @( H7 g
        Echo("  Load notes:"); v5 V* M7 e! N5 \
1 A1 X! B5 I8 T. R! E) y) `* Y* b: R2 t/ q
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
& q& _/ ?2 v" n) n; i; o+ Z            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
, G7 I( h. p8 u$ z4 `0 V0 l6 i        Next( z$ }4 V5 b- ^" k* g# c
    End Sub
- b4 W! \8 r: C+ I% s+ S# U
* G, t0 \4 T5 b5 v    Public Function GetUnloadOption(ByVal arg As String) As Integer" k6 @' E! E' y* H' b. n+ a3 @
        Return Session.LibraryUnloadOption.Immediately! w7 r1 R$ Z7 A6 g2 b# [9 k% O
    End Function
2 \$ e0 w" z8 w3 |6 p8 {# R* f% n( \/ y/ U( h
End Module[/mw_shl_code]
' T8 G* u( Y+ P1 s3 Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了