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

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

[复制链接]

2019-4-12 09:06:31 2493 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
! g& Y3 c' s& ~  ?% |5 Y! C* }4 A, ^Imports NXOpen2 J" L+ t0 F8 V3 Q  _
Imports NXOpen.UF
0 p& e, A* L$ L3 r: `* i  O7 CImports NXOpen.Utilities
3 _8 E7 E+ H8 j'* c, a+ O: Z5 K1 u* L/ y
' The OpenComponents() parameter& ?# p$ P% q3 K) Q) V/ ~
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly
. f0 F1 S1 j3 E  w2 |8 S& X' only opens unloaded components fully (see also PR-8406345)7 b$ y; `2 X7 M. e# w
' Workaround: collect and open all components individually7 L6 M& B9 x# z- \' w
'0 Z" X+ ^/ T8 w+ G6 |
Module NXJournal
& T1 ]+ N: ]4 p; z* t- }4 L    Dim theSession As Session = Session.GetSession()) m3 d: V* t7 C
    Dim theUFSession As UFSession = UFSession.GetUFSession()) W0 v) q$ l( A4 l$ t7 D, A) Z& `4 g' [
    Dim dispPart As Part = theSession.Parts.Display
) m6 T5 G5 I; {! Y5 L
3 t1 {$ ~' u) P' {8 ?/ D    Sub DoIt()* Q3 ]+ F7 F( d* Z& z* J, a
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)
6 f. ]2 |6 E$ N: e! g        Echo("Number of Components: " & allComps.Length.ToString)
2 w$ M' J: T5 l        For ii As Integer = 0 To allComps.Length - 1- y! P" d) k9 R" {
            Echo(allComps(ii).DisplayName)
* j0 N" l- m7 W! Z2 v% p        Next
9 F" r+ \1 D6 p9 @& e
" [* C1 m% j" N# u9 }- N        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading
6 w2 L% c8 s2 V+ J$ I        theSession.Parts.LoadOptions.UsePartialLoading = False2 Z6 o8 j4 |; z' n. c- A5 {

  C$ Z/ `) `- {1 m+ j% K' I        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus* T; ?5 A6 g$ U+ ?& k- i& ?
        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing
# _2 B1 [  Q. A        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
( e2 [# i2 q& d8 R  @; m- {            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)# {! W9 j, o! V4 m% j

- b# _  a  `- x- N( t, x* f* K        reportPartLoadStatus(partLoadStatus1)
3 m( P2 C- q9 a' f7 P        partLoadStatus1.Dispose(). K( Q- Q9 F2 G5 V4 i

5 t' \7 g, b( g" e! ^: N7 y: p        theSession.Parts.LoadOptions.UsePartialLoading = option19 e! j+ y4 q  N5 T9 z5 d4 J
5 {* Z0 E. [/ N. a  h
    End Sub* ]8 c$ w: a0 S9 G

6 g* x1 V7 ^% g2 w' i8 m5 f; Z; {    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()
+ p8 ^9 p" K, G9 C# \! h! p- m        Dim theChildren As Collections.ArrayList = New Collections.ArrayList; n: f1 \8 e* R5 w- \7 J
        Dim aChildTag As Tag = Tag.Null  y! B4 G2 P. `6 J9 }

6 }6 j$ p" n% `* E+ B  e9 E$ ~        Do7 C: l3 a3 H4 C5 v, V9 ^9 W
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag)
" U4 ^1 n2 O4 c  r( j  F            If (aChildTag = Tag.Null) Then Exit Do; }! P( X" I+ q, e, m

. r  I+ O! N' F3 T% @  u            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag)
, c  g5 U4 V# @& t0 k2 b4 U* w            theChildren.Add(aChild)
6 ~; e( Q9 ~2 ?  d+ [. A        Loop, N& H) ?. ~/ X& A% K  _+ ^
        Return theChildren.ToArray(GetType(Assemblies.Component))
1 e1 o1 B. L  y/ E( P9 ?! A3 {# D  j" k" T( L4 R/ Q; E
    End Function
4 X8 j: F* L( E6 |9 b
6 N8 d, r9 h( H. |# y9 ]) P  d' i    Public Sub Main(ByVal args As String())
4 k' k' A. p% a! ?6 e  Z        If dispPart IsNot Nothing Then5 Z0 s7 N, k0 l" }% d4 Q
            DoIt()  j, M1 I2 F( A# X% ^3 w4 {
            Return
& m/ L! B6 ?* c  g        End If
( j* |5 O7 p  w& T& T5 y: [. a3 S: u2 z4 Y) l0 ]# o3 g  \
    End Sub7 v2 u2 V0 k6 K
. ~! g2 x. B& ?! \1 [- [
    Sub Echo(ByVal output As String)8 i) ?7 f; L. x4 e' ~
        theSession.ListingWindow.Open()2 j( o) o/ d- ^
        theSession.ListingWindow.WriteLine(output)  ~9 G9 n9 h3 `
        theSession.LogFile.WriteLine(output)) P0 M( U# ]1 z
    End Sub3 Q4 p; ]2 C, w3 E/ h: j8 q/ J
/ X# ~& i3 Q9 V+ s* c9 W  V
    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)
7 h' H$ n8 _; r2 N+ w        If load_status.NumberUnloadedParts = 0 Then
3 R2 D/ L* [3 {8 H) r7 z            Return3 w, |0 Z+ U4 w1 b' n+ G9 ?7 D
        End If8 @6 x- p4 E8 ]* E  |, A

4 S& Y# ]' Y( l. J& ~! m. w' @        Echo("  Load notes:")5 Q5 v6 Z/ s8 U6 `" s

# f6 ?3 O6 f& }5 v        For ii As Integer = 0 To load_status.NumberUnloadedParts - 19 J, w4 z! Z2 B  l4 Y6 F4 o
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))
* A# h& ^! W* H1 a( x9 s        Next
1 o  z' c# H  q/ U    End Sub
& N7 b; h8 `6 j- ~' V5 }7 C+ g+ ^$ B; b: m. o. h9 S. c$ J
    Public Function GetUnloadOption(ByVal arg As String) As Integer& \) X$ K4 D3 |8 Z8 {* B) d
        Return Session.LibraryUnloadOption.Immediately. m( U8 K3 v  a8 y- A; q( u9 C; D
    End Function; I, Y6 o* m) l1 v. v5 K; Q$ c

6 s9 R% ]- x" L: S1 j) s4 R6 c* J3 sEnd Module[/mw_shl_code]
& `7 V4 o' X" K  P8 V9 R' E
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了