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 2076 0

admin 发表于 2019-4-12 09:06:31 |阅读模式

admin 楼主

2019-4-12 09:06:31

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
[mw_shl_code=csharp,true]Imports System4 e5 d1 {$ ?  E8 l' `8 y  \
Imports NXOpen
  v9 h: A3 M2 H. C% nImports NXOpen.UF
% d$ B! P! V9 q6 R/ S$ g: Z7 x' zImports NXOpen.Utilities* J9 v, H  y4 K9 R, X/ F  p
'+ Q* x0 ]9 ?0 G9 d# p  P
' The OpenComponents() parameter1 A1 L% B9 s2 e2 M4 X/ h6 u
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
( i% J6 g$ t4 N- H1 `5 V0 {' only opens unloaded components fully (see also PR-8406345)
5 G- p1 ]& ?& n0 v' Workaround: collect and open all components individually
2 t$ \% D; ]: [6 c  l2 v- _* q! r1 a'
1 H( j# o- \2 c+ l0 y, [Module NXJournal
; ~3 X# O% e& G9 b( B0 @8 `& q    Dim theSession As Session = Session.GetSession()
; w* ]3 x( N6 ?/ P    Dim theUFSession As UFSession = UFSession.GetUFSession()
" W3 _$ M/ I( o  f8 |    Dim dispPart As Part = theSession.Parts.Display0 O: d3 d$ M' Y8 C

* [3 d# V2 d& W    Sub DoIt()& W( L0 s6 E8 r/ u& I
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
; \4 Y. k! E' c& T3 n, G        Echo("Number of Components: " & allComps.Length.ToString)
! L0 ], U( q+ V0 d6 j        For ii As Integer = 0 To allComps.Length - 1
, p( R' \- M0 i: t" B0 O            Echo(allComps(ii).DisplayName)/ _7 ^0 y1 B5 B  B
        Next
8 E# C% S4 B) @" B1 i" t: L( q
- L% R. |% E+ a- X        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
6 p0 h4 w* V. D* Q! m3 _, H        theSession.Parts.LoadOptions.UsePartialLoading = False
& c' n1 Q2 o& X" [( M* ]& q# X: Y* D& T  I" P" g/ Y
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
% [# `) ^  \+ y# @1 Y0 H) m        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
3 d% p5 {1 Q8 U  Y0 @" [        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(. Y; [1 f* ~' D) E1 \. R" N) V
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)% B6 x$ q7 ~/ @! K' R
2 `, a4 _3 u& g& C3 n
        reportPartLoadStatus(partLoadStatus1)" c" z' J) \9 @/ m; \+ q
        partLoadStatus1.Dispose()
  l* O5 |- P- s" ~+ O  M, C
+ O: H8 {, T% X; _5 U: v$ z1 U        theSession.Parts.LoadOptions.UsePartialLoading = option1
7 f# j9 t" M' o! f  k" D6 M6 f0 ?3 B! h( B
    End Sub
% x0 L  G: d2 Q/ t
1 U2 X, C' D9 o7 o. q  i    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()6 T3 t( U  @  w8 n" H  Y
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList9 K; u/ V4 F; U! E/ K+ W/ c+ C
        Dim aChildTag As Tag = Tag.Null. Z4 |% i8 e) N, q: g( s' @

" G: k& g8 ?* o6 T( R$ E! I        Do
2 @9 D; ?& n' G( j/ w7 {            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
' G+ x6 ?( z% J7 u3 ~/ E            If (aChildTag = Tag.Null) Then Exit Do
4 M4 R2 l$ F* `+ f5 Q1 x" h& o' C+ V
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
; @' s) Z; B' r' Q/ g            theChildren.Add(aChild)
; i! [' P2 N( O: P! b7 E/ t        Loop+ U8 i. q  H5 s" g. Y2 B% A
        Return theChildren.ToArray(GetType(Assemblies.Component))+ C" v0 q/ F7 I( y

6 J0 f" `' E* x: s" Q    End Function2 T* t; O" e4 c3 a
4 K7 N+ q/ C4 g$ b( @5 C% @
    Public Sub Main(ByVal args As String())
( S( W9 p4 N1 L& d8 ?& l+ q        If dispPart IsNot Nothing Then. F) N2 U4 A. ^. X3 d) ^( h) ^
            DoIt()
: ]2 z) c* Q9 }6 P( k7 d% Y            Return- @8 r: X* s: H
        End If1 D! s7 N* d& H9 m; m8 y# ^( V

, |7 T. ^9 y0 b/ B0 t* J. c" H; v    End Sub
. J. D9 j# o1 [
* m2 D; J. g- b  k  K2 }8 {/ q    Sub Echo(ByVal output As String)- \" P; @$ D4 d% e8 X
        theSession.ListingWindow.Open()9 T; y' y! }3 J0 f" ?% e4 d
        theSession.ListingWindow.WriteLine(output)
6 r: G" B; y, G- {        theSession.LogFile.WriteLine(output)* H7 ]2 a0 i  [9 T
    End Sub  v, ~4 F# m, |8 a

  u% I2 H4 \( b8 u; ~    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
  v; S$ M8 ^2 P- ^        If load_status.NumberUnloadedParts = 0 Then
+ A, t" [% N. S8 w' g1 f6 ~            Return
2 J4 K* ]; B$ U3 I' g        End If) A8 E! s1 q2 U- \+ \
3 t. u- T' i* L8 [  ?- e( B
        Echo("  Load notes:"). o% f8 k) l; o! u, {
0 F, L, m1 y" s. y" w
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
) @2 e0 P0 ~# b            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
* _: O6 O3 `6 J0 Y, \# W        Next
2 ?* U- Z5 o2 g    End Sub
4 C6 P7 `% p# G& r% r+ w+ m5 y. a
    Public Function GetUnloadOption(ByVal arg As String) As Integer2 l6 u( B. a9 A+ a, y: q; I, J' D  h
        Return Session.LibraryUnloadOption.Immediately0 F' p6 E/ f4 x9 [: z
    End Function
2 p7 e( J' E( |& _6 e2 x, P
; d: ~9 A8 T# r) Y2 YEnd Module[/mw_shl_code]! Y1 n8 v( e" t2 R( j& {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了