找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 51551|回复: 170
打印 上一主题 下一主题

[分享] 【答坛友】宏,更改绘图标准

  [复制链接]
跳转到指定楼层
1
发表于 2015-1-23 08:17:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题来源:https://www.icax.org/thread-955249-1-1.html

条件:1、SOLIDWORKS零件、工程图或装配体环境
           2、首先在SW选项中,另存为绘图标准文件,将绘图标准文件(*.sldstd类型)放至本宏同一目录!
2011与2013版测试通过,如有提示错误,请调试宏,在工具/引用中,重新添加引用。

密码如下:
游客,如果您要查看本帖隐藏内容请回复

代码如下:
  1. ' ******************************************************************************
  2. '宏名:更改绘图标准
  3. '作者: qiminger  QQ:261744899
  4. '条件:1、SolidWorks零件、工程图或装配体环境
  5. '      2、首先在SW选项中,另存为绘图标准文件,将绘图标准文件(*.sldstd类型)放至本宏同一目录!
  6. ' ******************************************************************************
  7. Dim swApp As Object
  8. Dim Part As Object
  9.     Dim 本宏目录 As String
  10.     Dim 标准文件 As String
  11.     Dim 标准文件全名 As String
  12. Sub main()
  13. Set swApp = Application.SldWorks
  14. Set Part = swApp.ActiveDoc
  15.     本宏目录 = swApp.GetCurrentMacroPathName '获得本宏文件路径+文件名
  16.     本宏目录 = Left(本宏目录, InStrRev(本宏目录, ""))  '提出路径
  17.     标准文件 = Dir(本宏目录 & "*.sldstd") '搜寻标准文件
  18.     标准文件全名 = 本宏目录 & 标准文件
  19.     If 标准文件 = "" Then
  20.         MsgBox "没有绘图标准文件,请把绘图标准文件(*.sldstd类型)放至本宏同一目录!"
  21.         Exit Sub
  22.     End If
  23.         If 标准文件 <> "" Then Part.Extension.LoadDraftingStandard 标准文件全名
  24. Part.ForceRebuild3 False
  25. Part.ViewZoomtofit2
  26. Part.Save2 Silent
  27. End Sub
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏16 分享淘帖 赞一下!赞一下!1
2
发表于 2015-1-23 10:46:37 | 只看该作者
本帖最后由 gt.adan 于 2015-1-23 11:53 编辑

謝謝前輩分享~~
  1. Sub main()
  2. Set swApp = Application.SldWorks
  3. Set Part = swApp.ActiveDoc
  4.     macropath = swApp.GetCurrentMacroPathName
  5.     macropath = Left(macropath, InStrRev(macropath, ""))
  6.     stdfile = macropath & Dir(macropath & "*.sldstd")
  7.     MsgBox stdfile
  8.     If stdfile = "" Then
  9.         MsgBox "No sw-standard files exist!"
  10.     Else
  11.         Part.Extension.LoadDraftingStandard stdfile
  12.     End If
  13. Part.ForceRebuild3 False
  14. Part.Save2 Silent
  15. End Sub
复制代码


3
发表于 2015-1-23 11:23:36 | 只看该作者
本帖最后由 vincent3166 于 2015-1-23 11:30 编辑

{:soso_e183:}  发帖回答的风格,哈哈。
英雄所见略同(自我感觉良好一下)

支持~规范和和谐的网络讨论习惯和氛围~
4
发表于 2015-1-23 11:43:16 | 只看该作者
顺带问一下,这样的形式,把代码贴在论坛上的做事,是如何实现的?请指教。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
5
发表于 2015-1-23 11:56:45 | 只看该作者
vincent3166 发表于 2015-1-23 11:43
顺带问一下,这样的形式,把代码贴在论坛上的做事,是如何实现的?请指教。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
6
发表于 2015-1-23 12:22:27 | 只看该作者

