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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

装配体的名称图号分离宏修改

  [复制链接]

7

主题

28

帖子

111

金币

天使

Rank: 2Rank: 2

积分
189
QQ
跳转到指定楼层
楼主
发表于 2017-12-30 05:40:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
各位大大,我手上有一个名称图号分离,对零件来说,非常好用,装配体也可以,就是装配体下的子装配和零件还得一个一个手动去运行,能不能改成遍历所选的装配体,连同装配体、子装配、零件一起修改,因本人不懂,我想请论坛里的高手大大们帮我修改一下,能在装配体的模式下用,现在只能在零件的模式下用,请高人出手,谢谢!!!文件名称图号命名规则:图号+空格+名称
下面是文件:
名称图号分离.rar (8.42 KB, 下载次数: 171)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 转播转播 分享教程|习题|模型|技巧 点赞点赞 拍砖拍砖
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

0

主题

19

帖子

10

金币

天使

Rank: 2Rank: 2

积分
93

最佳新人宣传达人

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

使用道具 举报

4

主题

20

帖子

61

金币

天使

Rank: 2Rank: 2

积分
107
QQ
板凳
发表于 2017-12-30 06:51:28 | 只看该作者
有個簡單的,在裝配体執行效果如图是否適用?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

5

主题

18

帖子

26

金币

天使

Rank: 2Rank: 2

积分
82
QQ
地板
发表于 2017-12-30 06:55:51 | 只看该作者
我在SW2016下测试你的这个装配体下能正常使用
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

20

帖子

54

金币

天使

Rank: 2Rank: 2

积分
101
QQ
5#
发表于 2017-12-30 09:28:31 | 只看该作者

   经典案例图书
谢谢工程师回复,这个对名称和图号长度在限制吗?另请教一下这个能在装配体的状态下连装配体装配体下子装配和零件一起修改吗。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

30

帖子

12

金币

天使

Rank: 2Rank: 2

积分
58
QQ
6#
发表于 2017-12-30 15:51:07 | 只看该作者
N大可能误会我的意思了,可以修改装配体的名称图号,我的意思是在装配体的模式下,运行此,连装配体本身及子装配和零件一起修改!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

23

帖子

43

金币

天使

Rank: 2Rank: 2

积分
93
QQ
7#
发表于 2017-12-30 18:07:24 | 只看该作者

   经典案例图书
楼主的 想法是 把 图号分离 嵌套进 遍历中去
执行遍历之后   会遍历装配体中的每一个 子装配  每一个零件
这个可能要你自己 研究研究 VBA相关的东西了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

24

帖子

36

金币

天使

Rank: 2Rank: 2

积分
104
QQ
8#
发表于 2017-12-30 18:34:00 | 只看该作者
俺只会笨方法,仅供参考。
1.利用网络上大大分享的批量修改属性工具,打开所有需要修改的零件及组件档案;
2.利用Excel数据》分列工具,将档案名称进行分列处理;



3.批量写入需要导入的属性(如图号&名称)

ps; 免责申明:非原创,俺从别处学回来的。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

19

帖子

14

金币

天使

Rank: 2Rank: 2

积分
66
QQ
9#
发表于 2017-12-30 19:00:36 | 只看该作者
感谢28同学献出自己的龟宿
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

29

帖子

26

金币

天使

Rank: 2Rank: 2

