[求助]请教cad的分图层打印问题
<p>大家好,我想用vba实现一个程序,就是要把一张图上的各个图层分层打印出来,在之前已经用plot命令打印出过一张图的情况下(也就是说打印机已经设置好,打印的范围也已经用窗口圈出过),只是想执行把各个图层分别打印出来,很少的几行代码,不知为何结果就是不对,还盼望能够帮忙指正一下,呵呵。<br/><br/>我是想通过控制图层的layeron属性来控制图层是否被打印,因此我首先把各个图层都关闭(这几句应该是没问题的):<br/>Dim objlyr As AcadLayer<br/>For Each objlyr In ThisDrawing.Application.ActiveDocument.Layers<br/>objlyr.LayerOn = False<br/>next<br/>然后就开始通过逐个打开图层,然后打印,并关闭图层:<br/>For Each objlyr In ThisDrawing.Application.ActiveDocument.Layers<br/>objlyr.LayerOn = True'打开图层<br/>ThisDrawing.Plot.PlotToDevice'执行打印<br/>objlyr.LayerOn = False'关闭图层<br/>next<br/>然后问题就出现了,打印出来的图,全是第一个图层的内容,并非我想要的各个图层的内容,而如果我把执行打印的那一句:“ThisDrawing.Plot.PlotToDevice'”改为“ThisDrawing.Application.ActiveDocument.SendCommand "_plot" & vbCr”<br/>这样当程序执行到每个图层的时候就会弹出打印的对话框,我需要连续点击【确定】,虽然这个过程麻烦一些,但是这样出来的图就是各个图层的了,不知道这是为什么呢?难道:“ThisDrawing.Plot.PlotToDevice'”这句程序的正确执行前面还需要加些代码么?希望能够得到指导!多谢了!<br/></p> Dim objlyr As AcadLayerFor Each objlyr In ThisDrawing.Application.ActiveDocument.Layers
objlyr.LayerOn = False
Next
ThisDrawing.Regen acActiveViewport
For Each objlyr In ThisDrawing.Application.ActiveDocument.Layers
objlyr.LayerOn = True '打开图层
ThisDrawing.Regen acActiveViewport
ThisDrawing.Plot.PlotToDevice '执行打印
objlyr.LayerOn = False '关闭图层
Next
页:
[1]