QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 秋韵舞-江枫 于 2020-4-11 23:31 编辑
9 a3 h3 r; z3 R3 D- p' O
4 P! V, D6 O# ]; ^/ l0 a$ M$ ^. \$ Z     完整按设计树顺序遍历装配体代码,此代码为VB.NET编写。可以在此代码中添加功能代码后可实现特定功能。
; ^' F+ s  G5 b
0 k) f  Z7 E8 i; u1 \+ z, J3 l- h6 K0 B
  1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    0 v1 _" P, D+ G/ b
  2.         Dim swApp As SldWorks
    2 C; D# o; T1 ~# C
  3.         Dim swModel As ModelDoc2: I: n) s  W: K" w3 K6 k. N( f4 y
  4.         Dim swPrOPMgrs As CustomPropertyManager
    - d% Y! g/ H7 ]) D
  5.         Dim swConMgrs As ConfigurationManager: Z4 D' v) N, K3 b
  6.         Dim swConfigs As Configuration
    $ h/ @2 S1 F- `! `& [
  7.         Dim swGetType As String
    3 L) o& E0 g2 E  O8 Y# g
  8.         Dim swFeat As Feature- d3 E' `% `8 I! s, F  \
  9.         Dim swChild As String
    : G( K" Z, X7 B9 p5 {
  10.         RichTextBox1.Text = "": S6 ~" z& V6 a  J
  11.         swApp = GetObject(, "SldWorks.Application")7 Y9 W' |! v. l# Q( w
  12.         If swApp Is Nothing Then
    & W# r4 c! O7 l9 C; Y1 y
  13.             MsgBox("请您在运行本程序前先运行SOLIDWORKS!")! l+ c* n% X  V% ^: x
  14.             Exit Sub! O3 Q" {& x$ P1 l
  15.         End If
    0 R# d% l% K7 X. {& N! r8 R
  16.         swModel = swApp.ActiveDoc
    0 Q9 Z  t0 g! {
  17.         If swModel Is Nothing Then9 Z' \8 E8 q3 f* e! Y
  18.             MsgBox("请您打开模型后再运行!")1 C- r: j! S2 ?- L' Y. w4 n
  19.             Exit Sub( h/ p1 k6 F  t
  20.         End If
    " p9 @/ A$ f0 }4 f. L" v
  21.         If swModel.GetType <> 2 Then
    5 [' L: k8 p0 q/ S* `3 f( z5 M/ `
  22.             MsgBox("请您打开装配模型后再运行!")
    $ e" O2 U* n2 i8 {: e$ W
  23.             Exit Sub
    3 z+ f4 ~1 I# `) |: |6 ]
  24.         End If
    ! c3 H6 H; ]; j8 s
  25.         swConMgrs = swModel.ConfigurationManager '获取配置管理器
    % f  E7 v  V1 t6 O' \/ O
  26.         swConfigs = swConMgrs.ActiveConfiguration '获取活动配置# U1 E9 k, p" L& K7 w; L2 E
  27.         swChild = swConfigs.Name '获取活动配置名: s) C' d/ r' x
  28.         swPropMgrs = swModel.Extension.CustomPropertyManager("") '获得自定义属性
    7 X4 r6 U( `$ I  R7 n2 ^( k
  29.         'swPropMgrs = swModel.Extension.CustomPropertyManager(swChild) '获得配置特定属性7 ]# U" j5 C% c& v+ B  c
  30.         swGetType = swModel.GetPathName '获取此文档的完整路径名,包括文件名  Y( i: O# [# I1 f7 F- q+ c  G
  31.         RichTextBox1.Text &= swGetType & vbNewLine# ~6 N/ s/ T! q6 H5 \9 i/ ]1 N
  32.         swFeat = swModel.FirstFeature2 A* H" C+ |. F# s8 j0 t% m8 k
  33.         While IsNothing(swFeat) = False
    # G1 `7 j" z; D) K
  34.             Select Case swFeat.GetTypeName2
    " }1 h  Q9 r, V3 D
  35.                 Case "Reference", "ReferencePattern" '排除镜像及阵列模型3 v8 K' R+ ^& n. {
  36.                     Throughs(swModel, swFeat.Name), D2 u2 f; ^* b
  37.             End Select
    + F0 G) p5 r' U: \# V3 D: c7 y* ^
  38.             swFeat = swFeat.GetNextFeature
    " O; }: ?3 y- k4 \% x
  39.         End While6 G$ a3 x  R$ Z: c5 B
  40.     End Sub
    0 k# c4 m! t* K2 K
  41.     Private Sub Throughs(ByVal swModels As ModelDoc2, ByVal swPartName As String)
    , E; X0 U8 ~( [- D- ~
  42.         Dim swComponent As Component2) n+ ?' G, B) c
  43.         Dim swildMode As ModelDoc2
    ; A( ?6 v8 ~6 Q
  44.         Dim swPropMgr As CustomPropertyManager7 c3 k  @6 W, X* X& a
  45.         Dim swGetTypes As String
    + j2 f0 M/ c- G5 D: t  `2 ^) V0 a; Q
  46.         Dim swFeature As Feature/ y: j& J; S$ c0 x- o
  47.         Dim swChild As String
    4 _& R% j3 `/ P8 s) y
  48.         swComponent = swModels.GetComponentByName(swPartName) '获取指定的顶级程序集组件
    9 A* k; n, X7 l: x* D
  49.         swChild = swComponent.ReferencedConfiguration
    ) @$ `, k9 M& u/ R3 S; x
  50.         If swComponent.IsSuppressed = False AndAlso swComponent.ExcludeFromBOM = False AndAlso swComponent.IsEnvelope = False Then '排除是否被压缩、不包括在材料明细表中或封套的模型
    : X9 ^! f8 @% v) P8 c  r$ l3 ^
  51.             swildMode = swComponent.GetModelDoc2 '获取此组件的模型文档
    0 y) r$ }: i. I) T9 s9 J
  52.             swGetTypes = swildMode.GetPathName '获取此文档的完整路径名,包括文件名1 ^4 w9 F( V/ }6 a  k
  53.             RichTextBox1.Text &= swGetTypes & vbNewLine
    . V8 z" z( r3 c/ y  p7 i
  54.             swPropMgr = swildMode.Extension.CustomPropertyManager("") '获得自定义属性
    . @( g7 f% d& _7 e& ]9 }3 }- ~
  55.             'swPropMgr = swildMode.Extension.CustomPropertyManager(swChild) '获得配置特定属性
    1 h, ?% `, i" T) c4 {, B7 |

  56. 0 o9 n8 I1 l7 k. e8 A
  57.             '..............
    , ~; Y  g9 O0 `# J& q5 f
  58.             '..............- m  r8 [" J: x5 c, `8 \
  59.             '............... o: c, P8 R: r; G/ Y5 w
  60.             '..............添加你要处理的代码
    3 {; S$ L' `- y5 ]# s
  61. # T5 M8 {6 U/ f, V3 K7 b. Y" o

  62. ; y. i/ q4 v# y
  63.             If swildMode.GetType = 2 Then '获取文档类型,是否是装配文件
    ; {- z% f" k6 g) y% e7 c
  64.                 swFeature = swildMode.FirstFeature '获取此组件中的第一个模型7 `# e0 n) t" ^& X5 @2 c
  65.                 Do While Not swFeature Is Nothing '如果模型存在, 模型循环此模型
    : `& M( a& E, s' s+ m
  66.                     Select Case swFeature.GetTypeName2
    + z+ C9 m/ `# A8 m' _; z8 R3 \9 Q
  67.                         Case "Reference", "ReferencePattern"0 N9 }/ G8 R  C) [- R4 I
  68.                             Throughs(swildMode, swFeature.Name)
    * E! e* Q, J. u  r+ g
  69.                     End Select
    % A9 w9 h+ S/ k+ i' {- d% ~( q- ?9 \
  70.                     swFeature = swFeature.GetNextFeature
    4 z8 c# J& \8 t" q* F
  71.                 Loop
    % _7 }2 n! I1 r/ K
  72.             End If
    / {: n* n+ }1 ^
  73.         End If
    , H- n) b  h% ~; b
  74.     End Sub
复制代码
! l" E! |2 Z" O2 A  R

评分

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

查看全部评分

发表于 2020-4-11 07:50:30 | 显示全部楼层 来自: 中国山东威海
本帖最后由 che-zp 于 2020-4-11 07:53 编辑 7 |7 {# ~2 \- ^1 Y; ]5 [
/ s3 ?( ?% d+ d3 m3 F' j
遍历设计树 解压错误
 楼主| 发表于 2020-4-11 08:21:36 | 显示全部楼层 来自: 中国江苏苏州
应该是论坛的问题,我上传的时候提示如下图,后来我自己也下载解压一下,确实有问题。
$ r9 c. M3 m) ~5 ]1 v7 J0 r2 w$ \8 i. f QQ截图20200411081657.png   \$ K' K& \/ o* F7 K$ N( L

' s# Q) {' V# q. d# p" i
4 \& j; B% M+ G0 y5 L
% z/ s+ |' m6 }
: X+ {- y( ~% k; K: l$ _0 U
1 n3 G4 M: w$ h/ r% L
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 编辑
5 x& e9 b6 `* q. V3 X. a
- |$ U- i' a; X+ x7 G6 R没有明白啥是”遍历装配体“的意思,怎么用的。但感觉好高大上!
( v  ~. s& {' [/ F
发表于 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 )

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