积分
101
QQ
10#
发表于 2017-12-31 00:23:04 | 只看该作者
參考眾大師的結晶,稍加整理一下,因沒經大批量及大容量的組件測試過,
所以建議僅在小批量及小容量的組件試試看了!
執行效果如附图.



    1. ' ******************************************************************************
    2. '  macro recorded on 08/11/17 by lsc
    3. '
    4. '  組合件及零件自訂屬性名稱.
    5. '
    6. '  本例之編號名稱是以 "_" 之符號分隔.
    7. '
    8. ' 1. 把組件及零件置放在 "同文件路徑" 下
    9. '
    10. ' 2. 開組件,執行 main [url=https://www.swbbsc.com/forum-57-1.html]宏[/url]
    11. '
    12. ' ******************************************************************************
    13. Dim TopDocPathOnly As String
    14. Dim swModel As SldWorks.ModelDoc2
    15. Dim swApp As SldWorks.SldWorks
    16. Dim longstatus As Long, longwarnings As Long
    17. Sub main()
    18. Set swApp = Application.SldWorks
    19. Set TopDoc = swApp.ActiveDoc '總裝對象
    20. If TopDoc.GetType <> 2 Then
    21.     MsgBox ("Open Assembly")
    22.     Exit Sub '不是裝配=退出
    23. End If
    24. TopDocPathSplit = Split(TopDoc.GetPathName, "") '分割
    25. TopDocName = TopDocPathSplit(UBound(TopDocPathSplit)) '總裝文件名稱
    26. Path_ = TopDoc.GetPathName
    27. TopDocName = Left(TopDocName, Len(TopDocName) - 7) '總裝文件名稱(排除.SLDASM)
    28. TopDocPathOnly = TopDocPathSplit(UBound(TopDocPathSplit) - 1) '總裝目錄名稱
    29. TopConfString = TopDoc.GetActiveConfiguration.Name '總裝[url=https://www.swbbsc.com/forum-53-1.html]配置[/url]名稱
    30. SubAsm TopDoc, TopConfString '遍歷
    31. End Sub
    32. Function SubAsm(AsmDoc, ConfString)
    33. Dim name_ay() As String
    34. Set swModel = swApp.ActiveDoc
    35. Set Configuration = AsmDoc.GetConfigurationByName(ConfString)
    36. Set RootComponent = Configuration.GetRootComponent
    37. Components = RootComponent.GetChildren
    38. For Each Child In Components '總裝抓全部零件名稱
    39.     i = i + 1
    40.     ReDim Preserve name_ay(i)
    41.     Set ChildModel = Child.GetModelDoc
    42.     ChildPathSplit = Split(Child.GetPathName, "") '分割
    43.     ChildName = ChildPathSplit(UBound(ChildPathSplit)) '零件文件名稱
    44.     name_ay(i) = Left(ChildName, Len(ChildName) - 7) '編號_名稱
    45.     swModel.DeleteCustomInfo2 "", name_ay(i)
    46.     swModel.AddCustomInfo2 name_ay(i), swCustomInfoText, """SW-Material@" & name_ay(i) & ".SLDPRT"""
    47. Next
    48. '~~~~~~~ parts_property ~~~~~~~
    49. Dim longstatus As Long, longwarnings As Long
    50. Dim retval As String
    51. Set Part = swApp.ActiveDoc
    52. path_name = Part.GetPathName
    53. TopDocPathSplit = Split(path_name, "") '分割
    54. TopDocName = TopDocPathSplit(UBound(TopDocPathSplit))
    55. Path_ = Left(path_name, Len(path_name) - Len(TopDocName))
    56. For n = 1 To i
    57.     Set Part = swApp.OpenDoc6(Path_ & name_ay(n) & ".SLDPRT", 1, 0, "", longstatus, longwarnings)
    58.     swApp.ActivateDoc2 name_ay(n) & ".SLDPRT", False, longstatus
    59.     Set swModel = swApp.ActiveDoc
    60.     '~~~ 注意 L1 設定 ~~~
    61.     L1 = InStrRev(name_ay(n), "_", , 0) '編號_名稱是以 "_" 之符號分隔,可依需要更改所需之符號
    62.     '~~~
    63.     code_part = Left(name_ay(n), L1 - 1) ' 編號
    64.     name_part = Right(name_ay(n), Len(name_ay(n)) - L1) '名稱
    65.     retval = swModel.DeleteCustomInfo("材質")
    66.     retval = swModel.AddCustomInfo3("", "材質", swCustomInfoText, """SW-Material@" & name_ay(n) & ".SLDPRT""")
    67.     retval = swModel.DeleteCustomInfo("名稱")
    68.     retval = swModel.AddCustomInfo3("", "名稱", swCustomInfoText, name_part)
    69.     retval = swModel.DeleteCustomInfo("編號")
    70.     retval = swModel.AddCustomInfo3("", "編號", swCustomInfoText, code_part)
    71.     swModel.Save
    72.     swApp.CloseDoc name_ay(n) & ".SLDPRT"
    73. Next
    74. End Function
    复制代码

