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 2093 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" Y( m0 C; N
Imports NXOpen( r$ I3 [1 j7 V! {9 n2 e) A
Imports NXOpen.UF
- P& F4 I- ^2 qImports NXOpen.Utilities
" ?1 N# U5 ^$ p$ p4 ^7 r- p7 g'
( @5 S( l) P' @: F, {' The OpenComponents() parameter
3 g7 e8 j; V4 U# L6 R' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly' U- P: A# C& _* g
' only opens unloaded components fully (see also PR-8406345)* x7 U1 E: ~& c, z
' Workaround: collect and open all components individually
% o; O0 H% z' w: _( ^2 ?  p1 g'+ l& A; x  q4 v" o! W! d
Module NXJournal4 J& ~4 A/ r1 X9 g  D$ [
    Dim theSession As Session = Session.GetSession()
& ~9 I' C3 m: j6 o0 W# {    Dim theUFSession As UFSession = UFSession.GetUFSession()
" J( F9 O& _, i% b. L    Dim dispPart As Part = theSession.Parts.Display! X7 j/ L! s. N3 W; `, N; B
1 |. `' c/ Q/ a$ e. k
    Sub DoIt()8 `$ D8 D/ A1 [2 n* `- b9 t
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)7 _  v5 O% O' A2 A7 p- {
        Echo("Number of Components: " & allComps.Length.ToString)
3 n* u9 \# |4 R6 L9 c        For ii As Integer = 0 To allComps.Length - 1
5 t( _/ V- q* q( U* w* u; n' B            Echo(allComps(ii).DisplayName)" ?, J! n. t1 X7 K. x
        Next5 V5 V6 o3 I" G9 H# U# J

; p0 |7 o6 a" [        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading. Z+ M* m9 D, m7 I/ N( C& V
        theSession.Parts.LoadOptions.UsePartialLoading = False
% n3 x% T1 d) g$ A% w5 b8 |5 r$ }9 N, b/ B" R7 d; f% I# E. T: P
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus: T! B$ p1 W* V, l  z' Z# v% y
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
: i; ]: {: S0 {3 p; w' ^' `        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
3 |3 }1 Q- ?7 ]5 u! E2 K" k- {            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)) L" a. G. \3 j- Y# _! d

  X0 E2 S3 {: D' e3 C        reportPartLoadStatus(partLoadStatus1)
- X0 b$ W2 U  V$ p5 B, {' X        partLoadStatus1.Dispose()4 m5 U1 ]. o% P2 O
1 E7 E, G5 v# Q" t) j5 w
        theSession.Parts.LoadOptions.UsePartialLoading = option19 T6 _/ m6 x- G4 [) s6 g. u$ R& O

3 h9 i5 j1 ^& o! K8 I: L    End Sub" L( L8 H( x7 Z

, g' M. q9 f9 l    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()6 N- p$ ^6 y$ S, m' o; \
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList& \6 T, [: U2 ]1 |  A3 x& ~) ?
        Dim aChildTag As Tag = Tag.Null
, B: U  Y1 ^2 S& ^0 P& \* G) u% z9 _+ k( H
        Do( M! ~( C' K8 a9 Y. W: [1 t. s
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
3 m6 ]0 e& }2 ^, {$ b* e8 o            If (aChildTag = Tag.Null) Then Exit Do
6 j( F4 e- H' ~5 l* A; b, L& N( C! W, B8 `! J+ ^5 m  s
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)5 r2 t8 _9 \. x' V1 S1 w0 Q
            theChildren.Add(aChild)' D2 E% B) l# e7 @% v0 B6 X$ x% ?
        Loop( @. h5 \$ V3 H+ _. O2 \
        Return theChildren.ToArray(GetType(Assemblies.Component))
6 G; F& }# W$ {7 p8 Q
0 Z) y0 Y2 X& F5 i    End Function" ^  A" V3 H+ F% k+ N, j! q
% a* c# W" p# I; d4 t
    Public Sub Main(ByVal args As String())4 @, a; @. l2 G& ?
        If dispPart IsNot Nothing Then6 k( E: W, B+ n* ~& h5 e
            DoIt()3 @2 g- j6 K* l
            Return, N, @) k! u1 Q( f0 A7 O6 _; Z; z9 ^
        End If# x5 ^# n' `& V% I; U

+ v: C, \  S: @! O3 `) E& b    End Sub" G$ d( O  t% p7 h' @. ?

3 g" {( x0 K( V7 G    Sub Echo(ByVal output As String)4 X( w) ^" Q0 }) M; C  n
        theSession.ListingWindow.Open()
6 k; C$ X+ B1 x3 N        theSession.ListingWindow.WriteLine(output)
  M% [( p4 Q1 V+ B6 s1 F        theSession.LogFile.WriteLine(output)8 D8 \- u: \3 ]& O
    End Sub5 _% ~$ I( v  A& |  h7 W
0 Z3 i% l4 b/ q/ R" }
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
/ J$ j: B4 L. ^) s+ @# i" Y2 g- s) f        If load_status.NumberUnloadedParts = 0 Then
1 t/ ~4 N" r' h. o! Q  b: T, e8 `            Return
4 @/ ~. [* R7 h5 O; A, O        End If
: @* t& p9 T5 j, M2 O
6 c+ b7 S+ h" t( J        Echo("  Load notes:")
1 l! S& V  j! m1 g0 ]. K, S* \
' s$ k$ |( `$ ?6 `+ T% e' e/ w% [        For ii As Integer = 0 To load_status.NumberUnloadedParts - 12 M9 C! s' O$ l7 m( m1 R
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))0 A6 u$ n) `5 S5 y& y1 [3 \
        Next
4 j" Z/ E& |* C7 s& ~* h/ A    End Sub
4 ]9 r/ ^1 ]! m0 ]( w) J3 _! Y. \* M$ E' ]" `# z' N* H
    Public Function GetUnloadOption(ByVal arg As String) As Integer! C/ I: x0 i1 O. X4 w- w, u
        Return Session.LibraryUnloadOption.Immediately0 F7 l, ?( s& E0 e! o6 G' |3 J
    End Function* n9 L: h3 Z1 }' `

$ u) q7 }, ]6 U9 ^7 jEnd Module[/mw_shl_code]+ b9 o9 v0 d4 o% ]; B# r+ [& K" P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了