QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4240|回复: 7
收起左侧

[分享] 按设计树顺序遍历装配体

[复制链接]
发表于 2020-4-10 21:33:49 | 显示全部楼层 |阅读模式 来自: 中国江苏苏州
安装
主题分类用于问题归类:

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 秋韵舞-江枫 于 2020-4-11 23:31 编辑 2 z1 r3 B# l4 \& K; Y
) N9 ?1 S0 \9 K% F( U; k1 `9 y( {5 N0 ^
     完整按设计树顺序遍历装配体代码,此代码为VB.NET编写。可以在此代码中添加功能代码后可实现特定功能。/ M. [& o3 y& O; q
8 J. k  e* s2 q( J$ @0 |
  1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    * Z4 v1 l  X3 T: C
  2.         Dim swApp As SldWorks
    ! i& C6 v9 @% R) a6 b8 D7 ]  q
  3.         Dim swModel As ModelDoc2$ Z8 y0 n& J( q. p" v' A
  4.         Dim swPrOPMgrs As CustomPropertyManager
    - F* g( l, K, `* v2 I9 i& q; Q
  5.         Dim swConMgrs As ConfigurationManager9 G! o. J* \! Y
  6.         Dim swConfigs As Configuration7 O7 c" D/ o# `9 c
  7.         Dim swGetType As String/ N. U: U3 K! L
  8.         Dim swFeat As Feature
    ) W% U/ [) B7 l
  9.         Dim swChild As String
    ! O5 }' R9 X" ^& T- y
  10.         RichTextBox1.Text = ""
    ; w7 M4 u1 M$ |, E7 z
  11.         swApp = GetObject(, "SldWorks.Application")" |8 n* W" Z% W) {7 l% ^
  12.         If swApp Is Nothing Then. Q0 }; s6 t( a6 x. k* w
  13.             MsgBox("请您在运行本程序前先运行SOLIDWORKS!")
    ' z# q, E2 a$ Q
  14.             Exit Sub
    - i  s4 V; w, y, W
  15.         End If5 O! c) L$ y7 m4 n, x' y- `
  16.         swModel = swApp.ActiveDoc* U3 W+ m% m/ M) d  N
  17.         If swModel Is Nothing Then% F+ g. \! c1 p* I
  18.             MsgBox("请您打开模型后再运行!")* p7 Q; k1 `. ~! ?
  19.             Exit Sub
    9 ~9 Q$ e  x0 ~/ ^
  20.         End If
    * |/ O4 B/ ?. Y9 d
  21.         If swModel.GetType <> 2 Then
    " G! b. d5 q% }: X$ \
  22.             MsgBox("请您打开装配模型后再运行!")3 p; t1 C% }0 T( T( X
  23.             Exit Sub) O/ Y) `+ ~& W5 m& V
  24.         End If
    8 _4 i1 \) J: A
  25.         swConMgrs = swModel.ConfigurationManager '获取配置管理器
    0 i7 @' k2 @( _8 P" H! D
  26.         swConfigs = swConMgrs.ActiveConfiguration '获取活动配置* p7 i0 ?9 ^! o
  27.         swChild = swConfigs.Name '获取活动配置名3 S2 j( T- K6 y$ v! h
  28.         swPropMgrs = swModel.Extension.CustomPropertyManager("") '获得自定义属性7 L( D$ R6 q, X/ ?+ f
  29.         'swPropMgrs = swModel.Extension.CustomPropertyManager(swChild) '获得配置特定属性
    ' D# J9 d1 w& @4 L
  30.         swGetType = swModel.GetPathName '获取此文档的完整路径名,包括文件名
    & ]; c/ }/ a7 z: q' h+ J
  31.         RichTextBox1.Text &= swGetType & vbNewLine- L+ F: y: t9 h8 [$ }
  32.         swFeat = swModel.FirstFeature5 p; o( E5 i+ N0 n) b7 z
  33.         While IsNothing(swFeat) = False3 z  ?6 l' c* E6 v& i# ~
  34.             Select Case swFeat.GetTypeName2
    % d  `* h$ w* V( U: L1 N
  35.                 Case "Reference", "ReferencePattern" '排除镜像及阵列模型
    ; i7 O* P; j0 X
  36.                     Throughs(swModel, swFeat.Name)5 A9 v! {/ L/ C+ J/ d5 _
  37.             End Select  W. R( @& V" S4 t9 z- D, w
  38.             swFeat = swFeat.GetNextFeature/ i" r8 B/ i; Z) [5 Q/ E
  39.         End While' R9 g5 W2 i' H. o0 ?8 q! n$ V9 j
  40.     End Sub6 V; D6 E1 u/ |: x# m
  41.     Private Sub Throughs(ByVal swModels As ModelDoc2, ByVal swPartName As String)
    4 W( U+ u) ]5 t& A4 Y/ w
  42.         Dim swComponent As Component2  P: k; {! ]6 J. T4 F9 J
  43.         Dim swildMode As ModelDoc2) e+ F6 @$ c2 `" ]2 ^. F/ s
  44.         Dim swPropMgr As CustomPropertyManager
    4 A& x8 N5 }7 w; {% ~
  45.         Dim swGetTypes As String
    " ]2 A  _. r  B# g
  46.         Dim swFeature As Feature
    1 _/ I! n9 _/ F' A4 W
  47.         Dim swChild As String  c% N0 `# ?/ T! m2 e
  48.         swComponent = swModels.GetComponentByName(swPartName) '获取指定的顶级程序集组件- D: G, K) g4 N! E) d. h- i0 M& o. R5 Z
  49.         swChild = swComponent.ReferencedConfiguration( G' m% b" F% e9 p7 C6 j
  50.         If swComponent.IsSuppressed = False AndAlso swComponent.ExcludeFromBOM = False AndAlso swComponent.IsEnvelope = False Then '排除是否被压缩、不包括在材料明细表中或封套的模型
    . _+ s5 i6 X9 i& \
  51.             swildMode = swComponent.GetModelDoc2 '获取此组件的模型文档' Y& u& j, o& z) c9 a* k7 \0 Q
  52.             swGetTypes = swildMode.GetPathName '获取此文档的完整路径名,包括文件名! l& s, V8 g# ], J: H- q0 a5 l
  53.             RichTextBox1.Text &= swGetTypes & vbNewLine
    1 V/ I  Y8 z# R! A  M
  54.             swPropMgr = swildMode.Extension.CustomPropertyManager("") '获得自定义属性
    + F% Q2 A3 I: f5 K3 m* A6 ]( f, \
  55.             'swPropMgr = swildMode.Extension.CustomPropertyManager(swChild) '获得配置特定属性7 _! Y& L6 j3 c
  56. / k' x: j' h! `' x. Z1 E
  57.             '..............) T, R# V9 z, U' \8 [
  58.             '..............
    3 ^' K! A1 m3 V$ q: B' ~* M
  59.             '..............
    % a7 N" D2 o$ ?
  60.             '..............添加你要处理的代码; G6 e: D$ b! M1 L' ?# p
  61. 1 Q: \" C+ p) M
  62. 9 s' t2 y, T  F/ c7 q
  63.             If swildMode.GetType = 2 Then '获取文档类型,是否是装配文件0 c! b5 L8 c5 S+ o6 t; e
  64.                 swFeature = swildMode.FirstFeature '获取此组件中的第一个模型
    0 K5 e- W" \4 P
  65.                 Do While Not swFeature Is Nothing '如果模型存在, 模型循环此模型! p1 b& i2 T9 W8 s
  66.                     Select Case swFeature.GetTypeName2
    # R& V' e; v; B8 {" ~3 X
  67.                         Case "Reference", "ReferencePattern"
    # [' ^- m. Q* D2 D
  68.                             Throughs(swildMode, swFeature.Name)8 P  |3 Z+ N& }6 N  N, w9 _
  69.                     End Select
      Z7 c: o6 T; X4 M1 r
  70.                     swFeature = swFeature.GetNextFeature
    1 X3 P" m" a1 u: y
  71.                 Loop& }$ [9 l  E$ `; W, @! l
  72.             End If* O% P" j. O8 Q
  73.         End If; X7 U& @* o7 X6 N1 ~& Y0 u
  74.     End Sub
复制代码
6 i. V, [% `; B8 u: x

评分

参与人数 1三维币 +10 收起 理由
阿帕奇 + 10

查看全部评分

发表于 2020-4-11 07:50:30 | 显示全部楼层 来自: 中国山东威海
本帖最后由 che-zp 于 2020-4-11 07:53 编辑
0 T! Z2 G% l& @/ h! ]. G3 h8 O4 I( M# |9 ?
遍历设计树 解压错误
 楼主| 发表于 2020-4-11 08:21:36 | 显示全部楼层 来自: 中国江苏苏州
应该是论坛的问题,我上传的时候提示如下图,后来我自己也下载解压一下,确实有问题。, C" @0 d1 {( I, P" e; u7 U
QQ截图20200411081657.png 1 q5 ^* I; [, E7 |- D, b+ @. K1 R
; o/ ^' [$ f  @6 l' k1 L" N- J; t

7 N. @7 Z& X) @1 d$ N3 L$ |
: `& {  \" T" {( u( E; L( N6 n  S; e( |; O

' G* Z; X" m+ c/ \9 ?
QQ截图20200411081657.png
发表于 2020-4-11 08:28:30 | 显示全部楼层 来自: 中国山东济南
学习一下,感谢楼主的分享。
发表于 2020-4-11 22:17:07 | 显示全部楼层 来自: 中国广东揭阳
感谢楼主的分享,学习一下。
发表于 2020-4-22 12:00:20 | 显示全部楼层 来自: 中国重庆
本帖最后由 努力到无能为力 于 2020-4-22 12:01 编辑 3 Y6 q% t# }  Z5 b  K# P

. C; X2 h- e* w' r没有明白啥是”遍历装配体“的意思,怎么用的。但感觉好高大上!7 k$ Z! I2 |0 e3 e
发表于 2020-4-26 17:38:34 | 显示全部楼层 来自: 中国广西桂林
谢谢楼主!膜拜
发表于 2020-7-25 18:40:02 | 显示全部楼层 来自: 中国江苏常州
谢谢楼主分享
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表