摘 要:一个公路工程项目设计成果往往包含百上千张图纸,图纸打印是一项既繁琐有费时的工作,为提高设计人员大批量打印设计图纸的工作效率,本文采用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文件并实时显示在主界面列表框中,同时可通过删除按钮删除文件、保存列表按钮保存文件、移动按钮改变文件顺序等。
  根据实际需要读取参数设置文件或对手动对默认参数进行修改、保存等。
  打印文件列表及打印参数准备完毕后点击批量打印按钮,自此程序开始全自动操作,依次按顺序自动打开文件,并判断文件类型,根据设置对不同类型的文件执行不同的操作。
basic语言是什么软件
  若勾选打印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 结语

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。