y1982_0 发表于 2005-8-17 20:14:00

批量打印的问题

现在想编一个批量打印的程序,在一个文件夹里存了很多图形文件,比如:1.dwg,2.dwg,3.dwg.......每张图的大小都一样,都有一个固定的图框,设想只要运行这个批量打印的程序,就把每张图一次打出来,有例子吗?各位大侠?谢谢啦

linyiwq 发表于 2005-8-18 09:57:00

我正在做,做好了给你源码。

y1982_0 发表于 2005-8-18 15:06:00

谢谢啦,期待中!!!献上鲜花一朵

y1982_0 发表于 2005-8-20 08:56:00

等待中,y1982_0@126.com,高手请发信箱中

leizi_y 发表于 2005-10-14 20:13:00

我用S::STARTUP()函数 在r14 中实现了

Jianyu 发表于 2005-10-26 12:03:00

请高手将源代码发给我,先谢了.Cb416@126.com

sanjie 发表于 2005-11-24 19:17:00

请高手解决!

los_su 发表于 2006-2-11 15:34:00

acad2002 2004都自带了批量打印的程序阿!用的着编吗?

ZKSJLL 发表于 2006-7-10 22:16:00

现在很多图纸都画在一起,便于修改查看!!如果可以不用拆图就可以批量打印,那将是一件愉快的事情哟。。。。

霹雳啪啦啦 发表于 2006-7-11 10:27:00

我做过一个,不一定适合你,最好自己写一个,给你一个思路:
1. 在当前图纸中找到要打印的图框。这一步可以用两个方法做,一个是用for each entity in thisdrawing.modelspace的方法,查询每个对象,如果对象是块,那么取得名称,如果是需要的图框块名称,就取得了要打印的块,这个方法写程序较麻烦,速度也不快;第二种方法是使用select方法,设置过滤器的组码类型为2,也就是名称,组码的值就是图框块的名称了,十分迅速就可以找到图框。
2. 找到图框块以后,用getboundingbox方法取得图框的最外边大小。如果找到的图框不止一个,就需要设置一个数组临时存放范围坐标。
3. 全部OK了,使用下列代码来打印:
      PlotLowLeft(0) = 范围左下角X坐标
      PlotLowLeft(1) = 范围左下角Y坐标
      PlotUpRight(0) = 范围右上角X坐标
      PlotUpRight(1) = 范围右上角Y坐标   
   
      ' 设置打印范围
      ThisDrawing.ModelSpace.Layout.SetWindowToPlot PlotLowLeft, PlotUpRight

'设置打印方式是窗口
    ThisDrawing.ModelSpace.Layout.PlotType = acWindow

'设置打印比例为缩放到图纸大小,并中心对正   
    ThisDrawing.ModelSpace.Layout.StandardScale = acScaleToFit
    ThisDrawing.ModelSpace.Layout.CenterPlot = True
'设置笔为单色
    ThisDrawing.ModelSpace.Layout.StyleSheet = "monochrome.ctb"
   
    '选择打印机和纸张
    ThisDrawing.ModelSpace.Layout.ConfigName = "打印机名称"
    ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A4"
   
    ' 设置打印份数为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

4. 如果需要选择打印机,可以做一个对话框,用GetPlotDeviceNames方法取得所有打印机名称,放到一个combobox中,就可以让用户选择打印机。如果要打印多个文件中的图框,可以同时打开多个dwg,用for each doc in application.documents的方法在每个dwg中循环。
页: [1]
查看完整版本: 批量打印的问题