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

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

[复制链接]

2019-4-12 09:06:31 2438 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
3 S; }1 v6 e( Z6 m9 q0 xImports NXOpen' N" Y! s% S5 K% e* G, n$ d) m  D
Imports NXOpen.UF: N' C/ J/ E+ }, |5 e
Imports NXOpen.Utilities& K% l3 ]4 T3 O1 a  j; M5 l
'( k. q  t4 \5 n# y# n' R4 l8 @
' The OpenComponents() parameter) o" N( `. ]: q9 J. _; Y: {
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
% G0 T3 e, W2 I" d3 g% Q( \' only opens unloaded components fully (see also PR-8406345)
" N( u' J  p9 X! Z% |' Workaround: collect and open all components individually
$ N! \" Q- a3 T& p% B'
! T3 ~7 X& h  X; k8 o" oModule NXJournal
' A6 U" z8 b& t# ]0 k* f    Dim theSession As Session = Session.GetSession()
9 \' x1 k9 M! s3 S9 f    Dim theUFSession As UFSession = UFSession.GetUFSession()
4 P2 ?# z' `) c$ N! V/ ^  {3 n    Dim dispPart As Part = theSession.Parts.Display
! q- u. V/ d; r0 g
; ^0 F7 e; k. \( g/ Y    Sub DoIt()
( T3 u; f  W' }; j4 {        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)& ]7 j5 c7 i5 @7 A& x, l3 z4 n+ e
        Echo("Number of Components: " & allComps.Length.ToString)6 W3 |! o" @6 M/ I1 f, A3 s
        For ii As Integer = 0 To allComps.Length - 1
' o  |6 A+ B9 K0 z5 y1 r" N            Echo(allComps(ii).DisplayName)9 l: Z( ^( O, X7 E
        Next/ i5 Z, U; q/ |9 b% m4 z

- H0 N) }. a4 g& `9 A        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading/ Q7 {/ V- C+ T& ?
        theSession.Parts.LoadOptions.UsePartialLoading = False
: @- L3 d6 a& X2 G% V& u" ^6 C/ o/ A2 b8 S7 j" ]* r2 y. j& l
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
' o0 `' E0 ?0 _6 n4 W        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
# b7 P1 Q9 Z5 t1 y        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(: L7 j$ s/ U& }8 n
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)* E, `$ h5 {1 o3 l7 ~  V: `' P) Q
4 x- s  L" k: |
        reportPartLoadStatus(partLoadStatus1): l1 V5 D0 z: u, b5 r$ \9 X" Z& W
        partLoadStatus1.Dispose()
9 }+ _! I5 N$ O8 ?* e: F) G, k! w
4 O# S8 l) W  D7 U( d+ r        theSession.Parts.LoadOptions.UsePartialLoading = option1
3 f1 I4 R! d- i  A% t# }' Q' a: {! g; e# C, u& H* i0 `# n
    End Sub( f' W" F# r  K! @

, L. B) g. X( ]7 `: D* Z    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()0 V8 D3 @2 f+ R% g- T
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList3 j& L3 @" W3 B: @; ]  S
        Dim aChildTag As Tag = Tag.Null5 Y/ b- e5 j' k

$ w9 e# C+ X, `  @, _$ i6 L; Y        Do
! D/ z: n2 j; h  d            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
; G5 E/ M4 Z: e1 g2 R            If (aChildTag = Tag.Null) Then Exit Do7 Q# c+ ?1 W7 r" t. {
! @- p' Z" O6 s9 q' z: k( n
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
' j& J8 ?' a  d: y8 _            theChildren.Add(aChild)
5 @8 y! p: s) y$ L        Loop
* g) n1 y# d' h$ Y, M; |        Return theChildren.ToArray(GetType(Assemblies.Component))
: t7 l) i2 j0 L4 @7 i5 f7 |5 }! k. U* b  _# y/ H! M6 N
    End Function
- G. b4 P, c, ~1 _$ l: q. w9 h
' S) _2 Q" z7 F1 E1 R' \0 _; `    Public Sub Main(ByVal args As String())& j: J; ~; v+ I0 w0 d/ ~
        If dispPart IsNot Nothing Then
; {7 B% R+ w& v            DoIt()
4 U% p' g. @6 y" a; E! W& e4 c9 _$ {            Return* m% k6 Z5 w" e7 @' c
        End If& @* r0 F! I5 e3 D

+ B4 W9 T- J) u# e3 A/ ?7 ?    End Sub
, Y, Y5 `: a: S7 {* z; |7 ^4 X8 O  [
    Sub Echo(ByVal output As String)4 \  p: C: J5 _& A) g+ `8 ~  j- j
        theSession.ListingWindow.Open()
2 o. T7 I0 S5 P, j2 G- z8 C        theSession.ListingWindow.WriteLine(output)& L( N# n8 G. l3 A, U2 f( K
        theSession.LogFile.WriteLine(output)
/ G9 Z$ M9 @0 S; a6 m- I4 |; |    End Sub; A1 j0 ^# ]( z+ W
1 f, M! g, g# @' T- d0 o; d
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)% y( @6 C2 J  ]" P0 x# @
        If load_status.NumberUnloadedParts = 0 Then+ ~! d' ^+ F) {2 |7 K7 E
            Return4 }  M+ l* G' {% y
        End If0 r5 v  m0 G$ r! S$ [2 z
' m! j6 e% n4 Y6 o, e% v: g
        Echo("  Load notes:")
1 K. O! B( J2 J+ }% j  Z' J
9 ^9 }/ r: D2 F% j/ N1 N# i# o        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
) D* M+ y2 X8 S# C            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
$ _% u% g" L+ s8 ^        Next
: a; J1 J( ?9 G9 \% ^5 B    End Sub
+ @! x' h) m8 t* W/ c8 p* w& }4 L, D& E8 ~* K+ U
    Public Function GetUnloadOption(ByVal arg As String) As Integer
( R. C8 s2 v8 [: q% L/ m! v        Return Session.LibraryUnloadOption.Immediately) G7 U$ \3 P) w! w2 ~5 U2 d* g
    End Function1 E6 L. W" C2 j, v0 P+ m1 g

: l0 D- \) V& }, N) bEnd Module[/mw_shl_code]
1 \; Z. O. J, p5 u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了