PLM之家PLMHome-国产软件践行者

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

[复制链接]

2019-4-12 09:06:31 2200 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
: @  A" V/ y2 Z# ]Imports NXOpen  G; F' z4 {$ j" H4 z
Imports NXOpen.UF- G5 c, e/ Y) U
Imports NXOpen.Utilities
& C' N; ?6 ~3 C# O'
' \( h) q. p; c! N$ g& w# q3 J$ \. n8 B' The OpenComponents() parameter0 `5 i7 ?2 M" ?: H
' NXOpen.Assemblies.ComponentAssembly.OpenOption.WholeAssembly) ]) N* u' G. e. \% Y; ?4 H
' only opens unloaded components fully (see also PR-8406345)7 w6 O( K* g5 v6 C- i, y
' Workaround: collect and open all components individually
* ]/ I/ f% H/ z4 S'
) t( I" ^- e$ @/ B0 Z  H2 @% x* yModule NXJournal! _" b# h$ {0 \" G
    Dim theSession As Session = Session.GetSession()
1 c& Q. w: _* T& |: ]1 h0 o; \    Dim theUFSession As UFSession = UFSession.GetUFSession()
5 ?( r2 g  u% n    Dim dispPart As Part = theSession.Parts.Display
* `* A1 S6 }# f" @  E5 g4 |; w" g6 K$ S" H; b0 b* f
    Sub DoIt()! E) {, h( |# [# Y- P( R, V+ j
        Dim allComps() As Assemblies.Component = getAllChildren(dispPart)  B/ L; V. y; Q3 E
        Echo("Number of Components: " & allComps.Length.ToString)9 q2 m  M* Q" U" N- ?5 ]
        For ii As Integer = 0 To allComps.Length - 1
. ]) v/ ~4 c8 u: y            Echo(allComps(ii).DisplayName)( Z) q. i$ ]& Q
        Next
: B  T2 q0 i( o  c; r
2 f( L6 u. a6 }        Dim option1 As Boolean = theSession.Parts.LoadOptions.UsePartialLoading# d" i: X. D+ L$ Y/ E  Y' c
        theSession.Parts.LoadOptions.UsePartialLoading = False% v. d5 b+ a) u! e- q( ~; {0 Z4 V

2 ~* ^7 c7 C# @8 l        Dim openStatus1() As NXOpen.Assemblies.ComponentAssembly.OpenComponentStatus
, c& ~) D0 M% y( y( Y7 M        Dim partLoadStatus1 As NXOpen.PartLoadStatus = Nothing. U/ W4 Y! R. K( E5 U/ G2 Z
        partLoadStatus1 = dispPart.ComponentAssembly.OpenComponents(
& m* u* E3 }. m8 S            NXOpen.Assemblies.ComponentAssembly.OpenOption.ComponentOnly, allComps, openStatus1)+ ~' e8 S0 a0 y

7 _& l  @1 p: M. G' k+ ?, {        reportPartLoadStatus(partLoadStatus1)! B) Z0 C4 k2 d; Z" S5 H$ M
        partLoadStatus1.Dispose()
  D7 J: u+ S  F; Q# D- p( ?6 y# F% S" n% m  X
        theSession.Parts.LoadOptions.UsePartialLoading = option18 X7 V4 t9 u9 \, r/ V: w
- M2 b/ N) W: k6 D6 G. L* B
    End Sub
5 x; A  t" F5 {% x
  l% V9 }: _, J    Function getAllChildren(ByVal assy As BasePart) As Assemblies.Component()/ Y+ d' @% P1 x. b3 ^
        Dim theChildren As Collections.ArrayList = New Collections.ArrayList
% f# [. |2 \# H        Dim aChildTag As Tag = Tag.Null
4 O  [* C" a. E- i4 l
1 }% Y. I" R4 s2 m8 b: |2 S        Do/ n" @& s/ z; d% R6 k) ^* V1 w: d
            theUFSession.Obj.CycleObjsInPart(assy.Tag, UFConstants.UF_component_type, aChildTag). Q% m0 |+ y. w
            If (aChildTag = Tag.Null) Then Exit Do
4 Z' w+ j) ]/ {5 L, L- w* ?- t5 V; t% ]6 [! @3 [4 G% o
            Dim aChild As Assemblies.Component = NXObjectManager.Get(aChildTag). ?9 z* U# G6 U' `5 x5 C8 J
            theChildren.Add(aChild), I- x; Q$ c5 n: f- I
        Loop; c4 C1 i  o5 w* p
        Return theChildren.ToArray(GetType(Assemblies.Component))! D* i" t" z0 t2 U  F

: r9 X) [7 M* P5 |+ f    End Function: y) a! v4 ^% Z; S: q
' w( |% U/ {* |) Z* K
    Public Sub Main(ByVal args As String())9 [% b4 D% K% t( ~. W$ W1 L# p! o
        If dispPart IsNot Nothing Then1 [; ?9 [, P5 L. e% N% U
            DoIt()
: k7 m6 e5 N1 y9 q            Return+ S! _' }& C1 E. x1 J# v
        End If
8 i4 U. T6 ~' y8 f- H4 w- B9 Q* X3 F
: I- ~0 C  W& B- Z/ @    End Sub
- G2 r/ o+ k4 c4 V& Q8 J6 O: g! O( n+ i" s( ~9 [, o$ {
    Sub Echo(ByVal output As String)
8 ?* a9 i) V" J" @        theSession.ListingWindow.Open()
$ }4 p& t& R2 A& ]1 S3 J        theSession.ListingWindow.WriteLine(output)' r2 b- ~  g8 j0 d
        theSession.LogFile.WriteLine(output)' Z; h) Q3 S! _) n1 g
    End Sub$ z# E; k+ E! _: Y: N- ]1 _$ [$ J

/ d9 x% x- T" r    Sub reportPartLoadStatus(ByVal load_status As PartLoadStatus)% v% o. \/ f9 |( u' h) {+ Z
        If load_status.NumberUnloadedParts = 0 Then
8 B  i& [! n0 X: L6 a8 F            Return
4 ~" [+ w& a' x8 P        End If
- @0 p9 [1 d7 z  ]5 h: s) x! P% e5 ~) g# K) M) I
        Echo("  Load notes:")5 u5 U6 G9 C. P9 Z  M
. m  q0 I7 l& W$ Y% H
        For ii As Integer = 0 To load_status.NumberUnloadedParts - 17 ?; e/ u; H$ t  G& f
            Echo("  " & load_status.GetPartName(ii) & " - " & load_status.GetStatusDescription(ii))1 V  k) G% e5 K* v8 e% t7 W2 r
        Next
7 j" v5 h6 a. R    End Sub. w+ m, y! O8 Y

$ M2 S$ Y+ w+ A    Public Function GetUnloadOption(ByVal arg As String) As Integer
" `' i6 D4 ?" z$ b+ q, ?        Return Session.LibraryUnloadOption.Immediately
# I3 W+ l# p% g  P' v    End Function- T( l& \; _0 y5 c# b3 X( P* \
( V7 z: V& {1 D5 K% o2 K
End Module[/mw_shl_code]
! o# m- }2 A7 |5 F/ `& K  I+ z) t7 t" D
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了