乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 141|回复: 8

[求助]如何打印所有图层

[复制链接]

11

主题

29

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
73
发表于 2006-1-14 20:44:00 | 显示全部楼层 |阅读模式
我用VB在CAD里生成了1000多个图层,其中三个图层的内容是公共图层,打印时要和其它图层一起打印。我现在只能先关闭不打印的图层,然后再打印,这样需重复1000多次。谢谢各位帮帮我,怎样用程序实现自动打印?我跪求了!
回复

使用道具 举报

7

主题

51

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2006-1-14 21:44:00 | 显示全部楼层
没看懂
假设A、B、C三个图层是公共图层
其他的1000多个图层 每个图层要打一份 ?
就是 A+B+C的内容 加上第1个图层的内容 = 打印一份
就是 A+B+C的内容 加上第2个图层的内容 = 打印一份
就是 A+B+C的内容 加上第3个图层的内容 = 打印一份
…………
…………
???是这样么?
回复

使用道具 举报

11

主题

29

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
73
发表于 2006-1-14 21:54:00 | 显示全部楼层
谢谢楼上的,我就是这个意思,可是怎么才能做到用程序打印呢?谢谢了!
回复

使用道具 举报

7

主题

51

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2006-1-14 22:16:00 | 显示全部楼层
Sub Test()
Dim a As AcadLayer

For i = 0 To ThisDrawing.Layers.Count - 1
    ThisDrawing.Layers.Item(i).LayerOn = False
Next i
ThisDrawing.Layers("公共图层1").LayerOn = True '改成具体的名字
ThisDrawing.Layers("公共图层2").LayerOn = True '改成具体的名字
ThisDrawing.Layers("公共图层3").LayerOn = True '改成具体的名字
For Each a In ThisDrawing.Layers
   
    If a.LayerOn = False Then
        a.LayerOn = True
        '===============================
        
        
        '是不是把图层关了 就不会打印了?
        '如果是的话 那在这两行之间加入打印的代码
        '我不知道用什么语句来进行打印
        '只能帮你这么多了
        
        
        
        '===============================
        a.LayerOn = False
    End If
        
Next a
End Sub


应该能行
回复

使用道具 举报

7

主题

51

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2006-1-14 22:22:00 | 显示全部楼层
还有 再那2行=====之间加代码的时候 最好加一句
MsgBox "现在正在打印的图层是" + a.Name + ",先不要按确定,等打完了再按."
回复

使用道具 举报

7

主题

51

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
79
发表于 2006-1-14 22:35:00 | 显示全部楼层
帮你写好了
先设置好默认的打印页面设置
然后 运行下面的程序
Sub DaYin()
Dim a As AcadLayer
For i = 0 To ThisDrawing.Layers.Count - 1
    ThisDrawing.Layers.Item(i).LayerOn = False
    ThisDrawing.Layers.Item(i).Plottable = False
Next i
ThisDrawing.Layers("公共图层1").LayerOn = True '
For Each a In ThisDrawing.Layers
   
    If a.LayerOn = False Then
        a.LayerOn = True
        a.Plottable = True
        ThisDrawing.Plot.PlotToDevice
        
        
        If MsgBox("现在正在打印的图层是" + a.Name _
                + ",先不要按确定,等打完了再按." + "如果发现打印格式不对,就按取消", _
                vbOKCancel + vbInformation) = vbCancel Then Exit For
        
        a.LayerOn = False
        a.Plottable = False
    End If
        
Next a
End Sub
回复

使用道具 举报

1

主题

11

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2006-1-15 02:23:00 | 显示全部楼层
a nice work!
回复

使用道具 举报

11

主题

29

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
73
发表于 2006-1-15 10:49:00 | 显示全部楼层
太感谢你了,我马上试一下。
回复

使用道具 举报

31

主题

227

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
351
发表于 2012-7-15 19:53:00 | 显示全部楼层

感谢686楼主分享。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-30 05:24 , Processed in 2.032960 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表