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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2747|回复: 17
打印 上一主题 下一主题

在SolidWorks2022装配体中插入右栏设计库的零件,同时把零件及同名工程图同时复制...

  [复制链接]

48

主题

297

帖子

1645

金币

传奇

Rank: 8Rank: 8

积分
4022

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

跳转到指定楼层
楼主
 楼主| 发表于 2025-3-1 08:21:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

   经典图书
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Const LIBRARY_PATH = "D:\设计库\" ' 修改为实际库路径

Sub Main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc

    If Not IsAssembly(swModel) Then Exit Sub

    Dim comp As Component2
    For Each comp In GetComponents(swModel)
        ProcessComponent comp
    Next
End Sub

Function IsAssembly(doc As ModelDoc2) As Boolean
    IsAssembly = (doc.GetType = swDocumentTypes_e.swDocASSEMBLY)
    If Not IsAssembly Then MsgBox "请先打开装配体文件!"
End Function

Function GetComponents(doc As ModelDoc2) As Variant
    Dim vComps As Variant
    vComps = doc.GetComponents(True)
    GetComponents = vComps
End Function

Sub ProcessComponent(comp As Component2)
    If comp.IsVirtual Then Exit Sub

    Dim srcPath As String
    srcPath = comp.GetPathName

    If IsFromLibrary(srcPath) Then
        Dim destFolder As String
        destFolder = GetAssemblyFolder(swModel)

        ' 复制零件文件
        Dim prtDest As String
        prtDest = CopyFileWithRename(srcPath, destFolder)

        ' 查找并复制工程图
        CopyDrawing srcPath, destFolder

        ' 更新装配体引用(可选)
        swModel.ReplaceReferencedDocument srcPath, prtDest, False
    End If
End Sub

Function IsFromLibrary(path As String) As Boolean
    IsFromLibrary = (InStr(1, path, LIBRARY_PATH, vbTextCompare) > 0)
End Function

Function GetAssemblyFolder(doc As ModelDoc2) As String
    Dim fullPath As String
    fullPath = doc.GetPathName
    GetAssemblyFolder = Left(fullPath, InStrRev(fullPath, "\"))
End Function

Function CopyFileWithRename(src As String, destFolder As String) As String
    Dim fso As Object: Set fso = CreateObject("Scripting.FileSystemObject")
    Dim baseName As String: baseName = fso.GetBaseName(src)
    Dim ext As String: ext = fso.GetExtensionName(src)

    Dim counter As Long: counter = 1
    Dim destPath As String
    Do
        destPath = destFolder & baseName & IIf(counter > 1, "_" & counter, "") & "." & ext
        counter = counter + 1
    Loop While fso.FileExists(destPath)

    fso.CopyFile src, destPath
    CopyFileWithRename = destPath
End Function

Sub CopyDrawing(prtPath As String, destFolder As String)
    Dim fso As Object: Set fso = CreateObject("Scripting.FileSystemObject")
    Dim drwPath As String: drwPath = fso.BuildPath(fso.GetParentFolderName(prtPath), fso.GetBaseName(prtPath)) & ".SLDDRW"

    If fso.FileExists(drwPath) Then
        CopyFileWithRename drwPath, destFolder
    End If
End Sub

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

使用道具 举报

48

主题

297

帖子

1645

金币

传奇

Rank: 8Rank: 8

积分
4022

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

沙发
 楼主| 发表于 2025-3-1 08:25:51 | 只看该作者
修改库路径:将代码中的LIBRARY_PATH改为实际设计库路径

创建快捷键:

工具 → 自定义 → 键盘

搜索"宏" → 分配快捷键(如Ctrl+Shift+C)

运行逻辑:

打开装配体文件

插入设计库零件

运行宏 → 自动完成:

✅ 识别库零件

✅ 复制零件到装配体目录

✅ 自动查找同名工程图并复制

✅ 智能处理重名文件

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

使用道具 举报

0

主题

352

帖子

715

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2157

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

板凳
发表于 2025-3-1 10:10:21 | 只看该作者

   经典图书
楼主很专业,写得很好!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

9

主题

328

帖子

754

金币

VIP特别用户组

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
3450

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

地板
发表于 2025-3-1 13:53:14 | 只看该作者
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

322

帖子

288

金币

传奇

Rank: 8Rank: 8

积分
3857

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

5#
发表于 2025-3-1 15:14:09 | 只看该作者

   经典案例图书
For Each comp In GetComponents(swModel)提示运行时错误424,要求对象
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

346

帖子

1317

金币

传奇

Rank: 8Rank: 8

积分
4251

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

6#
发表于 2025-3-1 15:47:16 | 只看该作者
这些代码怕不是AI写的吧
公-众-号:创客者V2.0
回复 支持 反对

使用道具 举报

4

主题

124

帖子

217

金币

堂主

Rank: 4

积分
931

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

7#
发表于 2025-3-3 14:15:04 | 只看该作者

   经典案例图书
有人试过吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

1744

帖子

1175

金币

传奇

Rank: 8Rank: 8

积分
5873

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

8#
发表于 2025-3-3 15:06:25 | 只看该作者
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

808

帖子

9

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2208

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

9#
发表于 2025-3-4 22:19:57 | 只看该作者
写的不错没敢写
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

6

帖子

129

金币

天使

Rank: 2Rank: 2

积分
147
10#
发表于 2025-4-17 22:24:30 | 只看该作者

   经典图书
有人用过吗?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

322

帖子

288

金币

传奇

Rank: 8Rank: 8

积分
3857

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

11#
发表于 2025-4-18 08:05:09 | 只看该作者
楼主辛苦了!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

419

帖子

82

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1604

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

12#
发表于 2025-4-18 13:12:09 | 只看该作者
For Each comp In GetComponents(swModel)提示运行时错误424,要求对象
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

9

主题

889

帖子

450

金币

传奇

Rank: 8Rank: 8

积分
3125

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

13#
发表于 2025-4-20 20:19:47 | 只看该作者
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

7

主题

808

帖子

9

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2208

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

14#
发表于 2025-5-4 08:18:36 | 只看该作者
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

70

帖子

103

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
356

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

15#
发表于 2025-5-4 13:33:05 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

For Each comp In GetComponents(swModel)提示运行时错误424,要求对象
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

352

帖子

715

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2157

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

16#
发表于 2025-5-7 10:27:16 | 只看该作者

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

使用道具 举报

0

主题

238

帖子

166

金币

堂主

Rank: 4

积分
960

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

17#
发表于 2025-5-8 17:47:00 | 只看该作者
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

没图,不知道是什么!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

28

帖子

67

金币

天使

Rank: 2Rank: 2

积分
198

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

18#
发表于 昨天 16:31 | 只看该作者

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

使用道具 举报

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

本版积分规则

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

手机版|小黑屋| GMT+8, 2025-5-24 09:58 , Processed in 0.254650 second(s), 23 queries , Memcache On.

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

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

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