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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

批量更换图纸格式代码的问题?

[复制链接]

10

主题

72

帖子

97

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
228
QQ
跳转到指定楼层
楼主
发表于 2016-3-24 08:53:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swFilename As String
Dim swDraw As SldWorks.DrawingDoc
Dim swSheet As SldWorks.Sheet
Dim bRet As Boolean
Dim sPath As String
Dim nErrors As Long
Dim nWarnings As Long
Dim Response As String
Dim DocName As String
' Change sheet format location here
Public Const sTemplatePath As String = "D:solidworks模板要更换图纸格式"
Sub main()
Set swApp = Application.SldWorks
' Change folder location containing the drawings to be updated here
SheetFormat "D:SolidWorks模板要更换图纸", ".SLDDRW", True
End Sub
Sub SheetFormat(folder As String, ext As String, silent As Boolean)
Dim swDocTypeLong As Long
ext = UCase$(ext)
swDocTypeLong = Switch(ext = ".SLDDRW", swDocDRAWING, True, -1)
'If not a SW file, return
If swDocTypeLong = -1 Then
Exit Sub
End If
ChDir (folder)
Response = Dir(folder)
Do Until Response = ""
swFilename = folder & Response
If Right(UCase$(Response), 7) = ext Then
Set swModel = swApp.OpenDoc6(swFilename, swDocTypeLong, swOpenDocOptions_Silent, "", nErrors, nWarnings)
If swDocTypeLong = swDocDRAWING Then
Set swDraw = swModel
Set swSheet = swDraw.GetCurrentSheet
' Change Sheet format name here which you to put on the drawing sheet.
sPath = sTemplatePath & "A3-b.slddrt"
bRet = swDraw.SetupSheet4(swSheet.GetName, swDwgPaperAsize, swDwgTemplateCustom, 1, 1, True, sPath, 0.2794, 0.2159, "Default")
End If
swModel.ViewZoomtofit2
swModel.ForceRebuild3 False
swModel.Save2 silent
swApp.CloseDoc swModel.GetTitle
End If
Response = Dir
Loop
MsgBox "Drawing(s) Sheet Fomat Updated!!"
End Sub
换了 格式 还是 第三视角的 不是我们用第一视角的 这个我改过来
为什么更换 后 轴测图 比例变了 怎么改代码不让他变??? 谢谢大家了
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享教程|习题|模型|技巧 点赞点赞11567 拍砖拍砖134
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

22

主题

80

帖子

118

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
320
QQ
沙发
发表于 2016-3-24 08:55:48 | 只看该作者
由于目前本人是菜鸟级,故不能发贴。但我本人是名SW二次开发爱好者,真心想结交一些志同道合的朋友,共同学习开发上的难题与技巧。目前我已开发了部分,例:
批量文件夹零件模型生成展开料.SWP
批量文件夹打印.swp,
批量换图纸格式.swp,
批量修改自定义属性.swp
在此我只想与有共同爱好的朋友交流学习,共同进步!
欢迎加我的QQ:342061880,也可以加我的群: 451984398
在此申明:仅学习交流。
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

13

主题

65

帖子

96

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
253
QQ
板凳
发表于 2016-3-24 08:56:37 | 只看该作者
请大家 帮我看看 怎么改啊  谢谢了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

17

主题

80

帖子

147

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
331
QQ
地板
发表于 2016-3-24 08:57:40 | 只看该作者
请版主 帮忙啊  高手  指导一下 ? 谢了
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

11

主题

68

帖子

111

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
256
QQ
5#
发表于 2016-3-24 09:00:54 | 只看该作者

   经典案例图书
我顶上去
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

13

主题

66

帖子

84

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
220
QQ
6#
发表于 2016-3-24 09:03:25 | 只看该作者
Sub 工程图换图框()
If Dir(指定路径 & "" & 文件名 & ".sldprt", vbHidden + vbReadOnly + vbSystem) = "" And _
   Dir(指定路径 & "" & 文件名 & ".sldasm", vbHidden + vbReadOnly + vbSystem) = "" Then
