北京印刷学院学报

基于二次开发批量打印程序 

来源:北京印刷学院学报 【在线投稿】 栏目:期刊导读 时间:2021-06-13

AutoCAD是道路与桥梁工程设计过程中最常用的工具之一,我们在设计工作中,经常需要打印大量的图纸,用AutoCAD自身的打印功能打印一份新的图纸,需要设置打印机、图纸尺寸、打印范围、打印偏移、打印比例、打印样式表、图形方向等选项,费时费力,AutoCAD自带布局的方法也没有方便的解决这个问题。因此,需要对AutoCAD进行二次开发,自动完成打印选项的设定,提高批量打印效率。本文主要介绍了基于VB二次开发AutoCAD批量打印程序编制过程中的主要技术。

1 程序的主要功能

根据道路与桥梁工程设计过程中的实际情况,我们开发了AutoCAD批量打印程序,如图1所示,主要具有以下功能:

1)批量打印多个文件,每个文件中可以包含多个图形;

2)自动识别图框,图框类型可以为多段线、块或外部参照;

3)自动设置打印比例。

2 利用VB基于AutoCAD二次开发

2.1 开发原理

ActiveX Automation是微软公司基于组件对象模型体系结构开发的一项技术,AuotoCAD自R14版本起加入了ActiveX Automation编程接口,通过ActiveX Automation,AutoCAD提供了由对象模型表述的可编程对象,这些对象可由其他程序来创建、操纵和编辑。

Visual Basic(以下简称VB)是微软公司推出的面向对象可视化编程工具,VB作为我们常用的支持ActiveX技术的编程开发工具,使AutoCAD与其他运用程序的数据共享变得更加方便。

图1 CAD批量打印程序

2.2 AutoCAD对象模型

AutoCAD对象是采用分层方式来操作的,每一个对象就代表AutoCAD的一个元素。顶层对象为应用程序对象Applica?tion,下面是文档Document对象、参数选择Preferences对象、主菜单栏MenuBar对象及菜单工具MenuGroups对象。文档Docu?ment对象就是 AutoCAD 图形,包含 ModelSpace、PaperSpace、Blocks、Layers、Plot与Utility等对象,它提供访问所有图形对象(线、圆、弧等)及大部分非图形对象(打印、图层、线型、字型等)。在参数选择(Preferences)对象下边为对象集,每个对象集均对应选项对话框的一个选项卡,它们共同提供访问所有的注册设置。AutoCAD对象模型如图2所示。

图2 AutoCAD对象模型

2.3 VB与AutoCAD的连接

VB与AutoCAD连接的源代码如下所示:

2.4 VB对AutoCAD的操作

通过VB面向对象的编程环境,可以对使用属性、方法等对AutoCAD的各种对象进行操作。下面是利用VB6开发的用户程序实例,其功能是在模型空间中绘制多段线,然后获取并显示多段线坐标,并对多段线的端点坐标、颜色进行修改。

3 批量打印程序的实现

3.1 多个文件选择

为实现在图纸打印过程中,能依次选择多个文件进行打印,达到无人值守的目的,程序采用ListBox控件对文件存放路径及名称进行存取。使用AddItem或者RemoveItem方法可以添加或者删除项目,使用List、ListCount和ListIndex属性可以访问项目。

3.2 获取打印机、样式表及图纸尺寸

Layout对象包含模型空间、图纸空间的打印设置。用Lay?获取所有可用的打印设备名称,获取指定打印设备的所有图纸尺寸,取得全部可用的打印样式表名称,添加到相应的ComboBox控件中用于选择。调用上述方法前必须先调用RefreshPlotDeviceInfo方法,更新打印机、图纸尺寸和打印样式表信息,以反映当前系统状态。

’获取Layout对象

3.3 设置打印机、样式表及图纸尺寸

ActiveX中的布局表现形式与AutoCAD用户界面中的表现形式略有不同。在ActiveX中,标准AutoCAD布局可以分成两个独立的对象:Layout和Block。对象Layout为AutoCAD用户界面上的打印和布局显示配置。Block对象包含布局的几何图形。在ActiveX中,除了图纸空间布局外,模型空间也被看作是一个布局。使用ActiveLayout属性获取文档的活动布局,Con?figName属性设置打印机配置名,CanonicalMediaName属性设置图纸尺寸,StyleSheet设置打印样式表。

3.4 获取图框并设置打印区域

为设置打印区域,需从图形中过滤出符合特征的图框,程序采用Select方法选择对象,FiherType和FilterData作为过滤参数,将选择的对象添加到选择集中。FilterType为指定使用的过滤器类型的DXF组码,FilterData为过滤器的值。遍历选择集中的每个对象,可采用GetBoundingBox方法获得每个图框的的左下角点和右上角点坐标,即为图纸的打印范围。通过Se?tWindowToPlot方法设置打印区域。一个AutoCAD文件中如存在多个图形的情况,还需对获取的图框坐标进行排序,以适应给定的打印顺序进行打印,如“先下后上,先左后右”、“先上后下,先左后右”等。

上一篇:诺丁汉大学开发出可提高燃油效率的打印汽车零
下一篇:没有了