基于AutoCAD-VBA的批量文字替换方法探讨

2017-03-10 20:06:55
湖州职业技术学院学报 2017年1期
关键词:窗体批量二次开发

郑 宾

(陕西铁路工程职业技术学院 电气工程系, 陕西 渭南 714099)

基于AutoCAD-VBA的批量文字替换方法探讨

郑 宾

(陕西铁路工程职业技术学院 电气工程系, 陕西 渭南 714099)

通过VBA对AutoCAD的二次开发,设计了一个可以选择多个图形文件,并同时进行批量文字查找和替换的应用程序。比较之前通过命令行对话框的操作,解决了一次只能选择一个图形文件的问题,提高了工作效率,实际应用效果良好。

AutoCAD; VBA; 文字替换; 批量

AutoCAD是一款用于二维、三维绘图、设计文档的计算机辅助设计软件。AutoCAD绘图功能强大,但在数据处理、文档操作等方面有局限性[1]82。Visual Basic for Applications是Visual Basic的一种宏语言[2]564,可以通过VBA编程操作CAD的绘图对象[3]45-46,通过对AutoCAD的二次开发,避免绘图过程中的重复性工作,简化流程,使CAD准确、快速的优势得到最大的发挥。

在AutoCAD中,对文字查找和替换是通过打开文件标准对话框实现的,但每次只能选择一个文件,操作很不便捷。本文设计的程序仍然使用打开文件标准对话框这一功能,但是却允许同时选择多个文件,能够同时对多个图形进行文字查找和替换的操作,这在工程设计的过程中是一个非常实用的工具。

一、实例设计

本文通过AutoCAD-VBA设计一个批量文字替换的应用程序。

(1)运行AutoCAD2016,在【VBA管理器】中创建一个全局工程并选择保存路径,进行保存。

(2)选择【插入/用户窗体】菜单项,在程序中创建一个窗体frmMain,并添加以下控件:一个列表框控件用于显示选择的图形文件名称,两个文本框控件用来输入查找和替换的文字,四个命令按钮分别是添加、删除、取消、确定。

(3)在窗体的初始化事件中,清空列表框的元素,其实现代码为:

Private Sub UserForm_Initialize ()

IstFile.Clear

End Sub

(4)窗体中【添加】按钮的单击事件,用于显示标准对话框,获取用户的选择,并将选择的结果添加到列表框中,其实现代码为[4]53-55:

Private Sub cmdOpen_Click()

On Error GoTo errHandle

Dim a As Integer

Dim b As Integer

Dim c As Integer

Dim DocuName () As String

With comDlg

.CancelError= True

.MaxFileSize=32767

.DialogTitle=“请选择文件!”

.Filter=“文件(*.dwg)| dwgI*.dwg|所有文件(*.*)|*.*”

.FileName=“”

.ShowOpen

End With

(5)窗体中【删除】按钮的单击事件,用于从列表框中删除指定的元素,其实现代码为:

Private Sub cmdDelete_Click ()

If lstFile . ListCount >= 1 Then

If lstFile .List工ndex = -1 Then

MsgBox“请选择列表中的图形名称!”

Exit Sub

End If

lstFile.RemoveItem(lstFile.ListIndex)

End If

End Sub

(6)窗体中【确定】按钮的单击事件,用于打开每一个列表框中显示的图形文件,并且对文件进行文字替换的操作,其实现代码为:

Private Sub cmdOk__Click()

dim adT As AcadText

dim adMT As AcadMText

dim acdc As AcadSelectionSet

dim fType As Integer

If txtFind.Text=“” Or txtReplace.Text=“” Then

MsgBox“输入所要替换的字符串内容!”

Exit Sub

End If

If 1stFile.ListCount=0 Then

MsgBox“请添加所要操作的图形”

Exit Sub

End If

For I = 0 To file.ListCount

Application. Documents. Open File. list(i)

On Error Resume Next

Set adSS=This Drawing.SelectionSets .Add ( “acdc” )

If error Then

Set acdc=ThisDrawing. SelectionSets .Add ( “acdc” )

acdc.Clear

fType (0) =0: fData (0)=“TEXT”: fType (1)=8: fData (1)=“*”

