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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2494|回复: 15
打印 上一主题 下一主题

将图号、零件名、版本分割,并按约定格式保存文件的宏程序

  [复制链接]

10

主题

65

帖子

63

金币

天使

Rank: 2Rank: 2

积分
192
QQ
跳转到指定楼层
楼主
发表于 2016-7-9 12:41:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

   经典图书
'本程序自动将零件以“图号(国标号)_零件名_版本”的格式保存;
'注意:
'①零件名不能以数字开头和结尾;
'②零件名内不能有空格、全角的“·”;
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swPart As SldWorks.PartDoc
Dim swConfigMgr As SldWorks.ConfigurationManager
Dim swConfig As SldWorks.Configuration
Dim swCustPropMgr As SldWorks.CustomPropertyManager
Dim swConfPropMgr As SldWorks.CustomPropertyManager
Dim a As String
Dim i As Variant
Dim j As Variant
Dim b As String
Dim c As String
Dim e As String
Dim t As String
Dim q As Long
Dim BB As String
Dim OldPath As String
Dim FilePath As String
Dim OldName As String
Dim FileName As String


Sub main()
Set swApp = Application.SldWorks

Set swModel = swApp.ActiveDoc

Set swPart = swModel

Set swCustPropMgr = swModel.Extension.CustomPropertyManager("")

Set swConfigMgr = swModel.ConfigurationManager

Set swConfig = swConfigMgr.ActiveConfiguration

Set swConfPropMgr = swConfig.CustomPropertyManager

swApp.ActiveDoc.ActiveView.FrameState = 1

OldPath = swModel.GetPathName '获取文件路径

If OldPath = "" Then '判断是否为新文件(即未保存过的文件)

swModel.Save '如果是,则保存

OldPath = swModel.GetPathName '重新获取文件路径

End If

'将路径和零件名(含国标号/图号)分割开来
q = InStrRev(OldPath, "")

OldName = Mid(OldPath, q + 1)

FilePath = Mid(OldPath, 1, q)

t = Right(OldName, 7)

If t = ".SLDPRT" Or t = ".sldprt" Or t = ".Sldprt" Or _
t = ".SLDASM" Or t = ".sldasm" Or t = ".Sldasm" Then

c = Left(OldName, Len(OldName) - 7)

End If

'判断文件名是否含版本号,如果是,则分割版本号
BB = Right(c, 3)
If Len(BB) >= 3 Then

If Left(BB, 1) = "_" And (Asc(Mid(BB, 2, 1)) > 64 And Asc(Mid(BB, 2, 1)) < 91) And (Asc(Mid(BB, 3, 1)) >= 48 And Asc(Mid(BB, 3, 1))  64 And Asc(j) < 91) Then '判断图号是否为修改版本(A-Z,
'其AscII码为65-90),如果是,
e = Left(c, q + 1) '则将其后分割

q = q + 2

Exit For

ElseIf (a = "_" Or ((Asc(a) < 48 Or Asc(a) > 57) And (Asc(j) < 48 Or Asc(j) > 57))) Then
'如果文件名中含有分割符“_”,
e = Left(c, q - 1) '或者连续两个符号均不是数字,则分割

Exit For

End If

Next q

ElseIf Left(c, 2) = "GB" Or Left(c, 2) = "JB" Then '如果零件名前两位是"GB"或者"JB",则以下过程为截取国标号

q = InStr(4, c, "-")

If (Mid(c, q + 1, 2) = "19" Or Mid(c, q + 1, 2) = "20") Then

e = Left(c, q + 4)

q = q + 5

Else

e = Left(c, q + 2)

q = q + 3

End If

End If

'截取零件名
If Left(c, 2) = "GB" Or Left(c, 2) = "JB" Or Left(c, 2) = "XX" Then

If Mid(c, q, 1) = "_" Then '如果已经有分割符("_"),则

b = Mid(c, q + 1) '分割符后为零件名

