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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5268|回复: 39
打印 上一主题 下一主题

solidworks根据装配图自动做清单 宏

[复制链接]

4

主题

44

帖子

23

金币

天使

Rank: 2Rank: 2

积分
82
QQ
跳转到指定楼层
楼主
发表于 2019-8-31 19:27:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

使用道具 举报

4

主题

49

帖子

30

金币

天使

Rank: 2Rank: 2

积分
97
QQ
沙发
发表于 2019-9-1 00:31:44 | 只看该作者
此宏是根据开思论坛的 网友 三维专家 编写出来的,三维专家写出来的宏已经很好用了,但有个缺点就是清单的顺序没有按照设计树的顺序,比较乱。
原帖 ww w. ic ax.or g/t hr ead-12560 14-1-1.html
我也参考了3D社 区的一个网友的帖子,在此感谢
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

4

主题

48

帖子

28

金币

天使

Rank: 2Rank: 2

积分
107
QQ
板凳
发表于 2019-9-1 03:15:56 | 只看该作者
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

49

帖子

25

金币

混混

Rank: 1

积分
73
QQ
地板
发表于 2019-9-1 04:14:42 | 只看该作者
Dim swApp As SldWorks.SldWorks
Dim swPart As SldWorks.ModelDoc2
Dim xlApp As Excel.Application '需要引用Exelc相关函数,设置引用Microsoft Excel
Dim xlWb As Excel.Workbook
Dim xlWbs As Excel.Workbooks
Dim xlWs As Excel.Worksheet
Dim xlPath As String
Dim xlFN As String
Dim CurRow As Integer
Dim myModelDoc() As SldWorks.ModelDoc2


Sub main()


On Error Resume Next
Set swApp = Application.SldWorks
Set swPart = swApp.ActiveDoc

xlPath = Environ("USERPROFILE") & "Desktop" '获取桌面路径
xlFN = "生产喷涂清单" & ".xlsx" '要保存的Excel文件名称

If Dir(xlPath & xlFN) <> &quot;&quot; Then '如果桌面上有该文件,则删除它
Kill xlPath & xlFN
End If

Set xlApp = Excel.Application
xlApp.Visible = True '新建excel
Set xlWbs = Excel.Workbooks
Set xlWb = xlWbs.Add() '新建工作表
Set xlWs = xlWb.Worksheets(&quot;Sheet1&quot;)

SetTableHead '设置Excel的表头的函数

xlWb.SaveAs xlPath & xlFN '自动保存文件

ReDim myCommonet(0)

CurRow = 2 '在excle填写内容的行数,初始从第二行开始,第一行为表头

'下面9行是往excel输入当前打开的装配体的属性栏的数据,由于遍历装配体不会遍历自身...
xlWs.Range(&quot;B&quot; & CurRow).Value = swPart.GetCustomInfoValue(&quot;&quot;, &quot;图号&quot;) '输入属性栏中图号的数据到B2区域,下面类似
xlWs.Range(&quot;C&quot; & CurRow).Value = swPart.GetCustomInfoValue(&quot;&quot;, &quot;文件名称&quot;)
xlWs.Range(&quot;D&quot; & CurRow).Value = swPart.GetCustomInfoValue(&quot;&quot;, &quot;数量&quot;)
xlWs.Range(&quot;E&quot; & CurRow).Value = swPart.GetCustomInfoValue(&quot;&quot;, &quot;材料&quot;)
xlWs.Range(&quot;F&quot; & CurRow).Value = swPart.GetCustomInfoValue(&quot;&quot;, &quot;厚度&quot;)
xlWs.Range(&quot;G&quot; & CurRow).Value = swPart.GetCustomInfoValue(&quot;&quot;, &quot;边界框长度&quot;)
xlWs.Range(&quot;H&quot; & CurRow).Value = swPart.GetCustomInfoValue(&quot;&quot;, &quot;边界框宽度&quot;)
xlWs.Range(&quot;I&quot; & CurRow).Value = swPart.GetCustomInfoValue(&quot;&quot;, &quot;表面处理&quot;)
xlWs.Range(&quot;J&quot; & CurRow).Value = swPart.GetCustomInfoValue(&quot;&quot;, &quot;外形尺寸&quot;)
CurRow = CurRow + 1 '行数加一

If Not swPart Is Nothing Then '按照设计树遍历当前装配体的全部子装配体和子零件
Dim myFeature As Feature
Set myFeature = swPart.FirstFeature
ReDim myModelDoc(0)
Do While Not myFeature Is Nothing
If (myFeature.GetTypeName2 = &quot;Reference&quot; Or myFeature.GetTypeName2 = &quot;ReferencePattern&quot;) And swPart.GetType = 2 Then
TraFeature swPart, myFeature.Name '调用遍历子装配体函数
End If
Set myFeature = myFeature.GetNextFeature
Loop
End If

