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

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

[复制链接]

2019-4-12 09:06:31 2389 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/ Z0 Y3 _" m# o7 m8 F) a
Imports NXOpen% U7 {6 ^9 E8 q1 K6 A/ H5 t
Imports NXOpen.UF
" W; p' h# u* n( Z$ S" {Imports NXOpen.Utilities
  [9 B7 f% J" y) c1 y2 h3 q5 k0 y'
$ @7 T7 [# U" y9 p1 o& h+ K' The OpenComponents() parameter- R% t% f$ v/ b$ e/ b
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
* o! o- u* r% I0 g6 D0 K* z' only opens unloaded components fully (see also PR-8406345)) O4 |3 `) v  b7 `4 t7 c# O
' Workaround: collect and open all components individually' d+ ~$ o' T$ m
'1 s8 P3 h8 q: ^! L
Module NXJournal3 b. c- d6 A) d' p8 \! m
    Dim theSession As Session = Session.GetSession()
* v+ K4 {2 t# O) W  q    Dim theUFSession As UFSession = UFSession.GetUFSession()# {/ H; _5 V4 W' \
    Dim dispPart As Part = theSession.Parts.Display& K3 ~  W. W- k, f1 r' a- e
2 |8 r6 `; G- S" n6 {( H
    Sub DoIt()
, P* ]5 {3 z. Z' v, Y" S7 s        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
2 ]" t/ G* T; d3 Z1 ]  y        Echo("Number of Components: " & allComps.Length.ToString)
% j6 U9 y: w* d; {, x3 C        For ii As Integer = 0 To allComps.Length - 1  T$ Z* k; ]0 X) l
            Echo(allComps(ii).DisplayName)
" T' F6 k3 c. H        Next
9 J; \/ ]/ w: Y/ u' h* o% o; q# b  R# N; n% w* }' V. w7 g+ a
        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading1 k' D" V$ p% G
        theSession.Parts.LoadOptions.UsePartialLoading = False
) T1 M! k; K! d! H8 M1 l7 a+ m) T/ v7 y" ?& W
        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
. l/ h4 u4 O' c5 M        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing% W: R0 @  j$ h: p. R
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
4 s# w6 q0 F9 t            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)
) z  a8 I2 _; E; h9 I/ N: K/ h/ }8 s  `  y- h
        reportPartLoadStatus(partLoadStatus1)1 y5 y4 M3 S+ e8 Q" a/ N; X
        partLoadStatus1.Dispose()
9 A) ?! Q$ ?' f6 x: F5 w+ y7 V
0 x! O$ S: A! @" J% R! m$ V        theSession.Parts.LoadOptions.UsePartialLoading = option16 b. t7 s5 e7 ~5 X

) q7 F& s3 |0 B8 W    End Sub
3 C! R: V5 v* X  b  Q% }, v& b& f9 {6 _
    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
& k: R: n& l6 K% \1 G        Dim theChildren As Collections.ArrayList = New Collections.ArrayList* p2 a; Z* l9 P& M, ?7 q% Y/ S2 E
        Dim aChildTag As Tag = Tag.Null
6 y$ P+ {1 [0 A' _! l- h) b( C
2 Q- g7 f$ P  C) ~" X        Do
# l, ?* @7 a9 f( E  M            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag), C" Q/ v. r1 r( n
            If (aChildTag = Tag.Null) Then Exit Do9 I2 G! w! L" R- [% c/ R( R+ t
+ [; b; Q6 d1 B) B) A
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
) s% b. t/ I# C& @- q            theChildren.Add(aChild)& h; x. K9 Z2 Y, S4 q; i) t
        Loop
; E5 V: v. L! j& \( z& i6 v        Return theChildren.ToArray(GetType(Assemblies.Component))/ ]5 m# i: I( b4 J( B9 ]0 B
0 u- {) b% X; C' |. i% f9 V
    End Function
, U) O$ w8 Y% d- w  U& x0 c3 ^+ a* ^; O9 _# J( u2 G% j
    Public Sub Main(ByVal args As String())( {6 R: q! i: \3 F( o7 A
        If dispPart IsNot Nothing Then& B. K, x+ T2 b- j/ s, L& ^( c8 ^
            DoIt()
, R% N* I+ d3 [* H& n( ]( e/ M            Return& o4 x$ f: k+ ~2 I- {  i' E
        End If; m, e7 C3 v0 _! a9 o
& u& |* R4 E( e) H# ^/ ~
    End Sub
; f. W/ ?9 }9 R, r; [" U7 a
. |9 c# y9 P" Y* p& k4 C    Sub Echo(ByVal output As String)' y2 G% r' q7 }5 r
        theSession.ListingWindow.Open()  h7 J1 @3 F4 Y! }4 ?! p" j
        theSession.ListingWindow.WriteLine(output)
/ \$ J$ K; `; W  {        theSession.LogFile.WriteLine(output)
: G: C6 o( T% }2 `5 X    End Sub
1 U1 C+ P2 l8 P( E' N, R
9 a+ H$ @8 x8 @. q6 y: i4 I5 k. N$ F    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)$ M7 O% t+ S4 H# d: C
        If load_status.NumberUnloadedParts = 0 Then4 a  a- A) Z5 J/ M# P2 f- K2 X$ D
            Return3 [( |3 ^- A4 \- M# Z) j) h  B
        End If
, J1 T0 s& p3 m# p7 T( N
3 a" f$ z3 d6 L2 b        Echo("  Load notes:")
. W5 U$ }8 V: C' d
: ~/ I/ j! \' T' d' F7 u/ s        For ii As Integer = 0 To load_status.NumberUnloadedParts - 12 j/ [' ~2 J3 r8 v3 n+ w
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
+ [6 T8 u7 ~8 x        Next
* O6 D8 |) _& f) h4 s8 _2 n    End Sub8 D# L  Y& f7 m' D; K) j) R

" b4 q# {% q6 O/ r: K: {8 N    Public Function GetUnloadOption(ByVal arg As String) As Integer
' a* ?5 \/ \7 R% k/ ^        Return Session.LibraryUnloadOption.Immediately; h- R/ W: n4 m1 D; d, j
    End Function
( j7 |1 o9 Z, }% e$ z. |% Z9 |* W7 Q7 }+ f. d5 s2 r  \
End Module[/mw_shl_code]9 q- `* u) x5 b# Z! T8 M1 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二次开发专题模块培训报名开始啦

    我知道了