thanks ~`
so good ~
7
发表于 2015-1-24 08:20:10 | 只看该作者
谢谢
8
发表于 2015-1-26 13:02:28 | 只看该作者
谢谢!
9
发表于 2015-1-29 10:39:49 | 只看该作者
谢谢大声的解答。。。我这还有一件事请您帮忙--前段时间看到一位版主分享的关于更换sw图纸模板格式的宏代码。。我也是受益匪浅,在此请问大神能否把两个宏程序结合在一起,这样用起来更加方便,那位版主的宏程序如下:Sub Main()
Set swApp = Application.SldWorks
Set Drawing = swApp.ActiveDoc
If Drawing.GetType <> 3 Then Exit Sub
RetoreSheetName = Drawing.GetCurrentSheet.GetName
SheetName = Drawing.GetSheetNames
SheetCount = Drawing.GetSheetCount
For i = 0 To SheetCount - 1
    Drawing.ActivateSheet SheetName(i)
    swTemplate = Drawing.GetCurrentSheet.GetTemplateName
    swTemplatePath = Split(swTemplate, "\")
    swTemplate = swTemplatePath(UBound(swTemplatePath))
    vSheetProps = Drawing.GetCurrentSheet.GetProperties()
    Drawing.SetupSheet4 Drawing.GetCurrentSheet.GetName, 0, 0, vSheetProps(2), vSheetProps(3), vSheetProps(4), "", 1, 1, ""
    Drawing.SetupSheet4 Drawing.GetCurrentSheet.GetName, 12, 12, vSheetProps(2), vSheetProps(3), vSheetProps(4), swTemplate, 0, 0, ""
    vSheetProps = Drawing.GetCurrentSheet.GetProperties()
Next
Drawing.ActivateSheet RetoreSheetName
End Sub
10
发表于 2015-1-29 13:42:11 | 只看该作者
天真无邪 发表于 2015-1-29 10:39
谢谢大声的解答。。。我这还有一件事请您帮忙--前段时间看到一位版主分享的关于更换sw图纸模板格式的宏代码 ...

我对宏了解的也不算好,替换格式代码主要在for循环中,把替换标准代码插入里面即可。
如下:
  1. Sub main()
  2. Set swApp = Application.SldWorks
  3. Set Drawing = swApp.ActiveDoc
  4. If Drawing.GetType <> 3 Then Exit Sub
  5. RetoreSheetName = Drawing.GetCurrentSheet.GetName
  6. SheetName = Drawing.GetSheetNames
  7. SheetCount = Drawing.GetSheetCount

  8.     '更改绘图标准+++++++++++++++
  9.     Dim 本宏目录 As String
  10.     Dim 标准文件 As String
  11.     Dim 标准文件全名 As String
  12.     本宏目录 = swApp.GetCurrentMacroPathName '获得本宏文件路径+文件名
  13.     本宏目录 = Left(本宏目录, InStrRev(本宏目录, ""))  '提出路径
  14.     标准文件 = Dir(本宏目录 & "*.sldstd") '搜寻标准文件
  15.     标准文件全名 = 本宏目录 & 标准文件
  16.     If 标准文件 = "" Then
  17.         MsgBox "没有绘图标准文件,请把绘图标准文件(*.sldstd类型)放至本宏同一目录!"
  18.         Exit Sub
  19.     End If
  20.     '+++++++++++++++
  21.    
  22. For i = 0 To SheetCount - 1
  23.     Drawing.ActivateSheet SheetName(i)
  24.     swTemplate = Drawing.GetCurrentSheet.GetTemplateName
  25.     swTemplatePath = Split(swTemplate, "")
  26.     swTemplate = swTemplatePath(UBound(swTemplatePath))
  27.     vSheetProps = Drawing.GetCurrentSheet.GetProperties()
  28.     Drawing.SetupSheet4 Drawing.GetCurrentSheet.GetName, 0, 0, vSheetProps(2), vSheetProps(3), vSheetProps(4), "", 1, 1, ""
  29.     Drawing.SetupSheet4 Drawing.GetCurrentSheet.GetName, 12, 12, vSheetProps(2), vSheetProps(3), vSheetProps(4), swTemplate, 0, 0, ""
  30.     vSheetProps = Drawing.GetCurrentSheet.GetProperties()
  31.    
  32.     '更改绘图标准+++++++++++++++
  33.         If 标准文件 <> "" Then Drawing.Extension.LoadDraftingStandard 标准文件全名
  34.         Drawing.Save2 Silent
  35.     '+++++++++++++++
  36.    
  37. Next
  38. Drawing.ActivateSheet RetoreSheetName
  39. End Sub
复制代码


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

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-22 09:22 , Processed in 0.028334 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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