xlWb.Save

End Sub


Private Sub TraFeature(ByVal ParModeldoc As SldWorks.ModelDoc2, ByVal ParName As String) '按照设计树顺序遍历装配体 函数
Dim curcomponent As Component2

Set curcomponent = ParModeldoc.GetComponentByName(ParName)
If curcomponent Is Nothing Then
Exit Sub
End If

If curcomponent.IsSuppressed = False Then
Dim curmodeldoc As SldWorks.ModelDoc2
Set curmodeldoc = curcomponent.GetModelDoc2
ReDim Preserve myModelDoc(UBound(myModelDoc) + 1)
Set myModelDoc(UBound(myModelDoc)) = curmodeldoc

'下面9行是往excel输入当前装配体内全部子装配体和子零件的的属性栏的数据
xlWs.Range(&quot;B&quot; & CurRow).Value = curmodeldoc.GetCustomInfoValue(&quot;&quot;, &quot;图号&quot;)
xlWs.Range(&quot;C&quot; & CurRow).Value = curmodeldoc.GetCustomInfoValue(&quot;&quot;, &quot;文件名称&quot;)
xlWs.Range(&quot;D&quot; & CurRow).Value = curmodeldoc.GetCustomInfoValue(&quot;&quot;, &quot;数量&quot;)
xlWs.Range(&quot;E&quot; & CurRow).Value = curmodeldoc.GetCustomInfoValue(&quot;&quot;, &quot;材料&quot;)
xlWs.Range(&quot;F&quot; & CurRow).Value = curmodeldoc.GetCustomInfoValue(&quot;&quot;, &quot;厚度&quot;)
xlWs.Range(&quot;G&quot; & CurRow).Value = curmodeldoc.GetCustomInfoValue(&quot;&quot;, &quot;边界框长度&quot;)
xlWs.Range(&quot;H&quot; & CurRow).Value = curmodeldoc.GetCustomInfoValue(&quot;&quot;, &quot;边界框宽度&quot;)
xlWs.Range(&quot;I&quot; & CurRow).Value = curmodeldoc.GetCustomInfoValue(&quot;&quot;, &quot;表面处理&quot;)
xlWs.Range(&quot;J&quot; & CurRow).Value = curmodeldoc.GetCustomInfoValue(&quot;&quot;, &quot;外形尺寸&quot;)
CurRow = CurRow + 1

If curmodeldoc.GetType = 2 Then
Dim myFeatureT As Feature
Set myFeatureT = curmodeldoc.FirstFeature
Do While Not myFeatureT Is Nothing


If (myFeatureT.GetTypeName2 = &quot;Reference&quot; Or myFeatureT.GetTypeName2 = &quot;ReferencePattern&quot;) And curmodeldoc.GetType = 2 Then
TraFeature curmodeldoc, myFeatureT.Name
End If
Set myFeatureT = myFeatureT.GetNextFeature
Loop
End If
End If
End Sub




'设置表头,用户可根据自己的实际要求进行增删,或修改每列的宽度
Public Function SetTableHead()

With xlWs.Range(&quot;A1:Q1&quot;)
.Font.Name = &quot;宋体&quot; '字体样式
.Font.Size = 12 '字体大小
.Font.Bold = True '粗体字
.HorizontalAlignment = xlCenter '中心对齐
End With

With xlWs.Range(&quot;A1&quot;)
.Value = &quot;序号&quot;
.ColumnWidth = 3 '该列宽度
End With

With xlWs.Range(&quot;B1&quot;)
.Value = &quot;图号&quot;
.ColumnWidth = 20 '该列宽度
End With

With xlWs.Range(&quot;C1&quot;)
.Value = &quot;名称&quot;
.ColumnWidth = 20 '该列宽度
End With

With xlWs.Range(&quot;D1&quot;)
.Value = &quot;数量&quot;
.ColumnWidth = 4 '该列宽度
End With

With xlWs.Range(&quot;E1&quot;)
.Value = &quot;材料&quot;
.ColumnWidth = 10 '该列宽度
End With

With xlWs.Range(&quot;F1&quot;)
.Value = &quot;厚度&quot;
.ColumnWidth = 5 '该列宽度
End With

With xlWs.Range(&quot;G1&quot;)
.Value = &quot;长mm&quot;
.ColumnWidth = 8 '该列宽度
End With

With xlWs.Range(&quot;H1&quot;)
.Value = &quot;宽mm&quot;
.ColumnWidth = 8 '该列宽度
End With

With xlWs.Range(&quot;I1&quot;)
.Value = &quot;颜色&quot;
.ColumnWidth = 11 '该列宽度
End With

