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

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

[复制链接]

2019-4-12 09:06:31 2444 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+ x$ _% }8 A. l
Imports NXOpen8 G& ]* A4 j+ s. d7 i
Imports NXOpen.UF
' A. u( Z* y6 x* S( E: gImports NXOpen.Utilities$ J: T1 b: d) a4 _9 S, ~% o
'
- J$ m" ?0 p. v0 B0 t' The OpenComponents() parameter
6 V- O6 `2 [' Y0 c1 c0 H  C' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
' b7 g( u* {: u6 u% B' N' only opens unloaded components fully (see also PR-8406345)
4 D7 j5 v) y! p$ ]' Workaround: collect and open all components individually
7 e/ |" Q# [4 S; T% B'
( W; ?+ ?. {# P6 J/ w; NModule NXJournal2 {" \% B; V6 x3 b# F
    Dim theSession As Session = Session.GetSession()
4 t' M. X! G. B* t6 j4 y    Dim theUFSession As UFSession = UFSession.GetUFSession()0 m3 g  `& N3 a. Z
    Dim dispPart As Part = theSession.Parts.Display
+ c* Y' U3 k3 e8 T) W4 {! a( f0 w8 Z) x9 T
    Sub DoIt()# B) Y$ E) s3 Y3 L) M0 \$ a
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart), h# U0 E, w" w5 `; f
        Echo("Number of Components: " & allComps.Length.ToString)
1 j. F" M1 \$ ?& s/ c) v8 k6 v        For ii As Integer = 0 To allComps.Length - 17 y3 [8 Q6 n: E
            Echo(allComps(ii).DisplayName)
( q  B- ]8 k* {        Next
0 v6 }# o% E, }+ v3 n4 c
# \8 J! U2 ?3 S7 A2 ~1 W        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
( J9 n! X4 ?( g$ O: `6 N. j        theSession.Parts.LoadOptions.UsePartialLoading = False
/ a- F! Z4 q2 N% r
6 a% ?7 g* u. y8 u  s        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
  \0 v5 n3 K* D7 m* m* g        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing2 V( f) f0 [9 P4 q3 v  E4 h2 v8 Y
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(" ?6 Z, I+ U3 w2 N( }  D
            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)5 P0 I5 S3 J( m0 ^: e7 d# S8 }) \& y
  ?2 W4 ]% Y1 [
        reportPartLoadStatus(partLoadStatus1)
# w4 `. D" P) ^% d        partLoadStatus1.Dispose()( N) Z; [! M  v+ W' Z! g
% |% ^) ~$ f2 \
        theSession.Parts.LoadOptions.UsePartialLoading = option19 j7 m* S$ C, j4 J+ F6 v; n

# G6 P8 ?4 ]% I4 V: O8 J    End Sub: _& \: f0 z/ Z

+ U) F  |  z. Q    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
6 r4 ]( W* C1 |' Y/ K* t        Dim theChildren As Collections.ArrayList = New Collections.ArrayList1 }' z0 H, X* J3 Y% P
        Dim aChildTag As Tag = Tag.Null
! C3 @9 u' b- P3 K: Y' Z1 ]% Y5 K- T0 ]* `* y
        Do0 B; `1 S- W3 L' v1 ]* X
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)+ [0 z$ v. ^! l0 u9 N
            If (aChildTag = Tag.Null) Then Exit Do& }) @' J6 r! Q9 n. a

  |3 N9 \9 ~% n; r' u            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag); f6 Y- V' f% Q( x
            theChildren.Add(aChild)
' {* i' j: F; {) G6 ?. Y  m        Loop$ Z4 Q; W  u# w" z8 w, y  E
        Return theChildren.ToArray(GetType(Assemblies.Component))- h: g8 R" k; n" F6 m
3 {% s; Q% C4 B( ]
    End Function$ e. f' n5 b+ M+ _

8 Z3 j' x3 j8 ]0 }    Public Sub Main(ByVal args As String())! x. t# X' c* h
        If dispPart IsNot Nothing Then6 N  e& c4 _* C; p& o0 G
            DoIt()- K+ S4 C2 y/ [* b+ O3 ?
            Return
( \7 X) t- _, k        End If
1 X7 Q1 @$ Q% U6 d. h2 h  e5 g/ u% k- I! X* E; d
    End Sub
- C7 P8 J) q. O; i* T6 |7 c
9 j0 l0 s" ~2 u" F    Sub Echo(ByVal output As String)8 C7 ^( S8 i& m. m! p- {6 }* S
        theSession.ListingWindow.Open()
5 \+ v8 N8 q& T7 w8 N% p        theSession.ListingWindow.WriteLine(output)
2 s8 G( ?; i# \        theSession.LogFile.WriteLine(output)% M% }+ O& j9 R5 }% a9 W2 {2 b
    End Sub5 U9 ?) K9 D! I

5 I2 @) u3 i( ^, F0 O    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)4 t5 t5 \  @0 E5 X; T
        If load_status.NumberUnloadedParts = 0 Then* @$ Y- H+ j5 r& x
            Return
4 \2 z3 d. {  R: H! A) _        End If( r# \4 p  @7 L9 H' c( E4 ?$ N$ O
/ E8 L0 @  m* H2 q; T- m7 J
        Echo("  Load notes:")( U- ~& W* K# i4 ~
' r% C; h  r! e- a; U4 Q
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 1
. v& z' R  R9 Z" }( u  R# j            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))9 O" c) Z* s) T' M( [5 k4 V
        Next
/ g- i; w3 L, U) }' Y- v" s6 H% P    End Sub0 l! K& ~5 ]/ T4 i6 b$ q( i
( I+ F! |6 p# t$ P! ?
    Public Function GetUnloadOption(ByVal arg As String) As Integer, z6 t( ?$ a; R+ j8 b
        Return Session.LibraryUnloadOption.Immediately) l$ C0 P$ q- o5 O
    End Function
8 h# l  p4 |( U( R0 Y( @- c9 i* R5 T% H$ A% W4 p
End Module[/mw_shl_code]; t) u+ s9 w) n$ ?0 V# V
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了