明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7903|回复: 22

批量打印的问题

  [复制链接]
发表于 2005-8-17 20:14:00 | 显示全部楼层 |阅读模式
现在想编一个批量打印的程序,在一个文件夹里存了很多图形文件,比如:1.dwg,2.dwg,3.dwg.......每张图的大小都一样,都有一个固定的图框,设想只要运行这个批量打印的程序,就把每张图一次打出来,有例子吗?各位大侠?谢谢啦
发表于 2008-3-15 23:53:00 | 显示全部楼层
10楼的兄弟,谢谢你的帮助。明眼人一看就知道你就相当于把批量打印的关键源代码全分享出来了。
回复 支持 0 反对 1

使用道具 举报

发表于 2005-8-18 09:57:00 | 显示全部楼层
我正在做,做好了给你源码。
 楼主| 发表于 2005-8-18 15:06:00 | 显示全部楼层
谢谢啦,期待中!!!献上鲜花一朵
 楼主| 发表于 2005-8-20 08:56:00 | 显示全部楼层

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

发表于 2005-10-14 20:13:00 | 显示全部楼层
我用S::STARTUP()函数 在r14 中实现了
发表于 2005-10-26 12:03:00 | 显示全部楼层
请高手将源代码发给我,先谢了.Cb416@126.com
发表于 2005-11-24 19:17:00 | 显示全部楼层

请高手解决!

发表于 2006-2-11 15:34:00 | 显示全部楼层
acad2002 2004都自带了批量打印的程序阿!用的着编吗?
发表于 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中循环。

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

本版积分规则

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

GMT+8, 2024-11-26 08:52 , Processed in 0.176681 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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