PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

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

[复制链接]

2019-4-12 09:06:31 1934 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
/ D  l8 ^0 Q2 u' {& KImports NXOpen  _. V  P, e9 u* X8 d. l! K5 v
Imports NXOpen.UF9 I9 x( [) e9 \6 P4 Y: K0 e/ B7 S  J
Imports NXOpen.Utilities
# h7 P8 |; E# [! S0 l# ?* t') e- @2 E: Q7 x- {8 |8 l4 \8 H
' The OpenComponents() parameter7 `1 Q$ H+ e5 U( k
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly. @% k( A4 i0 R+ `: C7 E5 I
' only opens unloaded components fully (see also PR-8406345)
2 ?% s+ T/ o" C: g6 A2 L4 m' Workaround: collect and open all components individually
2 W: G9 J% h6 t4 h; Y'1 G4 Q: K4 Q+ r: e. b1 x
Module NXJournal
# [3 X. B! n* H3 u    Dim theSession As Session = Session.GetSession()
+ y: o: k. F3 O) d+ A    Dim theUFSession As UFSession = UFSession.GetUFSession()
, a  I: [5 D; t2 x2 K: W/ ~5 Y! C    Dim dispPart As Part = theSession.Parts.Display
0 e' P! i& H) g3 J! m! a% o2 C+ V
& \1 k# f- P" |/ {7 P% X    Sub DoIt()
5 z) [: X, G& r$ i/ u( |  k7 J/ [        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
7 J5 C+ N0 X7 e2 B& X        Echo("Number of Components: " & allComps.Length.ToString)  I& H. K6 G5 N7 E% u0 ?
        For ii As Integer = 0 To allComps.Length - 1
% I: q6 a5 ~( J. a            Echo(allComps(ii).DisplayName)- q% }3 S4 ?6 {0 ^
        Next
  V$ z7 e- i) r; |4 t
2 u( b+ r9 T1 T2 I$ y! P  o5 l        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
' p3 e/ j+ ^$ l4 p8 C        theSession.Parts.LoadOptions.UsePartialLoading = False& U  f  _8 W" k8 O

( q) r" C1 K* J        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
! F) @3 S  P" b, ]0 T        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing, @0 X  y5 E) x, _) r
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(* i0 C  T3 h+ u# G6 t
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)# s2 t& a5 k. x4 ]+ S3 C2 a
3 F4 G+ U& \8 k7 O* H0 l  Q2 w( Z
        reportPartLoadStatus(partLoadStatus1)$ T7 y; p# B1 K! U3 z: b" H
        partLoadStatus1.Dispose()
$ j) U7 ]2 K9 ^& A9 ~
% n( `* P, |. l" n: D' }        theSession.Parts.LoadOptions.UsePartialLoading = option12 X8 z3 X0 u+ |# I) \, m! y3 W
, i! d( y: b" W( D$ q6 w$ S$ j
    End Sub
2 o# S4 Y2 g0 r0 J, y
2 j; g1 ]; I* m8 L/ R: W: O+ c# |    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component(): P- C1 [$ u8 Z3 Y+ [' X
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
9 e. i' d# l& Y1 ]  F        Dim aChildTag As Tag = Tag.Null
) J% d- F- s  t9 n+ f; R% n
0 G! N, H+ \3 \' f7 P: [7 L        Do
% X/ a! D7 V. l" Y& k- O, Q            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)1 d4 U/ Q- k# J: t
            If (aChildTag = Tag.Null) Then Exit Do
9 \6 S/ P. F( X* Q6 Z4 N& }! r. M" D% M2 V, S. A
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
3 y6 c: h4 W2 M1 p+ A            theChildren.Add(aChild)
' s) n3 J+ l; ?) C9 ]        Loop
  M0 k) Q) s4 [: x- F        Return theChildren.ToArray(GetType(Assemblies.Component))
. ?1 ^0 S  P, Z3 J( C8 o! _* y. b: p3 R/ Z3 G
    End Function
0 R/ Z5 ]( o2 r6 y) |
6 Q) H9 p, e" Z" Y, \    Public Sub Main(ByVal args As String())' \+ ]: S# u; B$ f0 K9 o
        If dispPart IsNot Nothing Then
/ Y: R' F. E" _7 a7 }. f/ P4 p4 b$ c            DoIt()! s+ h. L6 b  ?
            Return! g  o2 J) N5 G" {! _
        End If
4 L. |! }* O( o$ N  a8 G' P
: }# _) _0 }7 b) i# n    End Sub+ H+ Q" ^1 [  R/ Y
* X+ g0 O2 b8 j, w
    Sub Echo(ByVal output As String)
4 ]7 H( q+ h/ a- E' r/ l# b        theSession.ListingWindow.Open()
9 ]( u: p1 o- S# h* ?2 \1 x! b9 e$ r        theSession.ListingWindow.WriteLine(output); j$ @8 t/ c7 A& H# \5 ~
        theSession.LogFile.WriteLine(output)- N* P8 N. d; R
    End Sub4 m) d6 A: C0 F$ V! E; l; ]

( ]1 x5 i, V! }    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
  @  B. ]0 T6 L2 ]        If load_status.NumberUnloadedParts = 0 Then
6 J5 j- p0 C) R8 j/ M            Return# o9 G9 v8 {' k) ]6 ?) [7 B, t
        End If
& Z4 _1 g5 L- P5 l8 q: b4 ^
: |) L" n2 u- z        Echo("  Load notes:")
+ r$ x, M: v5 b& E( f0 P/ G9 t9 \
# R% E  r/ L- a        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1- w- o4 j% a, o, {+ S4 L5 U
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii)); f0 W* q/ i* ^$ G  H6 b
        Next
$ u' m8 k' R; ^, V" r1 P+ N: Y6 N    End Sub& R. S5 \# ^& ]* y5 G
9 O$ ?+ S. _/ L& I! |) v, \# \
    Public Function GetUnloadOption(ByVal arg As String) As Integer
; }$ E" Y- u+ r        Return Session.LibraryUnloadOption.Immediately
4 t8 E* d8 `5 S* u0 e    End Function% y6 o6 Q0 e" i7 p% S$ F. b# M1 }& n& e" H
: {# u7 x$ A- k, L# M: O
End Module[/mw_shl_code]
. i. X# s: u1 r4 g/ A
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了