模型数量 = 缺模型数量 + 1
xlsheet.RANGE("B" & i + 2).Value = "无模型"
xlsheet.RANGE("A" & i + 2).Interior.Color = vbYellow
Exit Sub
End If
'On Error Resume Next
'
Set swApp = CreateObject("sldworks.application")
Set Part = swApp.ActiveDoc
Set Part = swApp.OpenDoc6(指定路径 & "" & strPath, 3, 0, "", longstatus, longwarnings)  ''打开返回值 strpath的SW文件
Set 当前页面 = Part.GetCurrentSheet
图纸属性 = 当前页面.GetProperties
图纸名称 = 当前页面.GetName
模板后缀 = ".slddrt"
If 图纸属性(5) * 1000 = 210 And 图纸属性(6) * 1000 = 297 Then
  幅面 = "A4"
  ElseIf 图纸属性(5) * 1000 = 420 And 图纸属性(6) * 1000 = 297 Then
   幅面 = "A3"
   ElseIf 图纸属性(5) * 1000 = 594 And 图纸属性(6) * 1000 = 420 Then
    幅面 = "A2"
    ElseIf 图纸属性(5) * 1000 = 841 And 图纸属性(6) * 1000 = 594 Then
     幅面 = "A1"
     ElseIf 图纸属性(5) * 1000 = 1189 And 图纸属性(6) * 1000 = 841 Then
      幅面 = "A0"
End If
If Dir(指定路径 & &quot;&quot; & 文件名 & &quot;.sldprt&quot;, vbHidden + vbReadOnly + vbSystem) <> &quot;&quot; Then
新模板名称 = 幅面 & 模板后缀
ElseIf Dir(指定路径 & &quot;&quot; & 文件名 & &quot;.sldasm&quot;, vbHidden + vbReadOnly + vbSystem) <> &quot;&quot; Then
新模板名称 = 幅面 & &quot;(装)&quot; & 模板后缀
End If
'Part.EditTemplate
'Part.EditSketch
'Part.ClearSelection2 True
'Part.EditSheet
'Part.EditSketch
Part.ClearSelection2 True
boolstatus = Part.SetupSheet5(图纸名称, 图纸属性(0), 图纸属性(1), 图纸属性(2), 图纸属性(3), 图纸属性(4), 新模板名称, 图纸属性(5), 图纸属性(6), &quot;默认&quot;, True)
longstatus = Part.SaveAs3(文件名 & &quot;.slddrw&quot;, 0, 0)
swApp.CloseDoc 指定路径 & &quot;&quot; & 文件名 & &quot;.slddrw&quot;
'On Error GoTo 0
完成数量 = 完成数量 + 1
End Sub
我的已经编好了
发一段关键代码,你可以参考一下。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

25

主题

73

帖子

159

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
341
QQ
7#
发表于 2016-3-24 09:08:14 | 只看该作者

   经典案例图书
谢谢 相互学习一下
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

84

帖子

59

金币

天使

Rank: 2Rank: 2

积分
194
QQ
8#
发表于 2016-3-24 09:08:15 | 只看该作者
好东西
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

47

帖子

570

金币

传奇

Rank: 8Rank: 8

积分
3481

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

9#
发表于 2016-4-2 21:39:28 | 只看该作者
bRet = swDraw.SetupSheet4(swSheet.GetName, swDwgPaperAsize, swDwgTemplateCustom, 1, 1, True, sPath, 0.2794, 0.2159, "Default"),这条命令的问题。swSheet.GetName,为工程图纸的名称(非工程图的名称),swDwgPaperAsize为原图纸尺寸,swDwgTemplateCustom为原图纸图框尺寸,1, 1,为现在图纸比例,0,0的话保持原来的不变,sPath,为新模板名称,0.2794, 0.2159, 为新图纸的尺寸,一般要和新模板的尺寸一直。"Default"为配置。要写比例不变,把1, 1,变为0,0。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-5-4 17:45 , Processed in 0.177640 second(s), 33 queries .

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

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

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