Else '否则

b = Mid(c, q) '从当前位置分割

End If

Else

b = c '如果图号或国标号为空,则零件名=文件名

End If

'将BT改为B/T, B/改为B/, 2位年份改为4位年份
If e  "" Then

a = Mid(e, 2, 2)

If a = "BT" Then e = Replace(e, "BT", "B/T") '将BT改为B/T

If a = "B/" Then e = Replace(e, "B/", "B/") '将B/改为B/

a = Mid(Right(e, 3), 1, 1)

If a = "-" Then e = Replace(e, "-", "-19") '将2位年份改为4位年份

End If
FileName:
If e = "" And BB = "" Then FileName = b + t

If e = "" And BB  "" Then FileName = b + "_" + BB + t

If e  "" And BB = "" Then FileName = e + "_" + b + t

If e  "" And BB  "" Then FileName = e + "_" + b + "_" + BB + t
swModel.SaveAs (FilePath + FileName)

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

使用道具 举报

13

主题

72

帖子

97

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
245
QQ
沙发
发表于 2016-7-9 12:51:47 | 只看该作者
牛人!不服不行!俺好好下载来试试
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

7

主题

231

帖子

774

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2487

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

板凳
发表于 2016-8-15 09:55:23 | 只看该作者

   经典图书
好东西,努力学习学习!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

95

主题

186

帖子

8647

金币

版主

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

积分
14254

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

地板
发表于 2016-8-30 11:42:31 | 只看该作者
发现执行错误怎么搞
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

69

帖子

122

金币

堂主

Rank: 4

积分
537

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

5#
发表于 2017-4-10 16:18:32 | 只看该作者

   经典案例图书
下载下来看看,应该会有用!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

578

帖子

1399

金币

传奇

Rank: 8Rank: 8

积分
7308

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

6#
发表于 2017-4-21 10:08:35 | 只看该作者
下载下来看看,应该会有用!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

395

帖子

182

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2506

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

7#
发表于 2017-4-21 12:41:09 | 只看该作者

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

使用道具 举报

0

主题

340

帖子

31

金币

堂主

Rank: 4

积分
907

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

8#
发表于 2017-4-25 15:54:34 | 只看该作者
正在学习,这个很高大上的样子
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

270

帖子

21

金币

堂主

Rank: 4

积分
802

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

9#
发表于 2017-5-22 16:40:40 | 只看该作者

谢谢楼主的资料
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

62

帖子

121

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
383

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

10#
发表于 2017-7-2 20:26:56 | 只看该作者

   经典图书
感谢楼主分享,谢谢。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

111

帖子

216

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1977

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

11#
发表于 2018-12-5 15:44:36 | 只看该作者
不知道为啥有红线呢啊
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

685

帖子

1044

金币

实习版主

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

积分
6409

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

12#
发表于 2018-12-8 12:48:21 | 只看该作者
楼主太有才了,膜拜中……
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

46

帖子

40

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
297

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

13#
发表于 2019-1-2 13:12:22 | 只看该作者
运行错误怎么办
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

5

主题

62

帖子

431

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1821

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

QQ
14#
发表于 2019-1-9 15:27:25 | 只看该作者
立意不错,但国标和机标,其中的“/”是不能用在文件名的,非法字符。这是要把已有的文件名修改为三段格式吗?我认为只处理自己的文件就行了,标准件和外购件不要动为好,会不好管理,作BOM时可以考虑自动转成对应国标号。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

21

主题

312

帖子

84

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2292

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

15#
发表于 2019-3-13 16:39:43 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

是不是宏程序楼主
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

66

帖子

100

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
441

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

16#
发表于 2019-5-6 19:00:26 | 只看该作者

   经典案例图书
真是牛到不行
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

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

手机版|小黑屋| GMT+8, 2025-7-5 08:22 , Processed in 0.236014 second(s), 22 queries , Memcache On.

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

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

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