acdc.Select acSelectionSetAll, , , fType,fData

For Each adT In acdc

With adT

If InStr( .TextString,strFind)Then .TextString=

ReplaceStr ( .TextString, strFind, strReplace, False)

End With

Next adT

For Each adMT In acdc

With adMT

If InStr( .TextString,strFind)Then .TextString=

ReplaceStr ( .TextString, strFind, strReplace, False)

End With

Next adMT

二、实例效果

(1)在VBA集成开发环境中,按下F5键运行程序,系统会弹出【批量文字替换】对话框。

(2)单击【添加】按钮,系统会弹出【选择图形文件】对话框。用户可以从中选择多个图形文件,单击【打开】按钮就可以将文件添加到【批量文字替换】对话框的文件列表中。

(3)在【批量文字替换】对话框中输入要替换的字符串和替换内容,单击【确定】按钮,就可以对指定的多个图形进行文字替换的操作。

相比于传统的CAD环境下,通过选择【编辑】下拉菜单下【查找】命令,会出现查找和替换对话框,查找位置选项下有“整个图形”“当前空间布局”“选定对象”,但只能对一个图形文件进行查找和替换的操作,相比较而言,批量替换程序具有明显的优势。

三、总结与提高

通过这个程序的设计,实现了在CAD中批量文字替换的功能,在实际使用过程中,程序运行稳定,提高了工作效率,效果良好。对话框的使用可以通过调用Windows标准浏览文件夹对话框的方法[5]35,也可以使用标准打开对话框实现多个选择,实际上,还可以自行编写打开文件对话框的程序。但是,这个批量文字替换程序也有一些不足之处,如:对多个图形中的特定对象不能具体进行设置和选择,同时,对不同行业中有特定需求和实际问题的用户,针对性不是很强。在今后,可以通过一些程序软件的嵌入和二次开发,来解决本行业个性化的实际问题。

[1] 郭庆龙.AutoCAD VBA在铁路信号工程设计中的应用[J].硅谷,2015(3).

[2] 张 勇.基于AutoCAD的二次开发技术的研究与实现[J].佳木斯大学学报,2016(4).

[3] 彭小红.CAD中实现工程图样自动化转换的研究[J].CAD/CAM与制造业信息化,2009(11).

[4] 卢彬源,何征坤.AutoCAD VBA在地形图批处理中的应用[J].北京测绘,2014(3).

[5] 吕延岗.Excel VBA在成绩管理中的应用[J].办公自动化,2014(4).

Study of Batch Replacement of Text Based on AutoCAD-VBA

ZHENG Bin

(Department of Electrical Engineering, Shanxi Railway Institute, Weinan 714000, China)

Visual basic for applications is an integrated development environment in AutoCAD application, also is an object-oriented visual structure programming language, which is widely used in various fields of practical work. Using VBA application to the Secondary Development of Auto-CAD, designing the application of batch text replacement and comparing with the previous command-line dialog box operation, proves that this application works more efficiency.

Autodesk Computer Aided Design; Visual Basic for Application; replacement of text; batch

2016-10-27

郑 宾(1978-),男,陕西渭南人,讲师,主要从事电子信息技术研究。

TP391.72

A

1672-2388(2017)01-0089-03

猜你喜欢
窗体批量二次开发
批量提交在配置分发中的应用
科学家(2021年24期)2021-04-25 12:55:27
浅谈基于Revit平台的二次开发
甘肃科技(2020年20期)2020-04-13 00:30:02
试谈Access 2007数据库在林业档案管理中的应用
档案天地(2019年5期)2019-06-12 05:12:02
浅谈Mastercam后处理器的二次开发
模具制造(2019年3期)2019-06-06 02:11:02
西门子Easy Screen对倒棱机床界面二次开发
浅议高校网银批量代发
基于AUTOIT3和VBA的POWERPOINT操作题自动批量批改
基于LayeredWindow的异形窗体局部刷新
中文信息(2014年2期)2014-03-06 23:49:14
考虑价差和再制造率的制造/再制造混合系统生产批量研究
基于Pro/E二次开发的推土铲参数化模块开发