论文部分内容阅读
摘 要:一個公路工程项目设计成果往往包含百上千张图纸,图纸打印是一项既繁琐有费时的工作,为提高设计人员大批量打印设计图纸的工作效率,本文采用Visual Basic及AutoCAD软件提供的AutoLISP二次开发语言编写了不开图自动批量打印AutoCAD及Excel图纸的程序。程序需要用多种语言进行混合编程,如何充分发挥各种开发语言的优点,并在在各种语言之间进行信息传递、分工合作,使开发的程序成为一个有机的整体是一个难点。
关键词:Visual Basic;AutoLisp;批量打印
1 引言
AutoCAD软件是目前世界上主要的计算机辅助设计软件,以其强大的通用图形功能而被广泛地应用于各个领域,但由于其通用性强,从而造成针对某一具体应用的特殊功能较弱。一个公路项目的设计成果往往包含百上千张图纸,使用其自带的打印功能打印图纸存在操作繁琐、工作效率较低等诸多问题,需要花费设计人员大量的时间和精力。为了弥补这一缺陷,可采用ActiveX Automation技术,利用其他高级语言二次开发AutoCAD软件,构成用户自己的专业软件。经过认真研究,本文采用Visual Basic及AutoCAD软件提供的AutoLISP二次开发语言编写了不开图自动批量打印AutoCAD及Excel图纸的程序,实现了对工程图表自动化批量打印,大大提高了工作效率。
2 Visual Basic及AutoLISP语言简介
Visual Basic 是一种由 Microsoft 公司开发的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言,DDE是Visual Basic应用程序和AutoCAD通信的唯一方法。如果要在Visual Basic编制的界面中(该界面的窗体名为AdsFuncFrm)访问AutoCAD,那么需要在Visual Basic界面中形成一个文本框,名字为AcadText,作为特定的通道,用来完成Visual Basic和AutoCAD之间的连接。它可以通过一个公用函数LinkApp()来实现。
AutoLISP是嵌于AutoCAD内部的计算机语言,可直接调用几乎全部的AutoCAD命令,既具备一般高级语言的基本结构和功能,又具有一般高级语言所没有的强大的图形处理功能,是当今CAD软件中被广泛采用的语言之一。Autodesk公司在AutoCAD内部嵌入AutoLISP的目的是让用户充分利用AutoCAD进行二次开发,实现直接增加和修改AutoCAD命令,扩大图形编辑功能,建立图形库和数据库,并对当前图形进行直接访问和修改,开发CAD软件包等,非常适合具有一定专业知识的设计人员结合实际工作需要来编写相应程序来简化繁琐又费时的工作以提高工作效率。
3 不开图自动批量打印AutoCAD及Excel图纸的实现
3.1 程序编制总体思路分析
程序的主界面编制、主要参数输入及设置在Visual Basic完成,主要思路如下:
启动程序,读取默认参数设置文件,设置打印机、打印份数、打印样式、打印空间、打印图块等参数初始值,初始化程序。
通过添加文件或读取列表命令按钮添加cad或excel文件并实时显示在主界面列表框中,同时可通过删除按钮删除文件、保存列表按钮保存文件、移动按钮改变文件顺序等。
根据实际需要读取参数设置文件或对手动对默认参数进行修改、保存等。
打印文件列表及打印参数准备完毕后点击批量打印按钮,自此程序开始全自动操作,依次按顺序自动打开文件,并判断文件类型,根据设置对不同类型的文件执行不同的操作。
若勾选打印dwg文件则由CreateObject("AutoCAD.Application")函数创建与AutoCAD的链接并自动打开第一个dwg图形文件,然后通过TEXT.LinkExecute()函数向cad发送指令,加载批量打印lisp程序,全图搜索是否有预设的图框图块或多段线,若有则自动计算图框角点坐标,确定图框大小及打印比例和打印方向,按照一定顺序依次打印,打印完毕后自动关闭并打开下一个cad图形文件;若没有则直接关闭后打开下一个cad图形文件。
若勾选打印xls文件则由CreateObject("excel.application")函数创建与Excel的链接并自动打开第一个xls文件,根据设置情况只打印当前工作表或打印整个工作薄,打印完成后自动关闭并打开下一个xls文件。
3.2 程序界面设计及主要控件功能介绍
程序界面主要分为文件输入及编辑区域、AutoCAD及Excel文件打印设置区域,界面内各主要控件功能介绍如下表:
3.3 程序代码设计
本程序代码主要包括557行vb代码和183行lisp代码,由于代码较长,本文重点介绍接口程序代码。在利用VB编写程序之前,要在VB环境中引用AutoCAD及Excel对象库。根据安装的软件版本不同,引用的库也是不同的,这里以cad2008和excel 2010为例,具体实施步骤是在VB语言编程环境中选择菜单栏“工程”中的“引用”,在弹出的列表框中分别选择“AutoCAD2008 Type Library”和Microsoft Excel 14.0 Object Library的复选框,并按“确定”键,这样就可以开始使用cad和excel了。其接口程序如下:
Public Sub ConnectToAcad() ‘vb连接cad接口程序
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then
MsgBoxErr.Description
Exit Sub
End If
End If
acadApp.Visible = True
End Sub
Public Sub ConnectToExcel()‘vb连接excel接口程序
Dim xobject As Excel.Application
Set xobject = CreateObject("excel.application")
xobject.Visible = True
End Sub
3.4 程序运行实例
恩施某二级公路绕镇工程,路线全长约7公里,施工图设计文件共有图纸701页,绝大多数为AutoCAD及Excel文件,其中第三篇(路基路面)包含32个文件共计125张图纸。以打印AutoCAD文件为例,分别采用软件自带命令及本程序進行测试,若采用软件自带命令打印,需计算打印比例、点选打印窗口、设置纸张大小及打印样式,打印一张图纸平均耗时约30秒钟,完成上述125张图纸的打印工作耗时约60分钟,同时需点击鼠标上千次。而采用本程序选择文件及设置参数只需点击鼠标10余次,耗时约30秒钟,之后程序不再需要人工操作,开始全自动批量打印,耗时约2分钟。二者对比即可发现,本程序优势非常明显。
4 结语
目前,AutoCAD与Excel软件已经被广泛地应用到了工程设计的各个领域,成为广大工程技术设计人员的一个重要绘图及制表工具,面对成百上千的图纸,采用软件自带功能打印时,每次均需要设置相关打印参数,对dwg文件还需要点选打印范围及设置打印比例,操作过程较为繁琐,更是费时费力。因此开发出AutoCAD与Excel文件不开图自动批量打印程序具有很高的实用价值,本程序在使用时只需结合实际需要对参数进行一些简单的设置,具有操作简便、自动化和智能化程度较高,输出图纸便捷等优点,实现了对以往许多繁琐复杂的手工工作的自动化、批量化处理,大幅提高了工作效率。
参考文献
[1] 郭秀娟, 等. AutoLISP语言程序设计[M]. 北京:化学工业出版社, 2008
[2] 陈伯雄, 冯伟. VisualLISP程序设计--技巧与范例[M]. 北京:人民邮电出版社, 2002
[3] 吴永进, 林美樱. AutoCAD完全应用指南.AutoLISP+DCL+Visual LISP程序设计篇[M]. 北京:科学出版社, 2009
关键词:Visual Basic;AutoLisp;批量打印
1 引言
AutoCAD软件是目前世界上主要的计算机辅助设计软件,以其强大的通用图形功能而被广泛地应用于各个领域,但由于其通用性强,从而造成针对某一具体应用的特殊功能较弱。一个公路项目的设计成果往往包含百上千张图纸,使用其自带的打印功能打印图纸存在操作繁琐、工作效率较低等诸多问题,需要花费设计人员大量的时间和精力。为了弥补这一缺陷,可采用ActiveX Automation技术,利用其他高级语言二次开发AutoCAD软件,构成用户自己的专业软件。经过认真研究,本文采用Visual Basic及AutoCAD软件提供的AutoLISP二次开发语言编写了不开图自动批量打印AutoCAD及Excel图纸的程序,实现了对工程图表自动化批量打印,大大提高了工作效率。
2 Visual Basic及AutoLISP语言简介
Visual Basic 是一种由 Microsoft 公司开发的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言,DDE是Visual Basic应用程序和AutoCAD通信的唯一方法。如果要在Visual Basic编制的界面中(该界面的窗体名为AdsFuncFrm)访问AutoCAD,那么需要在Visual Basic界面中形成一个文本框,名字为AcadText,作为特定的通道,用来完成Visual Basic和AutoCAD之间的连接。它可以通过一个公用函数LinkApp()来实现。
AutoLISP是嵌于AutoCAD内部的计算机语言,可直接调用几乎全部的AutoCAD命令,既具备一般高级语言的基本结构和功能,又具有一般高级语言所没有的强大的图形处理功能,是当今CAD软件中被广泛采用的语言之一。Autodesk公司在AutoCAD内部嵌入AutoLISP的目的是让用户充分利用AutoCAD进行二次开发,实现直接增加和修改AutoCAD命令,扩大图形编辑功能,建立图形库和数据库,并对当前图形进行直接访问和修改,开发CAD软件包等,非常适合具有一定专业知识的设计人员结合实际工作需要来编写相应程序来简化繁琐又费时的工作以提高工作效率。
3 不开图自动批量打印AutoCAD及Excel图纸的实现
3.1 程序编制总体思路分析
程序的主界面编制、主要参数输入及设置在Visual Basic完成,主要思路如下:
启动程序,读取默认参数设置文件,设置打印机、打印份数、打印样式、打印空间、打印图块等参数初始值,初始化程序。
通过添加文件或读取列表命令按钮添加cad或excel文件并实时显示在主界面列表框中,同时可通过删除按钮删除文件、保存列表按钮保存文件、移动按钮改变文件顺序等。
根据实际需要读取参数设置文件或对手动对默认参数进行修改、保存等。
打印文件列表及打印参数准备完毕后点击批量打印按钮,自此程序开始全自动操作,依次按顺序自动打开文件,并判断文件类型,根据设置对不同类型的文件执行不同的操作。
若勾选打印dwg文件则由CreateObject("AutoCAD.Application")函数创建与AutoCAD的链接并自动打开第一个dwg图形文件,然后通过TEXT.LinkExecute()函数向cad发送指令,加载批量打印lisp程序,全图搜索是否有预设的图框图块或多段线,若有则自动计算图框角点坐标,确定图框大小及打印比例和打印方向,按照一定顺序依次打印,打印完毕后自动关闭并打开下一个cad图形文件;若没有则直接关闭后打开下一个cad图形文件。
若勾选打印xls文件则由CreateObject("excel.application")函数创建与Excel的链接并自动打开第一个xls文件,根据设置情况只打印当前工作表或打印整个工作薄,打印完成后自动关闭并打开下一个xls文件。
3.2 程序界面设计及主要控件功能介绍
程序界面主要分为文件输入及编辑区域、AutoCAD及Excel文件打印设置区域,界面内各主要控件功能介绍如下表:
3.3 程序代码设计
本程序代码主要包括557行vb代码和183行lisp代码,由于代码较长,本文重点介绍接口程序代码。在利用VB编写程序之前,要在VB环境中引用AutoCAD及Excel对象库。根据安装的软件版本不同,引用的库也是不同的,这里以cad2008和excel 2010为例,具体实施步骤是在VB语言编程环境中选择菜单栏“工程”中的“引用”,在弹出的列表框中分别选择“AutoCAD2008 Type Library”和Microsoft Excel 14.0 Object Library的复选框,并按“确定”键,这样就可以开始使用cad和excel了。其接口程序如下:
Public Sub ConnectToAcad() ‘vb连接cad接口程序
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.Application")
If Err Then Err.Clear
Set acadApp = CreateObject("AutoCAD.Application")
If Err Then
MsgBoxErr.Description
Exit Sub
End If
End If
acadApp.Visible = True
End Sub
Public Sub ConnectToExcel()‘vb连接excel接口程序
Dim xobject As Excel.Application
Set xobject = CreateObject("excel.application")
xobject.Visible = True
End Sub
3.4 程序运行实例
恩施某二级公路绕镇工程,路线全长约7公里,施工图设计文件共有图纸701页,绝大多数为AutoCAD及Excel文件,其中第三篇(路基路面)包含32个文件共计125张图纸。以打印AutoCAD文件为例,分别采用软件自带命令及本程序進行测试,若采用软件自带命令打印,需计算打印比例、点选打印窗口、设置纸张大小及打印样式,打印一张图纸平均耗时约30秒钟,完成上述125张图纸的打印工作耗时约60分钟,同时需点击鼠标上千次。而采用本程序选择文件及设置参数只需点击鼠标10余次,耗时约30秒钟,之后程序不再需要人工操作,开始全自动批量打印,耗时约2分钟。二者对比即可发现,本程序优势非常明显。
4 结语
目前,AutoCAD与Excel软件已经被广泛地应用到了工程设计的各个领域,成为广大工程技术设计人员的一个重要绘图及制表工具,面对成百上千的图纸,采用软件自带功能打印时,每次均需要设置相关打印参数,对dwg文件还需要点选打印范围及设置打印比例,操作过程较为繁琐,更是费时费力。因此开发出AutoCAD与Excel文件不开图自动批量打印程序具有很高的实用价值,本程序在使用时只需结合实际需要对参数进行一些简单的设置,具有操作简便、自动化和智能化程度较高,输出图纸便捷等优点,实现了对以往许多繁琐复杂的手工工作的自动化、批量化处理,大幅提高了工作效率。
参考文献
[1] 郭秀娟, 等. AutoLISP语言程序设计[M]. 北京:化学工业出版社, 2008
[2] 陈伯雄, 冯伟. VisualLISP程序设计--技巧与范例[M]. 北京:人民邮电出版社, 2002
[3] 吴永进, 林美樱. AutoCAD完全应用指南.AutoLISP+DCL+Visual LISP程序设计篇[M]. 北京:科学出版社, 2009