当前位置:论文网 > 论文宝库 > 信息科技类 > 应用电子技术论文 > 正文

浅论基于CAD开发批量文字替换程序

来源:UC论文网2015-12-15 22:52

摘要:

摘 要: 本文陈述了基于CAD二次开发语言开发批量文字替换程序的目的与意义;详细阐述了二次开发技术组件语言OLE与VBA各自的特点;文章给出了批量文字替换程序的设计结构总图;重

摘 要:本文陈述了基于CAD二次开发语言开发批量文字替换程序的目的与意义;详细阐述了二次开发技术组件语言OLE与VBA各自的特点;文章给出了批量文字替换程序的设计结构总图;重点分析了批量文字替换程序的详细流程,并给出了各流程的部份程序代码;最后,笔者总结了本次程序开发给实际生产中带来的效率,并分析了程序存在的不足,希望能给广大读者带来一定的参考价值。

关键词:CAD,VBA,文字替换,二次开发 
根据《国务院关于开展第二次全国土地调查的通知》(国发〔2006〕38号,以下简称《通知》)的要求,按照国务院第二次全国土地调查领导小组办公室《第二次全国土地调查总体方案》、《广西第二次土地调查实施方案》的安排。为做好广西城镇土地调查工作的收尾成果,切实上交各种成果编制与汇总资料,需要对各县(市)城镇地籍数据库CAD标准分幅整理出图[1-2]。
  城镇地籍数据库需要的各种CAD图件较多,但最主要和基本的图件有城镇平面地籍图、城镇平面地形图、城镇平面现状图、城镇平面宗地图、城镇平面行政区图,而地籍图和地形图又常常是要求最高且费时费力最多的图件,内业生产部门员工在建库过程中需要及时制作这些图件以供分析比较,为设计提供依据,并为城镇地籍数据库报告提供相应数据,本文探讨利用计算机信息技术结合AutoCAD二次开发组件及语言开发批量文字替换程序,提高了工作效率、降低了工作强度。
1.开发组件与语言
1.1 OLE组件
  ActiveX Automation也称为ActiveX 自动化服务功能,以前也称为对象链接和嵌入(OLE)。OLE对象实际上就是别人的程序原封不动的拿来使用。可在 Visual Basic 应用程序中添加的最强大、最有用的功能之一就是在控件和控件之间、在控件和其它 Windows 应用程序之间拖动文本和图形。有了 OLE,就可将这种功能引入到应用程序中。
1.2 VBA语言
  VBA是一种强大的开发技术,它能快速定制富客户端(即用XML替代传统的HTML作为服务器端返回给客户端的数据载体)桌面被包装的程序,以及将它们与已存在的数据和系统整合在一起[3-4]。
  VBA提供了一个完整的开发环境(IDE),对于使用VB的开发者来说,它们有着相同的元素和功能,包括一个工程窗口、一个属性窗口和调试工具。VBA也支持窗体、创建自定义对话框和ActiveX、以及快速创建用户界面。通过直接整合到宿主应用程序中,VBA提供了一些优势:快速、在过程中执行、与宿主应用程序紧密整合(代码在文档、单元格等之后)、以及不需要运用其它工具创建解决方案的能力。 以下是VBA优点概述: 
完整且优秀的技术 
  许可VBA能使ISVs集中于他们的核心能力,而不是在语言开发。这能使他们提供给用户一个优秀的开发环境,也意味着ISVs不必用不同的工具和语言创建专有的技术。 
竞争优势 
  VBA为ISVs提供了竞争上的优势,他们为用户设法提供完全的定制和整合能力。能使用VBA的产品,ISVs可以创建扩充功能到他们的核心产品中,并且为用户提供了定制应用程序和添加功能和函数的技术以满足他们的需求。 
精简和扩充应用程序 
  VBA提供给ISVs一种直接创建基于VBA的向导到他们的产品中,以告诉用户是执行简单的或复杂的操作。在产品发布之后,VBA能使ISVs对他们的核心程序提供基于网络更新,在产品间传递新的功能和函数。 
宏记录 
  使用VBA和宏记录,ISVs能为最终用户自动完成重复性的工作任务提供一种简单的方式,并且也提供给开发者一种学习应用程序编程模型的简单的方法。 
