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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教批量更换绘图标准的问题

  [复制链接]

8

主题

26

帖子

266

金币

VIP用户组

Rank: 100Rank: 100Rank: 100Rank: 100

积分
512

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

跳转到指定楼层
楼主
 楼主| 发表于 2023-3-3 16:48:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单个文件更换绘图标准时,这个宏是有效的
Sub 更改绘图标准()
DimswApp As SldWorks.SldWorks
Dimpart As SldWorks.ModelDoc2
DimswModel As SldWorks.ModelDoc2
DimFN, TN As String
FN = InputBox("请输入文件地址")
FN = Replace(FN, Chr(34), "")
Debug.Print FN
TN = InputBox("请输入绘图标准地址")
TN = Replace(TN, Chr(34), "")
Debug.Print TN
SetswApp = Application.SldWorks
'Set part = swApp.OpenDoc(FN, 1) '开启零件图,1为零件图,2为装配图,3为工程图
'Set part = swApp.OpenDoc(FN, 2) '开启装配图,1为零件图,2为装配图,3为工程图
Set part = swApp.OpenDoc(FN, 3) '开启工程图,1为零件图,2为装配图,3为工程图
Set swModel = swApp.ActiveDoc
boolstatus =swModel.Extension.LoadDraftingStandard(TN)
swModel.ForceRebuild3 (True)
swModel.Save '保存
swApp.CloseDoc (FN) '关闭零件
End Sub
返回的boolstatus是true

但是遍历文件夹和子文件夹对工程图更换绘图标准时就不中了,代码如下:
Dim arrFiles()
Dim cntFiles%
Dim brrFiles()
Dim FN As String
Public Sub ListAllFiles()
   
       Dim strPath$
       Dim i%
       Dim j%
       Dim fso As New FileSystemObject, fd As Folder
       Dim stemp As String
       Dim sp As String
       Dim DN As String
Dim TN As String
       DN = InputBox("请输入文件夹地址") '复制文件夹地址为文本
       TN = InputBox("请输入绘图标准地址") '复制文件夹地址为文本
     If TN = "" Then Exit Sub
     TN = Replace(TN, Chr(34), "") '去掉文件名的引号
     
       ReDim arrFiles(1 To 1000)
      ReDim brrFiles(1 To 1000)
       cntFiles = 0
       Set fd = fso.GetFolder(DN)
        SearchFiles fd
       ReDim Preserve arrFiles(1 To cntFiles)
       For i = 1 To cntFiles
      If arrFiles(i) <> "" Then
      j = j + 1
      brrFiles(j) = arrFiles(i)
    FN = brrFiles(j)
           Debug.Print FN
         
   更改绘图标准 FN
         
      Else
      End If
      
       Next i
  
   
      
End Sub
Sub SearchFiles(ByVal fd As Folder)
   Dim fl As File
   Dim sfd As Folder
   Dim c As String
   Dim d As String
   For Each fl In fd.Files
     cntFiles = cntFiles + 1
     If cntFiles > UBound(arrFiles) Then ReDim Preserve arrFiles(1 TocntFiles + 1000)
     
     '此处可加入文件名称或类型的判断
     'c = f1.Path
     d = Right(fl.Path, 7)
     
     'If d = ".SLDPRT" Then arrFiles(cntFiles) = fl.Path '此处筛选出零件,与之后的1对应
If d = ".SLDDRW" ThenarrFiles(cntFiles) = fl.Path '此处筛选出工程图,与之后的3对应
‘If d = ".SLDASM" ThenarrFiles(cntFiles) = fl.Path '此处筛选出装配体,与之后的2对应
   
   Next fl
   
   If fd.SubFolders.Count = 0 Then Exit Sub
   
   For Each sfd In fd.SubFolders
     SearchFiles sfd
   Next
   
End Sub
Sub 更改绘图标准(ByVal FNAs String)
DimswApp As SldWorks.SldWorks
Dimpart As SldWorks.ModelDoc2
DimswModel As SldWorks.ModelDoc2
SetswApp = Application.SldWorks
'Set part = swApp.OpenDoc(FN, 1) '开启零件图,1为零件图,2为装配图,3为工程图
'Set part = swApp.OpenDoc(FN, 2) '开启装配图,1为零件图,2为装配图,3为工程图
Set part = swApp.OpenDoc(FN, 3) '开启工程图,1为零件图,2为装配图,3为工程图
Set swModel = swApp.ActiveDoc
boolstatus =swModel.Extension.LoadDraftingStandard(TN)
swModel.ForceRebuild3 (True)
Debug.Print boolstatus
swModel.Save '保存
swApp.CloseDoc (FN) '关闭零件
End Sub
Dim arrFiles()
Dim cntFiles%
Dim brrFiles()
Dim FN As String
Public Sub ListAllFiles()
   
       Dim strPath$
       Dim i%
       Dim j%
       Dim fso As New FileSystemObject, fd As Folder
       Dim stemp As String
       Dim sp As String
       Dim DN As String
