QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 秋韵舞-江枫 于 2020-4-11 23:31 编辑 & j1 }- A7 m# G3 Z) s( g
4 @( T/ B9 F6 k, o6 p
     完整按设计树顺序遍历装配体代码,此代码为VB.NET编写。可以在此代码中添加功能代码后可实现特定功能。
. @- i! Z5 C# d8 T

; K/ n8 D2 |5 @/ I
  1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6 w0 r7 F" Y4 s$ L$ y" p
  2.         Dim swApp As SldWorks. p) b! N$ X- T3 Q& z
  3.         Dim swModel As ModelDoc2
    . Y) i$ K/ Z' @8 `
  4.         Dim swPrOPMgrs As CustomPropertyManager  b3 C, W3 _. r; p! G- p  ~$ Q" Y3 c
  5.         Dim swConMgrs As ConfigurationManager+ f' `8 F; y0 e8 I
  6.         Dim swConfigs As Configuration
    + M0 ]6 z, ^$ z7 X- a; y
  7.         Dim swGetType As String
    * W$ c: D! d5 a9 e) e
  8.         Dim swFeat As Feature
    + q7 p' k: }6 M. V
  9.         Dim swChild As String
    / f7 o/ \0 n- h* n. i
  10.         RichTextBox1.Text = ""
    ' p5 _$ y; E2 Z- ]) P1 K
  11.         swApp = GetObject(, "SldWorks.Application"). `" v/ |- }5 H: k
  12.         If swApp Is Nothing Then8 G' {2 |7 S/ @" t- V6 h
  13.             MsgBox("请您在运行本程序前先运行SOLIDWORKS!"): W0 d' {$ n7 t6 E4 @$ w' y
  14.             Exit Sub
    1 b# O6 e( j) {
  15.         End If# A9 C0 k6 z" h" `' U6 ]
  16.         swModel = swApp.ActiveDoc
    ' k( j0 l: t8 Z% H# g
  17.         If swModel Is Nothing Then
    $ \8 U! ^3 z' W5 y0 G1 H; H0 d2 j
  18.             MsgBox("请您打开模型后再运行!")
    ! Q' g% g$ w4 u# `' q' R
  19.             Exit Sub
    * R* K, A0 z! ]
  20.         End If
    2 ^  V4 Q) Z6 i+ ?7 Z- r3 r  `
  21.         If swModel.GetType <> 2 Then
    ' P8 `! e. ^0 g: w- V% H- H
  22.             MsgBox("请您打开装配模型后再运行!"), x6 \; {3 b% l+ x
  23.             Exit Sub
    , i2 q6 \! p6 p! Z2 k+ z" F4 A
  24.         End If
    * A6 X( i% i4 u3 K
  25.         swConMgrs = swModel.ConfigurationManager '获取配置管理器
    " V! Q2 H% u$ C2 i
  26.         swConfigs = swConMgrs.ActiveConfiguration '获取活动配置3 f: k( l  T# D
  27.         swChild = swConfigs.Name '获取活动配置名
    : s$ ^8 ~  Q9 x7 ]# ?
  28.         swPropMgrs = swModel.Extension.CustomPropertyManager("") '获得自定义属性8 G2 e( F: p5 x6 l4 e+ u$ S! p
  29.         'swPropMgrs = swModel.Extension.CustomPropertyManager(swChild) '获得配置特定属性
    / D- q3 t3 ^7 ?; ~
  30.         swGetType = swModel.GetPathName '获取此文档的完整路径名,包括文件名
    5 ?# L1 b- ?& {/ e1 u& O  N) p
  31.         RichTextBox1.Text &= swGetType & vbNewLine1 P3 U9 W2 y$ r" U
  32.         swFeat = swModel.FirstFeature; x; i2 @5 B0 n6 D5 V, J; t
  33.         While IsNothing(swFeat) = False9 Q% _  X- P+ I4 k' c( P! V
  34.             Select Case swFeat.GetTypeName2
    2 u- U/ d" j6 ~! _, J0 ^0 [2 R
  35.                 Case "Reference", "ReferencePattern" '排除镜像及阵列模型
    - U0 A* ?8 w5 a8 z* I# V
  36.                     Throughs(swModel, swFeat.Name)
    + k/ \  U* R& v" ~  u1 m
  37.             End Select
    ! ^& G, z1 W& W1 g
  38.             swFeat = swFeat.GetNextFeature
    * g- T8 X! S! O% R' ~% Q# q
  39.         End While
    1 j" x; |4 m. ]. I1 L
  40.     End Sub
    ( w  r& V; M' Y3 v4 y
  41.     Private Sub Throughs(ByVal swModels As ModelDoc2, ByVal swPartName As String): N9 M$ n4 H9 U4 q5 e
  42.         Dim swComponent As Component2, [. w& v& z2 `& B. W8 x
  43.         Dim swildMode As ModelDoc2& H; o# y& Q6 T5 a
  44.         Dim swPropMgr As CustomPropertyManager9 U2 V9 D3 z  q7 G
  45.         Dim swGetTypes As String
    " ]1 Z3 k" D$ [7 E( i
  46.         Dim swFeature As Feature3 F" w4 h" C3 o6 {& M4 o
  47.         Dim swChild As String
    1 I# t( p% Q, O
  48.         swComponent = swModels.GetComponentByName(swPartName) '获取指定的顶级程序集组件/ J9 e8 G0 L* D- M( S" q: F) z% X
  49.         swChild = swComponent.ReferencedConfiguration
    & S3 i9 P6 w( i, i. Z. H
  50.         If swComponent.IsSuppressed = False AndAlso swComponent.ExcludeFromBOM = False AndAlso swComponent.IsEnvelope = False Then '排除是否被压缩、不包括在材料明细表中或封套的模型
    , X4 [9 g! J) C  K8 H
  51.             swildMode = swComponent.GetModelDoc2 '获取此组件的模型文档, t& K2 D5 x. G- G& h6 H
  52.             swGetTypes = swildMode.GetPathName '获取此文档的完整路径名,包括文件名
    " B# k4 N2 W. j
  53.             RichTextBox1.Text &= swGetTypes & vbNewLine/ A, N) ^/ w! m
  54.             swPropMgr = swildMode.Extension.CustomPropertyManager("") '获得自定义属性; ~$ O  v. l" o1 N/ N
  55.             'swPropMgr = swildMode.Extension.CustomPropertyManager(swChild) '获得配置特定属性
    5 W! ?, @, Q5 J' {# i- j7 J
  56. 4 x+ k. u2 l8 P, [! H9 e/ X( w8 m
  57.             '..............
    0 d* }& y# d8 h2 _0 }, G
  58.             '..............
      p1 }! B7 X5 {
  59.             '..............
    ; E+ u% I' t' N* y* o
  60.             '..............添加你要处理的代码
    9 Q8 T  d5 q7 p% k# ~9 H& l, e; M5 |6 U
  61. 3 G0 {1 m- }; E  w1 a9 Y. {
  62. ( j9 l# j' e2 h7 P# l& b
  63.             If swildMode.GetType = 2 Then '获取文档类型,是否是装配文件( K1 U& `7 t  L( a4 M
  64.                 swFeature = swildMode.FirstFeature '获取此组件中的第一个模型
    % w8 Z. q6 D! f; _% G" }# L# J7 X* E
  65.                 Do While Not swFeature Is Nothing '如果模型存在, 模型循环此模型* j& b2 Y2 m9 L5 w6 J/ g5 ~
  66.                     Select Case swFeature.GetTypeName2
    6 H/ i' a: |; d, T3 K
  67.                         Case "Reference", "ReferencePattern"
    9 V" ~0 _# D/ p6 y6 W
  68.                             Throughs(swildMode, swFeature.Name)6 C3 w4 ~! a1 k1 d: u; V) U& }7 o
  69.                     End Select0 V& q" a# S* A2 W
  70.                     swFeature = swFeature.GetNextFeature/ h$ E1 X3 p) O/ |+ p/ J, U# F
  71.                 Loop1 G9 k+ B" v: N- ]$ }9 x
  72.             End If9 M% v: U/ e; I( r
  73.         End If
    + C8 z" Z$ r0 e$ V8 d: `* g
  74.     End Sub
复制代码

% N; `7 B4 [9 B

评分

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

查看全部评分

发表于 2020-4-11 07:50:30 | 显示全部楼层 来自: 中国山东威海
本帖最后由 che-zp 于 2020-4-11 07:53 编辑
$ M3 A  O' \/ R. _& m5 a6 c& N# I( Q" \' e. Q2 X! Q3 a
遍历设计树 解压错误
 楼主| 发表于 2020-4-11 08:21:36 | 显示全部楼层 来自: 中国江苏苏州
应该是论坛的问题,我上传的时候提示如下图,后来我自己也下载解压一下,确实有问题。7 r5 o. Y* L$ }3 w) m4 ?
QQ截图20200411081657.png
/ w6 ?4 u2 R  M$ \, o
5 P! u; E, B3 [' s, c1 ]' p" N' D1 i0 H( n

1 G8 S; ^" }* r1 ?: Z1 q
) @0 J% I1 m* w6 D  j9 N3 `
3 B6 A( [9 d% S4 x# I9 n1 G
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 编辑
! d3 f5 k' t2 |; _* {  Q! e4 V- o
7 V3 c, L, K6 ~, g* r没有明白啥是”遍历装配体“的意思,怎么用的。但感觉好高大上!9 I$ e! |0 v# R5 m' ]; D
发表于 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 )

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