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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

跪求SW工程图转PDF和CAD的宏!!!!!!

  [复制链接]

1

主题

23

帖子

563

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1563

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

跳转到指定楼层
楼主
 楼主| 发表于 2018-12-7 08:17:27 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
各位大神,小弟需要SW工程图转PDF和CAD的宏!!!!!!哪位大哥有的麻烦发下本人扣扣邮箱,感谢。766731497@qq.com
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享教程|习题|模型|技巧 点赞点赞 拍砖拍砖
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

1

主题

23

帖子

563

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1563

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

沙发
 楼主| 发表于 2018-12-7 08:41:54 | 显示全部楼层
各位大神,走过路过,有这个宏的麻烦发一下,小弟急用!!!
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

1

主题

23

帖子

563

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1563

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

板凳
 楼主| 发表于 2018-12-8 08:30:31 | 显示全部楼层

试了下,说语句错误,可能我哪里弄错了,不过我找到一个我能用的了:
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim PathStr As String
Dim FName(500) As String, FNum As Long

Sub main()
Dim i As Long
Dim PathStr0 As String, PathStr1 As String
Dim PathStr2 As String, PathStr3 As String, PathStr4 As String, PahtStr5 As String
Dim L As Long, L1 As Long
PathStr = InputBox("请输入需要转的工程图所在位置")
Call Showfilelist(PathStr)
Set swApp = Application.SldWorks

For i = 0 To FNum - 1
PathStr0 = PathStr & "\" & FName(i)
Set Part = swApp.OpenDoc6(PathStr0, 3, 0, "", longstatus, longwarnings)
L = Len(PathStr0)
PathStr1 = Left(PathStr0, L - 7) & ".DWG"
PathStr2 = Left(PathStr0, L - 7) & ".PDF"
longstatus = Part.SaveAs3(PathStr1, 0, 0)
longstatus = Part.SaveAs3(PathStr2, 0, 0)

Set Part = Nothing

L1 = Len(FName(i))
PathStr3 = Left(FName(i), L1 - 7) & " - 图纸1"
PathStr4 = Left(FName(i), L1 - 7) & " - 图纸2"
PathStr5 = Left(FName(i), L1 - 7) & " - 图纸3"

swApp.CloseDoc PathStr3
swApp.CloseDoc PathStr4
swApp.CloseDoc PathStr5
Next i

End Sub

Private Sub Showfilelist(folderspec As String)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.Files
FNum = 0 '清零
For Each f1 In fc
If InStr(f1.Name,"SLDDRW") > 0 Then
FName(FNum) = f1.Name
FNum = FNum + 1
End If
Next
End Sub                                                                                                                                             

另外,附上我找到的图号分离宏:
Dim a As Integer
Dim b As String
Dim m As String
Dim e As String
Dim k As String
Dim t As String
Dim c As String
Dim j As Integer
Dim strmat As String
Dim tempvalue As String
Dim Part As Object
Dim swApp As SldWorks.SldWorks
Dim swModelDoc As SldWorks.ModelDoc2
Dim swConfig As SldWorks.Configuration
Dim CustPropMgr As SldWorks.CustomPropertyManager
Dim swModel As SldWorks.ModelDoc2

Sub main()
Set swApp = Application.SldWorks
Set swModelDoc = swApp.ActiveDoc
Set swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration
Set swModel = swApp.ActiveDoc
Set CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguration.Name) '配置特定延伸

'设定变量
c = swApp.ActiveDoc.GetTitle() '零件名
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格,也可换成其他符号

If a > 0 Then
       k = Left(c, a)
       t = Left(LTrim(e), 3)
       If t = "GBT" Then
             e = "GB/T" + Mid(k, 4)
       Else
             e = k
       End If
       b = Mid(c, a + 2)
       t = Right(c, 7)
       If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
             j = Len(b) - 7 '消除后缀(区分大小写,即含4种)
       Else
             j = Len(b)
       End If
       m = Left(b, j)
End If
'删除栏  CustPropMgr.Delete ("PartName")
CustPropMgr.Delete ("PartName")
CustPropMgr.Delete ("Number")

'新增
CustPropMgr.Add2 "Number", swCustomInfoText, e
CustPropMgr.Add2 "PartName", swCustomInfoText, m
CustPropMgr.Add2 "数量", swCustomInfoText, ""
CustPropMgr.Add2 "Material", swCustomInfoText, strmat
CustPropMgr.Add2 "Weight", swCustomInfoText, ""
CustPropMgr.Add2 "总重", swCustomInfoText, ""
CustPropMgr.Add2 "Description", swCustomInfoText, ""

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

使用道具 举报

1

主题

23

帖子

563

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1563

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

地板
 楼主| 发表于 2018-12-10 08:09:33 | 显示全部楼层
suzhanpeng 发表于 2018-12-8 09:26
该宏需要你在打开工程图的情况下执行,出错可能是我注释的那一句的注释符号错了!去掉就行了!

用我发现的那个宏,运行后,复制黏贴目标文件夹路径,可以把目标文件夹内所有工程图转为CAD和PDF。批量转换,而且不用打开工程图。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-4-29 03:34 , Processed in 0.149903 second(s), 32 queries .

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

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

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