明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1567|回复: 1

[求助]请教cad的分图层打印问题

[复制链接]
发表于 2009-12-1 23:21:00 | 显示全部楼层 |阅读模式

大家好,我想用vba实现一个程序,就是要把一张图上的各个图层分层打印出来,在之前已经用plot命令打印出过一张图的情况下(也就是说打印机已经设置好,打印的范围也已经用窗口圈出过),只是想执行把各个图层分别打印出来,很少的几行代码,不知为何结果就是不对,还盼望能够帮忙指正一下,呵呵。

我是想通过控制图层的layeron属性来控制图层是否被打印,因此我首先把各个图层都关闭(这几句应该是没问题的):
Dim objlyr As AcadLayer
For Each objlyr In ThisDrawing.Application.ActiveDocument.Layers
objlyr.LayerOn = False
next
然后就开始通过逐个打开图层,然后打印,并关闭图层:
For Each objlyr In ThisDrawing.Application.ActiveDocument.Layers
objlyr.LayerOn = True'打开图层
ThisDrawing.Plot.PlotToDevice'执行打印
objlyr.LayerOn = False'关闭图层
next
然后问题就出现了,打印出来的图,全是第一个图层的内容,并非我想要的各个图层的内容,而如果我把执行打印的那一句:“ThisDrawing.Plot.PlotToDevice'”改为“ThisDrawing.Application.ActiveDocument.SendCommand "_plot" & vbCr”
这样当程序执行到每个图层的时候就会弹出打印的对话框,我需要连续点击【确定】,虽然这个过程麻烦一些,但是这样出来的图就是各个图层的了,不知道这是为什么呢?难道:“ThisDrawing.Plot.PlotToDevice'”这句程序的正确执行前面还需要加些代码么?希望能够得到指导!多谢了!

发表于 2009-12-3 09:11:00 | 显示全部楼层
  1. Dim objlyr As AcadLayer
  2. For Each objlyr In ThisDrawing.Application.ActiveDocument.Layers
  3. objlyr.LayerOn = False
  4. Next
  5. ThisDrawing.Regen acActiveViewport
  6. For Each objlyr In ThisDrawing.Application.ActiveDocument.Layers
  7. objlyr.LayerOn = True '打开图层
  8. ThisDrawing.Regen acActiveViewport
  9. ThisDrawing.Plot.PlotToDevice '执行打印
  10. objlyr.LayerOn = False '关闭图层
  11. Next
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 00:26 , Processed in 0.162019 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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