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

批量打印的问题

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

guoyu450 发表于 2008-3-15 23:53:00

10楼的兄弟,谢谢你的帮助。明眼人一看就知道你就相当于把批量打印的关键源代码全分享出来了。

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

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

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

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

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

<P>等待中,<A href="mailto:y1982_0@126.com" target="_blank" >y1982_0@126.com</A>,高手请发信箱中</P>

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

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

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

请高手将源代码发给我,先谢了<A href="mailto:.Cb416@126.com" target="_blank" >.Cb416@126.com</A>

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

<P>请高手解决!</P>

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

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

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

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

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

<P>我做过一个,不一定适合你,最好自己写一个,给你一个思路:</P>
<P>1. 在当前图纸中找到要打印的图框。这一步可以用两个方法做,一个是用for each entity in thisdrawing.modelspace的方法,查询每个对象,如果对象是块,那么取得名称,如果是需要的图框块名称,就取得了要打印的块,这个方法写程序较麻烦,速度也不快;第二种方法是使用select方法,设置过滤器的组码类型为2,也就是名称,组码的值就是图框块的名称了,十分迅速就可以找到图框。</P>
<P>2. 找到图框块以后,用getboundingbox方法取得图框的最外边大小。如果找到的图框不止一个,就需要设置一个数组临时存放范围坐标。</P>
<P>3. 全部OK了,使用下列代码来打印:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlotLowLeft(0) =&nbsp;范围左下角X坐标</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlotLowLeft(1) =&nbsp;范围左下角Y坐标</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlotUpRight(0) =&nbsp;范围右上角X坐标</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlotUpRight(1) =&nbsp;范围右上角Y坐标&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P>
<P>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' 设置打印范围</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ThisDrawing.ModelSpace.Layout.SetWindowToPlot PlotLowLeft, PlotUpRight<BR></P>
<P>'设置打印方式是窗口</P>
<P>&nbsp;&nbsp;&nbsp; ThisDrawing.ModelSpace.Layout.PlotType = acWindow<BR></P>
<P>'设置打印比例为缩放到图纸大小,并中心对正&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.ModelSpace.Layout.StandardScale = acScaleToFit<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.ModelSpace.Layout.CenterPlot = True</P>
<P>'设置笔为单色<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.ModelSpace.Layout.StyleSheet = "monochrome.ctb"<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; '选择打印机和纸张<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.ModelSpace.Layout.ConfigName =&nbsp;"打印机名称"<BR>&nbsp;&nbsp;&nbsp;&nbsp;ThisDrawing.ModelSpace.Layout.CanonicalMediaName = "A4"<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; ' 设置打印份数为1<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.Plot.NumberOfCopies = 1<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; '&nbsp;设置安静打印</P>
<P>&nbsp;&nbsp;&nbsp; ThisDrawing.Plot.QuietErrorMode = True<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; '旋转设置<BR>&nbsp;&nbsp;&nbsp; If PlotUpRight(0) - PlotLowLeft(0) &gt; PlotUpRight(1) - PlotLowLeft(1) Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ThisDrawing.ModelSpace.Layout.PlotRotation = ac90degrees<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ThisDrawing.ModelSpace.Layout.PlotRotation = ac0degrees<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp;</P>
<P>'打印&nbsp;<BR>&nbsp;&nbsp;&nbsp; ThisDrawing.Plot.PlotToDevice<BR></P>
<P>4. 如果需要选择打印机,可以做一个对话框,用GetPlotDeviceNames方法取得所有打印机名称,放到一个combobox中,就可以让用户选择打印机。如果要打印多个文件中的图框,可以同时打开多个dwg,用for each doc in application.documents的方法在每个dwg中循环。</P>
页: [1] 2 3
查看完整版本: 批量打印的问题