SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 30192|回复: 174
打印 上一主题 下一主题

<<改编>>遍历装配体获取子件的 自定义属性及 缩略图 输出到Excel的宏

  [复制链接]

39

主题

372

帖子

3067

金币

传奇

Rank: 8Rank: 8

积分
7744

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

跳转到指定楼层
楼主
 楼主| 发表于 2021-7-26 11:54:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
进入论坛接触到宏半年有多,在论坛学了好多好多东西,作为菜鸟多数是改改别人的作品,吸取前辈的知识,感谢巨人让我们在其肩上行走。这次冒险改个宏,希望能与更多人交流,学到更多的东西。

新手改编,语法很乱,不喜勿喷啊!!

本宏是由多个宏强行结合在一起使用,没有考虑运行快捷,语法整洁等,只求一个能用。

由于代码几乎都是抄各位前辈的,所以没有一一向各位要授权之类的,如有侵权请告知本人tg000057@126.com,或联系版主删帖!

下面简单说一下功能:
1.窗体选项,可选4种类型输出表格,可选是否去重输出,镜向件是否输出,是否略过无工程图组件输出。
2.表格设置完善标题,公司标题,冻结窗口,页脚,边框,打印等设置,可直接A4纸打印。
3.轻化件自动还原后输出,如用选取项输出有选取压缩件,也能输出。(先选取再运行宏)。
4.缩略图可选上色模式,线框模式,和无图模式,缩略图只截取默认配置缩略图,其他多配置不截取。
5.输出表格存放在装配体目录下,命名:装配体名+“-明细表”+序号,多次执行序号增加,不会覆写。
6.输出顺序和设计树的一样。
7.无特别定制要求,按“根据自己需求进行更改”处修改即可用。

为避伸手党,设置高一点门槛,见谅!!


补充内容 (2021-8-6 09:55):
有个bug,选取项输出时,如果展开零件设计树多选里面的的特征,会识别成选取多个相同零件,在不去重的情况下,会多重输出。解决方法是:提取时连同子件实例号一起提取,然后再去重!

补充内容 (2021-8-6 15:16):
更新版在18楼!

001.png

02.png

SwToExcel.rar