Macro1.rar (7.28 KB, 下载次数: 154, 售价: 10 金币)   swp文件 (繁版)
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

5

主题

36

帖子

30

金币

天使

Rank: 2Rank: 2

积分
97
QQ
11#
发表于 2017-12-31 03:52:36 | 只看该作者
是喔!即時補上swp
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

21

帖子

24

金币

天使

Rank: 2Rank: 2

积分
83
QQ
12#
发表于 2017-12-31 04:36:19 | 只看该作者
谢谢工程师。
正在复制您的代码在对照修改,刷新发现您上传了SWP原文件,谢谢了。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

25

帖子

28

金币

天使

Rank: 2Rank: 2

积分
96
QQ
13#
发表于 2017-12-31 16:13:23 | 只看该作者
順便幫忙試試word轉譯的簡版是否可用!謝謝
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

22

帖子

24

金币

天使

Rank: 2Rank: 2

积分
72
QQ
14#
发表于 2018-1-1 04:34:10 | 只看该作者
工程师,经测试,复制您的SWP中的内容至word后用简繁转换功能转换后没用。打开您的SWP后查看代码的文字部分是乱码,复制到word转换后还是乱码。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

28

帖子

37

金币

天使

Rank: 2Rank: 2

积分
109
QQ
15#
发表于 2018-1-1 04:38:32 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

謝謝測試!那只能用繁版自行重打字了
會再重傳swp.
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

30

帖子

18

金币

混混

Rank: 1

积分
62
QQ
16#
发表于 2018-1-1 17:05:31 | 只看该作者

   经典案例图书
工程师,您又重传了SWP吗?
我看上传时间是刚上传,下载下来打开还是乱码。
因为我之前的文件,零部件是 代号_名称 的形式存档的,但标准件不是以这种格式存档的,所以我打开装配体后测试时报错了,不知道是因为文件存档名称的格式的问题还是什么问题。但是在读取标准件前已经遍历过了的打开过了的零件已经分离图号和名称成功了。我需要删除所有标准件后再测试下。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

33

帖子

40

金币

天使

Rank: 2Rank: 2

积分
121
QQ
17#
发表于 2018-1-1 21:50:06 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

工程师,我删除了所有标准件后测试,总装层下的的所有零件的图号和名称分离成功。
稍遗憾的是不能分离子装配体和子装配体下的零件的图号、名称。
Function SubAsm(AsmDoc, ConfString)
这些Function子程序代码我搞不清楚用法,想修改一下也没法下手。我还是需要多学习代码的知识了。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

23

帖子

22

金币

天使

Rank: 2Rank: 2

积分
87
QQ
18#
发表于 2018-1-1 22:08:19 | 只看该作者

   经典案例图书
謝謝測試.
有關子装配体和子装配体下的零件的图号名称,尚再找資料學習中.
N大手中若是有資料尚請提供分享.
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

36

帖子

42

金币

天使

Rank: 2Rank: 2

积分
123
QQ
19#
发表于 2018-1-2 04:19:59 | 只看该作者
工程师,我手是什么VBA的资料都没有,手上就只有一本VB的书,买了两年了,放在床头被狗啃坏了都没看。读书时还是DOS系统,这些编程语言都没学过,语法都搞不大清楚,现在只能寄希望于能从您和各位高人分享的精品文件中多学习以提高一点水平了。有问题时还请各位老大位多多指点了。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

31

帖子

17

金币

天使

Rank: 2Rank: 2

积分
75
QQ
20#
发表于 2018-1-2 07:25:49 | 只看该作者
工程师,我想起来了,之前好像工程师有分享过一个遍历装配体中零件数量把数量写入自定义属性的,从逻辑上分析的话,你的代码功能是否和工程师的差不多?是否可以两个结合下?
现在要我去新建一个文件基本上是不大现实的了,所以首先只能想想有没有类似功能的可以稍做修改来用。惭愧。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

30

帖子

15

金币

天使

Rank: 2Rank: 2

积分
80
QQ
21#
发表于 2018-1-2 13:49:09 | 只看该作者
謝謝提供信息,查找了解了!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-4-28 14:18 , Processed in 0.289299 second(s), 38 queries .

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

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

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