With xlWs.Range(&quot;J1&quot;)
.Value = &quot;成型尺寸&quot;
.ColumnWidth = 20
End With

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

使用道具 举报

1

主题

49

帖子

12

金币

混混

Rank: 1

积分
40
QQ
5#
发表于 2019-9-1 04:53:49 | 只看该作者

   经典案例图书
效果




我的这个宏的缺点也是很明显。虽然清单的顺序可以按照设计树的来,但不能把同一零件统一起来只输出一项,也就是装配图内数量不是一件的,清单就会多出来了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

46

帖子

11

金币

混混

Rank: 1

积分
39
QQ
6#
发表于 2019-9-1 10:22:01 | 只看该作者
自动做清单的思路:
打开一个总装配体,使用此宏,宏会按照设计树的顺序遍历装配体的全部的子装配体和子零件,以及子装配体的子零件,然后导出零件的属性栏里面的数据,输出到Excel
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

5

主题

42

帖子

25

金币

天使

Rank: 2Rank: 2

积分
116
QQ
7#
发表于 2019-9-1 12:44:50 | 只看该作者

   经典案例图书
如果宏使用不了,就需要设置引用,编辑宏 - 工具 - 引用
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

31

帖子

9

金币

天使

Rank: 2Rank: 2

积分
57
QQ
8#
发表于 2019-9-1 13:04:04 | 只看该作者
钣金的展开尺寸、零件的外形尺寸、装配体的外形尺寸 都可以用宏功能自动链接到属性栏,不需要自己去点击使用,只要了使用常驻宏功能。
自动链接零件和装配体外形尺寸到属性栏的 宏 我在开思论坛发过了。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

50

帖子

21

金币

天使

Rank: 2Rank: 2

积分
104
QQ
9#
发表于 2019-9-1 13:34:58 | 只看该作者
前盆友前来顶贴
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

44

帖子

13

金币

天使

Rank: 2Rank: 2

积分
85
QQ
10#
发表于 2019-9-1 17:52:05 | 只看该作者

   经典图书
我也想学,
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

45

帖子

37

金币

天使

Rank: 2Rank: 2

积分
129
QQ
11#
发表于 2019-9-1 19:55:27 | 只看该作者
虽然没看懂,但感觉挺不错的。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

47

帖子

24

金币

天使

Rank: 2Rank: 2

积分
99
QQ
12#
发表于 2019-9-1 20:04:32 | 只看该作者
没懂,再看一次
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

45

帖子

8

金币

天使

Rank: 2Rank: 2

积分
64
QQ
13#
发表于 2019-9-2 01:21:04 | 只看该作者




这个程序是为我定制的而已,现在已经不会输出重复项了,我在里面添加了这么多的注释,即使没人编程基础的人应该也是可以看懂
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

5

主题

49

帖子

35

金币

天使

Rank: 2Rank: 2

积分
111
QQ
14#
发表于 2019-9-2 02:30:38 | 只看该作者
没人回复的原因是大多数人都看不懂,嗯,我也不懂。因为书上没有这方面的详细教学......
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

38

帖子

20

金币

天使

Rank: 2Rank: 2

积分
83
QQ
15#
发表于 2019-9-2 03:22:04 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

可以加个联系方式吗?不太会用,想学一下
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

40

帖子

16

金币

天使

Rank: 2Rank: 2

积分
78
QQ
16#
发表于 2019-9-2 04:32:30 | 只看该作者

   经典案例图书
好贴!!!!!!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

45

帖子

41

金币

天使

Rank: 2Rank: 2

积分
142
QQ
17#
发表于 2019-9-2 04:49:47 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

pan.b aidu.c om /s/1KFtyj3qaG3 7G0wfmI8O1Mg
程序我不断在改动,让它变得更懂我,图片是输出的清单的效果
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

47

帖子

22

金币

天使

Rank: 2Rank: 2

积分
93
QQ
18#
发表于 2019-9-2 06:22:54 | 只看该作者

   经典案例图书
一点都看不懂 哈哈哈
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

41

帖子

27

金币

天使

Rank: 2Rank: 2

积分
115
QQ
19#
发表于 2019-9-2 10:57:06 | 只看该作者
看不懂
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

39

帖子

25

金币

天使

Rank: 2Rank: 2

积分
96
QQ
20#
发表于 2019-9-2 19:54:53 | 只看该作者
很棒 不过如果能把你的属性页贴一下就更好了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

SOLIDWORKS 2023 机械设计从入门到精通

手机版|小黑屋| GMT+8, 2025-5-23 22:53 , Processed in 0.928089 second(s), 26 queries , Memcache On.

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

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

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