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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

好品数字
好品数字
查看: 3032|回复: 18

自动工程图宏--自动建立带有6个标准视图和4个轴测视图的工程图文件

  [复制链接]

11

主题

67

帖子

73

金币

天使

Rank: 2Rank: 2

积分
179
QQ
发表于 2016-6-30 00:39:56 | 显示全部楼层 |阅读模式
'条件:当前开启零件或装配图
'结果:自动建立带有6个标准视图和4个轴测视图的工程图文件,并保存及另存为同名加后缀6+4的DWG文件
'注意:1工程图6+4.DRWDOT模板文件与文件同目录
2.如在模型图中更新前视视图,则得到理想的主视图,得到理想的DWG
原理:根据工程图模板建立空白工程图文件,插入模型
重新对齐和调整位置避免视图重叠
保存工程图
另存为DWG
083909vg2lsjbjssnzswan.png
autodraw.rar (46.55 KB, 下载次数: 71)
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

16

主题

79

帖子

157

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
341
QQ
发表于 2016-6-30 07:42:43 | 显示全部楼层
    ' ******************************************************************************
    ' autodraw.swp - By PYCZT, Copyright 2016-2018  writed on 06/28/16
    ' Notes: Templatesfile must be in same directory as macro file  注意:工程图6+4.DRWDOT模板文件与文件同目录
    '条件:当前开启零件或装配图
    '结果:自动建立带有6个标准视图和4个轴测视图的工程图文件,并保存和另存为同名加后缀6+4的DWG文件
    '如在模型图中更新前视视图,则得到理想的主视图,得到理想的DWG
    '******************************************************************************
    Dim swApp As Object
    Dim swModel As Object
    Dim swDraw As Object
    Dim swModelName As String
    Dim Templatesfile As String
    Dim boolstatus As Boolean
    Dim swView As Object
    Dim vOutline()    As Variant
    Dim vPos()        As Variant
    Dim nNumView      As Long
    Dim box(3)     As Single
    Dim longstatus As Long, longwarnings As Long
    Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    swModelName = swModel.GetPathName      '读取当前SW模型文档名(含路径)

    Templatesfile = swApp.GetCurrentMacroPathName             ' Get macro path+filename 取得路径和名称
    Templatesfile = Left$(Templatesfile, Len(Templatesfile) - 12) + "工程图6+4.DRWDOT"    ' Set  Templates file name 设工程图模板名称
    Set swDraw = swApp.NewDocument(Templatesfile, 0, 0, 0)   '以模板建立工程图
    boolstatus = swDraw.InsertModelInPredefinedView(swModelName)  '在工程图中插入当前的模型
    '四个轴测图取消对齐关系(重新定位)
    boolstatus = swDraw.ActivateView("工程图视图7")
    boolstatus = swDraw.Extension.SelectByID2("工程图视图7", "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0)
    Set swView = swDraw.SelectionManager.GetSelectedObject5(1)
    boolstatus = swView.RemoveAlignment
    boolstatus = swDraw.ActivateView("工程图视图8")
    boolstatus = swDraw.Extension.SelectByID2("工程图视图8", "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0)
    Set swView = swDraw.SelectionManager.GetSelectedObject5(1)
    boolstatus = swView.RemoveAlignment
    boolstatus = swDraw.ActivateView("工程图视图9")
    boolstatus = swDraw.Extension.SelectByID2("工程图视图9", "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0)
    Set swView = swDraw.SelectionManager.GetSelectedObject5(1)
    boolstatus = swView.RemoveAlignment
    boolstatus = swDraw.Extension.SelectByID2("工程图视图10", "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0)
    Set swView = swDraw.SelectionManager.GetSelectedObject5(1)
    boolstatus = swView.RemoveAlignment
    swDraw.ClearSelection2 True
    'Drawing views are repositioned so that none of them overlap.以下重新定位视图以免重叠
    nNumView = 0

    Set swView = swDraw.GetFirstView
        Do While Not swView Is Nothing
            ReDim Preserve vOutline(nNumView)
            ReDim Preserve vPos(nNumView)
            vOutline(nNumView) = swView.GetOutline
            vPos(nNumView) = swView.Position
            Debug.Print "View = " + swView.GetName2
            Debug.Print "  Pos = (" & vPos(nNumView)(0) * 1000# & ", " & vPos(nNumView)(1) * 1000# & ") mm"
            Debug.Print "  Min = (" & vOutline(nNumView)(0) * 1000# & ", " & vOutline(nNumView)(1) * 1000# & ") mm"
            Debug.Print "  Max = (" & vOutline(nNumView)(2) * 1000# & ", " & vOutline(nNumView)(3) * 1000# & ") mm"
            nNumView = nNumView + 1
          
            Set swView = swView.GetNextView
        Loop
       
        ' sheet 图纸1
        Set swView = swDraw.GetFirstView
      
        ' View 1 工程图视图1
        Set swView = swView.GetNextView
       
        'View 2 - vertically aligned to view 1 工程图视图2 (俯视图)垂直对齐于工程图视图1
        Set swView = swView.GetNextView
        vPos(2)(1) = vPos(1)(1) - (vPos(1)(1) - vOutline(1)(1)) - (vOutline(2)(3) - vPos(2)(1))   'Y座标修改
        swView.Position = vPos(2)
        swDraw.GraphicsRedraw2
        vPos(2) = swView.Position
        vOutline(2) = swView.GetOutline
       
        'View 3 - horizontally aligned to view 1 工程图视图3 (左视图)水平对齐于工程图视图1
        Set swView = swView.GetNextView
        vPos(3)(0) = vPos(1)(0) + (vOutline(1)(2) - vPos(1)(0)) + (vPos(3)(0) - vOutline(3)(0))   'X座标修改
        swView.Position = vPos(3)
        swDraw.GraphicsRedraw2
        vPos(3) = swView.Position
        vOutline(3) = swView.GetOutline
         
        'View 4 - vertically aligned to view 1  工程图视图4 (仰视图)垂直对齐于工程图视图1
        Set swView = swView.GetNextView
        vPos(4)(1) = vPos(1)(1) + (vOutline(1)(3) - vPos(1)(1)) + (vPos(4)(1) - vOutline(4)(1)) 'Y座标修改
        swView.Position = vPos(4)
        swDraw.GraphicsRedraw2
        vPos(4) = swView.Position
        vOutline(4) = swView.GetOutline
       
        'View 5 - horizontally aligned to view 1 工程图视图5 (右视图)水平对齐于工程图视图1
        Set swView = swView.GetNextView
        vPos(5)(0) = vPos(1)(0) - (vPos(1)(0) - vOutline(1)(0)) - (vOutline(5)(2) - vPos(5)(0))   'X座标修改
        swView.Position = vPos(5)
        swDraw.GraphicsRedraw2
         vPos(5) = swView.Position
         vOutline(5) = swView.GetOutline
       
        'View 6 - horizontally aligned to view 3 工程图视图3 (后视图)水平对齐于工程图视图3
        Set swView = swView.GetNextView
        vPos(6)(0) = vPos(3)(0) + (vOutline(3)(2) - vPos(3)(0)) + (vPos(6)(0) - vOutline(6)(0))  'X座标修改
        swView.Position = vPos(6)
        swDraw.GraphicsRedraw2
          vOutline(6) = swView.GetOutline
       
          
          'View 7 - horizontally aligned to view 1 工程图视图7 (左下轴测视图)
        Set swView = swView.GetNextView
         vPos(7)(0) = vPos(1)(0) + (vOutline(1)(2) - vPos(1)(0)) + (vPos(7)(0) - vOutline(7)(0))  'X座标修改相对于工程图视图1
        vPos(7)(1) = vPos(1)(1) - (vPos(1)(1) - vOutline(1)(1)) - (vOutline(7)(3) - vPos(7)(1))   'Y座标修改相对于工程图视图1
        swView.Position = vPos(7)
        swDraw.GraphicsRedraw2
        vOutline(7) = swView.GetOutline
        'View 8 - horizontally aligned to view 1 工程图视图8 (右下轴测视图)
        Set swView = swView.GetNextView
         vPos(8)(0) = vPos(1)(0) - (vPos(1)(0) - vOutline(1)(0)) - (vOutline(8)(2) - vPos(8)(0))  'X座标修改相对于工程图视图1
       vPos(8)(1) = vPos(1)(1) - (vPos(1)(1) - vOutline(1)(1)) - (vOutline(8)(3) - vPos(8)(1))   'Y座标修改相对于工程图视图1
       swView.Position = vPos(8)
         swDraw.GraphicsRedraw2
         vOutline(8) = swView.GetOutline
       
        'View 9 - horizontally aligned to view 1 工程图视图7 (左上轴测视图)
        Set swView = swView.GetNextView
         vPos(9)(0) = vPos(1)(0) + (vOutline(1)(2) - vPos(1)(0)) + (vPos(9)(0) - vOutline(9)(0))  'X座标修改相对于工程图视图1
        vPos(9)(1) = vPos(1)(1) + (vOutline(1)(3) - vPos(1)(1)) + (vPos(9)(1) - vOutline(9)(1))   'Y座标修改相对于工程图视图1
        swView.Position = vPos(9)
         swDraw.GraphicsRedraw2
         vOutline(9) = swView.GetOutline
       
        'View 10 - horizontally aligned to view 1 工程图视图8 (右上轴测视图)
        Set swView = swView.GetNextView

        vPos(10)(0) = vPos(1)(0) - (vPos(1)(0) - vOutline(1)(0)) - (vOutline(10)(2) - vPos(10)(0))  'X座标修改相对于工程图视图1
        vPos(10)(1) = vPos(1)(1) + (vOutline(1)(3) - vPos(1)(1)) + (vPos(10)(1) - vOutline(10)(1))   'Y座标修改相对于工程图视图1
        swView.Position = vPos(10)
        swDraw.GraphicsRedraw2
        vOutline(10) = swView.GetOutline
    swDraw.ViewZoomtofit2
    swDraw.ClearSelection2 (True)

    '以下删除视图中产生的中心线
    box(0) = vOutline(8)(0)
    If vOutline(5)(0) < box(0) Then box(0) = vOutline(5)(0)
    If vOutline(10)(0) < box(0) Then box(0) = vOutline(10)(0)
    box(1) = vOutline(8)(1)
    If vOutline(2)(1) < box(1) Then box(1) = vOutline(2)(1)
    If vOutline(7)(1) < box(1) Then box(1) = vOutline(7)(1)
    box(2) = vOutline(9)(2)
    If vOutline(6)(2) > box(2) Then box(2) = vOutline(6)(2)
    If vOutline(7)(2) > box(2) Then box(2) = vOutline(7)(2)
    box(3) = vOutline(9)(3)
    If vOutline(4)(3) > box(3) Then box(3) = vOutline(4)(3)
    If vOutline(10)(3) > box(3) Then box(3) = vOutline(10)(3)
    boolstatus = swApp.SetSelectionFilter(swSelCENTERLINES, True)    '过滤选择中心线
    boolstatus = swDraw.ActivateSheet(&quot;图纸1&quot;)
    boolstatus = swDraw.Extension.SketchBoxSelect(box(0), box(1), &quot;0.000000&quot;, box(2), box(3), &quot;0.000000&quot;)   '框选
    swDraw.EditDelete   '删除中心线
    boolstatus = swApp.SetSelectionFilter(swSelCENTERLINES, False)   '取消过滤选择中心线
    swModelName = Left(swModelName, Len(swModelName) - 7) + &quot;(6+4).slddrw&quot;  '定义工程图
    longstatus = swDraw.SaveAs3(swModelName, 0, 0) '存为工程图文件
    swModelName = Left(swModelName, Len(swModelName) - 6) + &quot;dwg&quot;    '定义工程图
    longstatus = swDraw.SaveAs3(swModelName, 0, 0) '存为DWG文件
    End Sub

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

使用道具 举报

15

主题

69

帖子

128

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
271
QQ
发表于 2016-6-30 10:43:08 | 显示全部楼层
谢谢分享
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

16

主题

71

帖子

100

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
259
QQ
发表于 2016-7-1 09:39:09 | 显示全部楼层
多谢楼主
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

12

主题

59

帖子

119

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
251
QQ
发表于 2016-7-1 23:43:30 | 显示全部楼层

   经典案例图书
多谢楼主
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

64

帖子

40

金币

天使

Rank: 2Rank: 2

积分
152
QQ
发表于 2016-7-2 16:05:33 | 显示全部楼层
怎么替换工程图模板?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

93

帖子

107

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
349
QQ
发表于 2016-7-2 23:43:08 | 显示全部楼层

   经典案例图书
请问怎么替换工程图模板呢?
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

19

主题

69

帖子

187

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
352
QQ
发表于 2016-7-3 14:38:28 | 显示全部楼层
先下载来,以后备用
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

9

主题

78

帖子

262

金币

堂主

Rank: 4

积分
842

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

发表于 2019-2-15 16:58:03 | 显示全部楼层
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

6

主题

945

帖子

943

金币

实习版主

Rank: 7Rank: 7Rank: 7Rank: 7

积分
3761

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

发表于 2019-7-7 16:46:06 | 显示全部楼层
可以批量操作吗
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

12

主题

116

帖子

105

金币

堂主

Rank: 4

积分
629

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

发表于 2019-7-8 10:56:12 | 显示全部楼层
活到老学到老!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

8

帖子

52

金币

天使

Rank: 2Rank: 2

积分
182

最佳新人宣传达人

发表于 2019-7-8 17:23:36 | 显示全部楼层
没学懂,新建了工程图,然保存位置在哪?没看见保存出来的DWG格式图
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

88

帖子

80

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
295

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

发表于 2019-8-1 14:08:15 | 显示全部楼层
SolidWorks机械工程师网
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

9

主题

1万

帖子

7027

金币

实习版主

Rank: 7Rank: 7Rank: 7Rank: 7

积分
37478

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

发表于 2019-8-1 22:52:32 | 显示全部楼层
SW机械工程师网,找到组织了!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

515

帖子

1497

金币

实习版主

Rank: 7Rank: 7Rank: 7Rank: 7

积分
8700

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

发表于 2019-10-23 08:22:22 | 显示全部楼层
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

自动建立带有6个标准视图和4个轴测视图的工程图文件
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

398

帖子

96

金币

长老

Rank: 6Rank: 6Rank: 6

积分
1795

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

发表于 2022-3-12 11:09:56 | 显示全部楼层

   经典案例图书
感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

4

主题

468

帖子

1233

金币

传奇

Rank: 8Rank: 8

积分
12098

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

发表于 2022-4-2 16:31:05 | 显示全部楼层
加入QQ群
参与讨论和学习

SolidWorks技术交流群

或扫描二维码加入

感谢楼主分享,很不错!
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

0

主题

154

帖子

94

金币

堂主

Rank: 4

积分
591

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

发表于 2023-7-31 17:52:16 | 显示全部楼层

   经典案例图书
谢谢分享谢谢分享
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

2

主题

35

帖子

165

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
294

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

发表于 2023-10-28 10:41:31 | 显示全部楼层
非常感谢大佬们的分享
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

手机版|小黑屋| GMT+8, 2024-4-18 16:04 , Processed in 0.580979 second(s), 37 queries .

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

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

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