一个极大的开发群体 
  通过许可VBA,ISVs能利用数百万已经熟悉VB编程技术的开发者优势,他们能使用ISV已包装的应用程序作为开发平台。ISVs也能利用已经在VB方面的巨大的基础优势: ①培训条件;②支持中心;③书籍和杂志;④会议(研讨会);⑤事件;⑥商业展示;⑦成千上万的ActiveX控件;⑧Web站点 
2.设计结构图
    批量文字替换程序设计的总体结构图如下:


图1 程序总体结构图
3.程序流程与代码
3.1 代码编写流程
  (1) 在AutoCAD2006中,打开【VBA管理器】对话框--【Visual Basic管理器】,创建一个新的工程,选择目录保存,进入VBA集成开发环境。
  (2) 在Auto CAD对象中右键选择【插入/用户窗体】菜单项,向对象程序中添加一个用户窗体,并在对象窗体中放置控件。
  (3) 在【工程资源管理器】窗口中双击新添加的窗体,在此代码窗口中添加窗体的启动代码。
  (4) 在窗体模块的通用代码区,添加公有变量的声明,并定义公用变量。
  (5) 窗体的初始化事件中,获得工程文件的路径,向命令按纽与列表框中添加元素,并且设置控件的初始状态。
  (6) 向各窗体模块中添加程序运行代码,编译运行程序。
3.2 程序代码
  (1) 目录代码
  为了能达到批量替换修改的目的,本程序采用多文件目录打开方式,多文件目录要比单文件目录稍微复杂一些, 多文件目录的部份代码如下:
  Dim i As Integer : Y As Integer : Z As Integer : fileNames() As String 
  With comDlg
  .CancelError = True
  .MaxFileSize = 32767
  .Flags = cdlOFNHideReadOnly Or cdlOFNAllowMultiselect Or cdlOFNExplorer Or cdlOFNNoDereferenceLinks
  .DialogTitle = ""选择图形文件""
  .Filter = ""图形文件(*.dwg)*.dwg所有文件(*.*)*.*""
  .FileName = """"
  .ShowOpen
  End With
  (2) 文件列表代码
  程序具体批量功能,批量文件列表代码如下:
  Dim count As Integer
  count = lstFile.ListCount
  If Y = 1 Then
          If Not HasItem(fileNames(Y - 1)) Then
              lstFile.AddItem fileNames(Y - 1), count
          End If
  Else
          For i = 1 To Y - 1
              If StrComp(Right$(fileNames(0), 1), """") = 0 Then
                  fileNames(i) = fileNames(0) & fileNames(i)
              Else
                  fileNames(i) = fileNames(0) & """" & fileNames(i)
              End If            
              If Not HasItem(fileNames(i)) Then
                  lstFile.AddItem fileNames(i), i - 1 + count
              End If
          Next i
  End If
  (3) 文字替换代码
  程序核心替换代码如下:
  ByVal newStr As String, ByVal firstOnly As Boolean) As String

  If searchStr = """" Then Exit Function
  If oldStr = """" Then Exit Function
  ReplaceStr = """"
  Dim i As Integer, oldStrLen As Integer, holdStr As String, StrLoc As Integer    
  oldStrLen = Len(oldStr)
  StrLoc = InStr(searchStr, oldStr)    
  While StrLoc > 0 
          StrLoc = InStr(searchStr, oldStr)
          If firstOnly Then ReplaceStr = holdStr & searchStr: Exit Function
  Wend    
  ReplaceStr = holdStr & searchStr
4.小结
  1.关于兼容性。这来自两方面,一方面是语言的问题,例如,在中英文版本中使用VBA对菜单栏和工具栏的操作会有所差异;另一方面是版本的兼容性问题,AutoCAD的应用软件一般是向下兼容的,这就会使得有些VBA程序在不同的语言环境或不同的版本中会发生运行错误。当然,如果您对AutoCAD了解得很清楚后,应该能避免这些问题。 
  2.代码的运行速度。相信这也能通过对AutoCAD的熟悉程度,以及利用一些技术和技巧来得以很好的解决。
参考文献
[1] 国土资源部.第二次全国土地调查培训教材[M].北京:中国农业出版社,2007.
[2] 马俊海,吕长广.全野外数字测图技术的现状与发展趋势[J].测绘与空间地理信息,2006,29(5):15—17.
[3]佟士懋.AutoCAD ActiveX/VBA二次开发技术基础及应用实例[M].北京:国防工业出版社,2006.
[4] 梁雪春,崔洪斌,吴义忠.AutoCAD实用教程[M].北京:人民邮电出版社,1998.

核心期刊推荐