(43.44 KB, 下载次数: 137 售价: 35 金币

评分

参与人数 1威望 +5 金币 +50 贡献 +5 收起 理由
Allate + 5 + 50 + 5 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏22 转播转播 分享教程|习题|模型|技巧 点赞点赞4 拍砖拍砖
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

39

主题

372

帖子

3067

金币

传奇

Rank: 8Rank: 8

积分
7744

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

推荐
 楼主| 发表于 2021-8-18 14:46:29 | 只看该作者
zhjan518 发表于 2021-8-18 14:16
找到原因了,可以正常打开,表格中怎么加入文件名呢

    xx = Bti(UI)
    xlWs.Range(Chr(65 + UI) & CurRow).Value = Get_Property_value(swDoc, xx)              '转到获取当前模型文档的某个属性的值

这里改成:

    xx = Bti(UI)
    If xx = "文件名" Then
    xlWs.Range(Chr(65 + UI) & CurRow).Value = swDocName
    Else
    xlWs.Range(Chr(65 + UI) & CurRow).Value = Get_Property_value(swDoc, xx)              '转到获取当前模型文档的某个属性的值
    End If

在表格标题名为“文件名”的列,输入文件名。

SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 1 反对 0

使用道具 举报

37

主题

990

帖子

1万

金币

版主

Rank: 7Rank: 7Rank: 7Rank: 7

积分
19504

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

推荐
发表于 2021-8-9 08:39:43 | 只看该作者
tg000057 发表于 2021-8-6 14:57
找到原因了,静默打开文件时用的配置是“”,然后获取缩略图用的配置是“默认”,没有对应好。
用了段时 ...

当时没注意,忘记写出具体的问题点,还是你厉害,一下子看出来还解决掉
SolidWorks机械工程师网
回复 支持 1 反对 0

使用道具 举报

39

主题

372

帖子

3067

金币

传奇

Rank: 8Rank: 8

积分
7744

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

推荐
 楼主| 发表于 2021-8-6 15:15:38 | 只看该作者
修复已知漏洞!

SwToExcel.rar

(49.09 KB, 下载次数: 212 售价: 35 金币

SolidWorks机械工程师网
回复 支持 1 反对 0

使用道具 举报

1

主题

52

帖子

9

金币

天使

Rank: 2Rank: 2

积分
151

最佳新人活跃会员热心会员宣传达人

推荐
发表于 2021-7-28 11:40:18 | 只看该作者

   经典案例图书
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 1 反对 0

使用道具 举报

37

主题

990

帖子

1万

金币

版主

Rank: 7Rank: 7Rank: 7Rank: 7

积分
19504

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

推荐
发表于 2021-7-27 09:15:19 | 只看该作者
有点小瑕疵,但瑕不掩瑜!





SolidWorks机械工程师网
回复 支持 1 反对 0

使用道具 举报

1

主题

37

帖子

165

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
289
QQ
7#
发表于 2021-7-27 13:17:52 | 只看该作者

   经典案例图书
很不错,顶一下!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

75

帖子

219

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1184

最佳新人活跃会员热心会员宣传达人

8#
发表于 2021-8-5 11:50:00 | 只看该作者
楼主大神和各位大神,请问这个怎么改成读取装配体里面该零件的总数量?现在读不出来的~

094123uuauhh2wad7mvu92.png
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

75

帖子

219

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1184

最佳新人活跃会员热心会员宣传达人

9#
发表于 2021-8-5 14:26:02 | 只看该作者
顶一下,坐等高手!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

39

主题

372

帖子

3067

金币

传奇

Rank: 8Rank: 8

积分
7744

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

10#
 楼主| 发表于 2021-8-5 16:58:02 | 只看该作者
工程Jay_chen 发表于 2021-8-5 14:26
顶一下,坐等高手!

Dim ZD, ii, jj, Sl As Variant
Set ZD = CreateObject("scripting.dictionary")
For Each ii In Gn
If ii <> "" Then jj = ZD(ii): ZD(ii) = jj + 1
Next

Gn = ZD.Keys
Sl = ZD.Items


这一段代码是把数组去重,并统计其重复数量,放进两个数组里,你参考试着改一下!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

75

帖子

219

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1184

最佳新人活跃会员热心会员宣传达人

11#
发表于 2021-8-5 18:35:59 | 只看该作者
tg000057 发表于 2021-8-5 16:58
Dim ZD, ii, jj, Sl As Variant
Set ZD = CreateObject("scripting.dictionary")
For Each ii In Gn

感谢,感谢!我去试试
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

75

帖子

219

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1184

最佳新人活跃会员热心会员宣传达人

12#
发表于 2021-8-5 18:54:12 | 只看该作者
tg000057 发表于 2021-8-5 16:58
Dim ZD, ii, jj, Sl As Variant
Set ZD = CreateObject("scripting.dictionary")
For Each ii In Gn

试了下,运行不起来显示运行时错误“438” 长老求指导~
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

116

帖子

146

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1145

最佳新人活跃会员热心会员宣传达人

13#
发表于 2021-8-5 21:11:39 | 只看该作者
多谢分享   在试用中
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

39

主题

372

帖子

3067

金币

传奇

Rank: 8Rank: 8

积分
7744

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

14#
 楼主| 发表于 2021-8-5 21:58:01 | 只看该作者
工程Jay_chen 发表于 2021-8-5 18:54
试了下,运行不起来显示运行时错误“438” 长老求指导~

上图啊老板。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

75

帖子

219

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1184

最佳新人活跃会员热心会员宣传达人

15#
发表于 2021-8-6 11:27:17 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入


图没了...昨天把这个段程序放在不同的位置都试了一下,有几种报错的,也有的没有反应,小白我只能靠碰碰运起了...望大神指导下这段程序应该放在哪个位置合适。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

39

主题

372

帖子

3067

金币

传奇

Rank: 8Rank: 8

积分
7744

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

16#
 楼主| 发表于 2021-8-6 11:38:50 | 只看该作者

   经典案例图书
工程Jay_chen 发表于 2021-8-6 11:27
图没了...昨天把这个段程序放在不同的位置都试了一下,有几种报错的,也有的没有反应,小白我只能靠碰碰 ...

昨天那段代码是把获取的数组,去重和统计重复的数量,不是放到哪个位置就可以了,还要修改对应的变量。如果用此方法统计数量的话就必须去重。去重就会出现另一个问题,当零件1在装配体1和装配体2同时存在时,去重后它只出现在第一次出现的位置。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

75

帖子

219

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1184

最佳新人活跃会员热心会员宣传达人

17#
发表于 2021-8-6 13:14:36 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

tg000057 发表于 2021-8-6 11:38
昨天那段代码是把获取的数组,去重和统计重复的数量,不是放到哪个位置就可以了,还要修改对应的变量。如 ...

大神,明白你说的原理了,去重后它出现在第一次出现的位置也没问题,只要统计重复的数量是正确的就OK;不过你说的需要改动相对应的变量,这个应该怎么去改,代码搞不太懂
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

39

主题

372

帖子

3067

金币

传奇

Rank: 8Rank: 8

积分
7744

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

18#
 楼主| 发表于 2021-8-6 14:53:10 | 只看该作者

   经典案例图书
工程Jay_chen 发表于 2021-8-6 13:14
大神,明白你说的原理了,去重后它出现在第一次出现的位置也没问题,只要统计重复的数量是正确的就OK;不 ...

帮你定制一个吧,把数量列更改为统计数量,当标题有“数量”一词时,则将统计的数量写入对应的单元格。
可选择统计输出数量或统计总装配数量。
然后是否去重也保留,不影响数量的统计。

SwToExcel.rar

(45.32 KB, 下载次数: 122 售价: 40 金币

SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

39

主题

372

帖子

3067

金币

传奇

Rank: 8Rank: 8

积分
7744

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

19#
 楼主| 发表于 2021-8-6 14:57:29 | 只看该作者
Allate 发表于 2021-7-27 09:15
有点小瑕疵,但瑕不掩瑜!

找到原因了,静默打开文件时用的配置是“”,然后获取缩略图用的配置是“默认”,没有对应好。
用了段时间我这边都没出现漏图的,今天突然有一个图没有上来,发现是零件的打开配置不一样才发现这个!

0011.png

0022.png
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

75

帖子

219

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1184

最佳新人活跃会员热心会员宣传达人

20#
发表于 2021-8-6 15:15:10 | 只看该作者
tg000057 发表于 2021-8-6 14:53
帮你定制一个吧,把数量列更改为统计数量,当标题有“数量”一词时,则将统计的数量写入对应的单元格。
...

实在是太感谢了,谢谢大神!(已经试用,效果完美!)
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

388

帖子

320

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2920

最佳新人活跃会员热心会员宣传达人灌水之王突出贡献

21#
发表于 2021-8-10 13:48:41 | 只看该作者
SW机械工程师网,找到组织了!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-4-26 05:31 , Processed in 0.260448 second(s), 40 queries .

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

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