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 2077 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
. [* J# m8 `" YImports NXOpen" ^+ M$ E8 C$ e; F/ O! [
Imports NXOpen.UF
1 p& E* |; Z0 @1 _+ H/ }Imports NXOpen.Utilities( X. Q# P) X% P: T
'; @" J0 s7 K! t/ ?  \! O
' The OpenComponents() parameter+ u6 A6 f8 j6 b/ J
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
" B! v; I/ ~7 M& Y: G' only opens unloaded components fully (see also PR-8406345)0 X8 C- O* Z& v6 S/ ]) y9 B) b
' Workaround: collect and open all components individually( e+ Q# J) W6 V
'
& ~$ V3 g- m  J1 e# F7 ]8 }8 y5 QModule NXJournal
2 Q! ~' x/ o# F* [" l; }& B    Dim theSession As Session = Session.GetSession(). P9 N  P+ Y+ W  ~6 l2 `2 D
    Dim theUFSession As UFSession = UFSession.GetUFSession()( K( n( g+ V& C, ~
    Dim dispPart As Part = theSession.Parts.Display# t* c8 }: ~+ G7 t  b

( s& K' k  \7 I+ Y    Sub DoIt()
1 L1 l. [3 w- h6 w        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)' V2 b1 e5 P' j$ G1 O
        Echo("Number of Components: " & allComps.Length.ToString)2 K5 E1 r% Y6 o  c2 S
        For ii As Integer = 0 To allComps.Length - 1
% l0 c( M) Y2 I6 }            Echo(allComps(ii).DisplayName)3 G5 Q8 B) o/ l4 j9 R3 G. N, j% \
        Next/ R: ~- Y. r, b" p4 q) D+ b9 c+ Y
6 Y# K5 N& c6 }
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading5 ?) p* R' ]) K9 N& m
        theSession.Parts.LoadOptions.UsePartialLoading = False
2 n* i; g) q5 u5 Z. Q2 ~* o" g) H+ ?' u# Y8 C3 A
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
% b6 y$ k( q0 p        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing7 H+ ?. J7 p3 y( M
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
8 L* Y; n; n. a4 Y5 C, b( l            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)- ?! ~  d8 G/ S5 T
, h8 x  L; `( I; H% O4 V+ l
        reportPartLoadStatus(partLoadStatus1)
' ]) Z( R. j3 D6 H' G        partLoadStatus1.Dispose()
& x1 c, ^3 u$ W: R
+ i* V1 g/ \2 k: g; C        theSession.Parts.LoadOptions.UsePartialLoading = option1
- m; G* o# H9 m3 `" i; J9 i1 a$ @: S, o
    End Sub' q3 ?* l# Y6 d) k( T: u1 D
: c; R7 x  E& V1 d7 H( Q$ l1 e; d
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component(); k; s- ~9 C# W  d- i- F2 y8 s* U
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList, I/ E4 O& N9 A4 X+ n2 T7 M% r- g
        Dim aChildTag As Tag = Tag.Null+ Y# z. q2 r3 D

" E9 A/ y% C- ~1 Z4 M        Do) X8 h. M$ O9 @  b% v. Q1 |
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
0 v! D0 [. w8 i3 G0 R2 i            If (aChildTag = Tag.Null) Then Exit Do3 Y% m8 k% G8 I9 @4 a

, L! o' W7 w# z  W4 D; ]. t            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)  ]. B/ d1 o7 H: i2 [5 P
            theChildren.Add(aChild)3 `" z2 w  m/ o0 x" k
        Loop
2 m- \1 h% ]* @        Return theChildren.ToArray(GetType(Assemblies.Component))  Z+ n6 y( d' M8 E' r
& f; R) G$ x; G* Q( ?0 z  R
    End Function) |* T$ T( x: Y8 B8 ^1 w7 q4 {

3 W1 K0 G$ m) q# Z    Public Sub Main(ByVal args As String())# z3 b$ K1 `& M% B. [/ v) J: k
        If dispPart IsNot Nothing Then
; z. \, h5 o8 ?            DoIt()
# i" k: }* u! U9 X* @; B2 A3 w2 E            Return/ r3 U" L9 R* _' p) I- X
        End If: c9 G& ^5 H6 J
' ^( c" c; m$ x# q: i$ F, S
    End Sub
* H/ \/ m$ k3 l6 g# ~3 g& d; {; ^* s% W; Q* U$ Y; B8 ]
    Sub Echo(ByVal output As String), g$ N( d+ t  p" F9 t7 Y; G) K
        theSession.ListingWindow.Open()
, X- h  @$ W) Q7 f4 k        theSession.ListingWindow.WriteLine(output)
$ k! A0 f9 `0 R& Z% I( s        theSession.LogFile.WriteLine(output)
% h# d4 r$ R- p% }& U0 ~/ ?/ M    End Sub
( S+ [% V; l: {# d$ M+ b$ l4 ]# [! S- L1 p
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)5 U: g# n( T9 M( f
        If load_status.NumberUnloadedParts = 0 Then7 s, q6 }! v/ F
            Return# I, Y& ~% _! D
        End If; i8 c) y9 W6 e

0 ]$ A7 b3 e9 b; e5 H8 s        Echo("  Load notes:")
5 X5 J: X# P2 s+ X0 J( a, U! ~" |
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1$ L* {& O2 i1 W  E( \* D3 o
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
6 D. D9 U1 N: f$ \/ h6 Y/ o        Next3 j* d% m, A6 B, t- I/ k
    End Sub
! a+ C' I( v+ r0 u9 R0 S# S
) T: ]/ P  c2 Y% r( O9 w    Public Function GetUnloadOption(ByVal arg As String) As Integer  r6 _/ g7 ]& w/ g& ~7 Y
        Return Session.LibraryUnloadOption.Immediately0 ?$ \; [$ S  \' c
    End Function  }- V( r  s  K+ @! ~0 w, _

4 b6 x+ G3 J! \End Module[/mw_shl_code]1 s' Y) a8 s+ c" F  S' q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了