资源描述:
《CAD-VBA批量打印程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、CAD/VBA批量打印 打印图纸,不折不扣的体力活。最多一次打了600多张图,打印机都因"体力不支"中途休息了几次,如果不是用程序批打,估计我也得累个半死。 下面贴出打印过程的代码,加个for循环就可以批打了。简单说明一下打印函数 PrinterName-打印机名称 Styles-样式表名称 MediaName-纸张大小 Copies-打印份数 AutoMedia-自动纸张开关
2、 AutoRotate-自动旋转,纵向/横向 AutoClose-打印完毕关闭文档 AutoFrame-自动判断图框,主要针对图框为块的情形 打印过程并没有提供全部的AUTOCAD打印选项,因为我一般用不到,比如"打印偏移"、"打印到文件"我从来不用的,如果需要可以添加进去。 程序会根据指定块名查找图框,也可以根据块的纵横比例自动判断是否为图框,然后按块打印,一张图纸中允许有多个图框; 对于编组(Group)形式的图框,指定
3、编组名即可 如果没有找到任何图框块或编组时,按图纸范围打印 另外,打印时会先预览,然后由用户选择是否打印,避免打错。[代码如下]SubQuickPlot() CallPlotFunction("SHARPAR-M256","","A3",1,True,True,False,True)EndSubSubPlot2PDF() CallPlotFunction("pdfFactoryPro","acad.ctb","",1,True,True,False,True)EndSubSubP
4、lotA4() CallPlotFunction("SHARPAR-M256","acad.ctb","A4",1,False,True,False,True)EndSub'快速打印/批量打印PublicSubPlotFunction(PrinterNameAsString,StylesAsString,MediaNameAsString,CopiesAsInteger,_ AutoMediaAsBoolean,AutoRotateAsBoolean,AutoCloseAsB
5、oolean,AutoFrameAsBoolean) OnErrorResumeNext DimptMinAsVariant,ptMaxAsVariant DimEntAsAcadEntity DimPlotCountAsInteger SetobjDoc=ThisDrawing.Application.ActiveDocument SetobjLayout=objDoc.Layouts.Item("Model") SetobjPlot=objDoc.P
6、lot ThisDrawing.Application.ZoomExtents '设置打印机 IfNotTrim(PrinterName)=""Then objLayout.ConfigName=PrinterName Else ExitSub EndIf '设置打印样式表 IfNotTrim(Styles)=""Then objLayout.StyleSh
7、eet=Styles Else objLayout.StyleSheet="acad.ctb" EndIf '设置图纸尺寸 IfAutoMediaThen objLayout.CanonicalMediaName="A3" Else IfNotTrim(MediaName)=""Then objLayout.CanonicalMediaName=MediaName
8、 Else objLayout.CanonicalMediaName="A3" EndIf EndIf '设置图纸单位 objLayout.PaperUnits=acMillimeters 'objLayout.PaperUnits=acInches '设置默