Dim TN As String
       DN = InputBox("请输入文件夹地址") '复制文件夹地址为文本
       TN = InputBox("请输入绘图标准地址") '复制文件夹地址为文本
     If TN = "" Then Exit Sub
     TN = Replace(TN, Chr(34), "") '去掉文件名的引号
     
       ReDim arrFiles(1 To 1000)
      ReDim brrFiles(1 To 1000)
       cntFiles = 0
       Set fd = fso.GetFolder(DN)
        SearchFiles fd
       ReDim Preserve arrFiles(1 To cntFiles)
       For i = 1 To cntFiles
      If arrFiles(i) <> "" Then
      j = j + 1
      brrFiles(j) = arrFiles(i)
    FN = brrFiles(j)
           Debug.Print FN
         
   更改绘图标准 FN
         
      Else
      End If
      
       Next i
  
   
      
End Sub
Sub SearchFiles(ByVal fd As Folder)
   Dim fl As File
   Dim sfd As Folder
   Dim c As String
   Dim d As String
   For Each fl In fd.Files
     cntFiles = cntFiles + 1
     If cntFiles > UBound(arrFiles) Then ReDim Preserve arrFiles(1 TocntFiles + 1000)
     
     '此处可加入文件名称或类型的判断
     'c = f1.Path
     d = Right(fl.Path, 7)
     
     'If d = ".SLDPRT" Then arrFiles(cntFiles) = fl.Path '此处筛选出零件,与之后的1对应
If d = ".SLDDRW" ThenarrFiles(cntFiles) = fl.Path '此处筛选出工程图,与之后的3对应
‘If d = ".SLDASM" ThenarrFiles(cntFiles) = fl.Path '此处筛选出装配体,与之后的2对应
   
   Next fl
   
   If fd.SubFolders.Count = 0 Then Exit Sub
   
   For Each sfd In fd.SubFolders
     SearchFiles sfd
   Next
   
End Sub
Sub 更改绘图标准(ByVal FNAs String)
DimswApp As SldWorks.SldWorks
Dimpart As SldWorks.ModelDoc2
DimswModel As SldWorks.ModelDoc2
SetswApp = Application.SldWorks
'Set part = swApp.OpenDoc(FN, 1) '开启零件图,1为零件图,2为装配图,3为工程图
'Set part = swApp.OpenDoc(FN, 2) '开启装配图,1为零件图,2为装配图,3为工程图
Set part = swApp.OpenDoc(FN, 3) '开启工程图,1为零件图,2为装配图,3为工程图
Set swModel = swApp.ActiveDoc
boolstatus =swModel.Extension.LoadDraftingStandard(TN)
swModel.ForceRebuild3 (True)
Debug.Print boolstatus
swModel.Save '保存
swApp.CloseDoc (FN) '关闭零件
End Sub
返回的boolstatus是false
求指教

评分

参与人数 1威望 +5 金币 +52 贡献 +5 收起 理由
精工机械 + 5 + 52 + 5 赞一个!

查看全部评分

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

使用道具 举报

0

主题

111

帖子

249

金币

堂主

Rank: 4

积分
759

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

沙发
发表于 2023-3-6 06:51:16 | 只看该作者
楼主太有才了,膜拜中……
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

2

主题

33

帖子

193

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
324
QQ
板凳
发表于 2023-3-6 09:52:23 | 只看该作者
很不错,顶一下!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

479

帖子

526

金币

长老

Rank: 6Rank: 6Rank: 6

积分
2559

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

地板
发表于 2023-3-6 13:04:42 | 只看该作者
顶一下,坐等高手!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

111

帖子

249

金币

堂主

Rank: 4

积分
759

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

5#
发表于 2023-3-6 21:14:19 | 只看该作者

   经典案例图书
楼主太有才了,膜拜中……
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

1

主题

29

帖子

108

金币

VIP用户组

Rank: 100Rank: 100Rank: 100Rank: 100

积分
731

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

6#
发表于 2024-4-14 10:58:09 | 只看该作者
求解,有人做出来求发
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

3

主题

1128

帖子

237

金币

传奇

Rank: 8Rank: 8

积分
3795

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

7#
发表于 2024-4-14 11:57:58 | 只看该作者

   经典案例图书
顶一下,坐等高手!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-5-2 23:38 , Processed in 0.195970 second(s), 34 queries .

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

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

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