明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 霹雳啪啦啦

关于连续打印的问题,请教!!

[复制链接]
 楼主| 发表于 2008-12-2 15:05:00 | 显示全部楼层
XUXT:
这个东东写过几年了,偶尔上来看看又被翻出来了。当年怎么写的忘记了,反正都是在MODELSPACE里操作的,没有布局的问题。
贴出当年写的东东的核心子程序,供有兴趣的人参考。2006里调试正常。

Sub Plot_Frame(PlotZone() As Double)

Dim M, N As Integer
Dim ExtLowLeft As Variant
Dim ExtUpRight As Variant
Dim PlotLowLeft(0 To 1) As Double, PlotUpRight(0 To 1) As Double
               
    If PlotRagType = acWindow Then
        PlotLowLeft(0) = PlotZone(1)
        PlotLowLeft(1) = PlotZone(2)
        PlotUpRight(0) = PlotZone(3)
        PlotUpRight(1) = PlotZone(4)
       
        ' 设置打印范围和打印区域的比例
        ThisDrawing.ModelSpace.Layout.SetWindowToPlot PlotLowLeft, PlotUpRight
        ElseIf PlotRagType = acExtents Then
       
            ExtLowLeft = ThisDrawing.GetVariable("extmin")
            ExtUpRight = ThisDrawing.GetVariable("extmax")
            PlotLowLeft(0) = ExtLowLeft(0)
            PlotLowLeft(1) = ExtLowLeft(1)
            PlotUpRight(0) = ExtUpRight(0)
            PlotUpRight(1) = ExtUpRight(1)
       
    End If
    ThisDrawing.ModelSpace.Layout.PlotType = PlotRagType
   
    ThisDrawing.ModelSpace.Layout.StandardScale = acScaleToFit
    ThisDrawing.ModelSpace.Layout.CenterPlot = True
    ThisDrawing.ModelSpace.Layout.StyleSheet = "monochrome.ctb"
   
    '选择打印机
    ThisDrawing.ModelSpace.Layout.ConfigName = ComboBox1.Value
   
    '选择纸张
    If OptionButton1.Value = True Then
        ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A4"
        ElseIf OptionButton2.Value = True Then
            ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A3"
    End If
   
    ' 设置打印份数为1
    ThisDrawing.Plot.NumberOfCopies = 1
   
    ' 开始打印
    ThisDrawing.Plot.QuietErrorMode = True
   
    '旋转设置
    If PlotUpRight(0) - PlotLowLeft(0) > PlotUpRight(1) - PlotLowLeft(1) Then
        ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees
        Else
            ThisDrawing.ModelSpace.Layout.PlotRotation = ac0degrees
    End If
   
    ThisDrawing.Plot.PlotToDevice
    DoEvents
   
End Sub

PlotZone是传递给子程序的打印区域,4元素数组,代表左上角和右下角的坐标。
PlotRagType是全局变量,AcPlotType类型,代表是窗口还是范围等打印方式。
ComboBox1中是打印机列表,可通过以下代码在父程序初始化时取得:
plotDevices = ThisDrawing.ModelSpace.Layout.GetPlotDeviceNames()
For I = LBound(plotDevices) To UBound(plotDevices)
    ComboBox1.AddItem plotDevices(I)
Next
OptionButton1和2用来选择a4还是a3纸。
你需要添加父程序,取得打印范围的左上交和右下角,然后一次次调用这个子程序,就可以批量打印了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 05:40 , Processed in 0.125282 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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