一、總體設(shè)計(jì)
此圖形工具主要針對圖形中的文字做轉(zhuǎn)換,但涉及到圖形文字字體選擇和設(shè)置的問題。另外,為了達(dá)到準(zhǔn)確一致的要求,還必須對替換的標(biāo)準(zhǔn)字典進(jìn)行管理。因此,這個軟件的總體結(jié)構(gòu)如圖1所示。主要功能模塊的定義如下。
(1)圖形設(shè)置:通過樣式管理器、字體設(shè)置和標(biāo)注設(shè)置這三種方式對圖形定義的字體和標(biāo)注形式進(jìn)行管理,以保 證圖樣能顯示中文、字體和標(biāo)注符合相關(guān)標(biāo)準(zhǔn)。
( 2 ) 圖形轉(zhuǎn)換:實(shí)現(xiàn)對圖形中 文字的替換。可選擇不同的字典,按 字典中的條目對字字進(jìn)行“翻譯”。
(3)字典管理:用以創(chuàng)建、修改字典。用戶創(chuàng)建英漢字典、標(biāo)準(zhǔn)對照、材 料對照字典后,就可通過“圖形轉(zhuǎn)換” 操作對圖樣進(jìn)行轉(zhuǎn)換。
(4)系統(tǒng)設(shè)置:主要方便用戶對系統(tǒng) 相關(guān)文件的管理。
此圖形工具插入到AutoCAD環(huán)境中, 用戶界面是在C A D中加入菜單(如圖2所 示),再通過對話框的形式進(jìn)行操作。
二、概要設(shè)計(jì)
(1)圖形設(shè)置模塊;主要利用VBA與AutoCAD模型對象之間的良好接口,通過對話框的形式與用戶交互,方便實(shí)現(xiàn)圖形的文本樣式和標(biāo)注樣式。按照總體設(shè)計(jì)規(guī)劃并結(jié)合用戶操作習(xí)慣設(shè)計(jì)出如下幾個對話框(見圖3),即可進(jìn)入詳細(xì)設(shè)計(jì)階段。
(2)文本轉(zhuǎn)換模塊:主要完成對圖形中所有文字的替換,如圖4所示。這些文字可能是單行文本、多行文本、屬性和標(biāo)注文字,為了程序的結(jié)構(gòu)清晰,設(shè)計(jì)Get Text和Set Text兩個通用過程處理。 另外,圖形中還含有塊參照且可能這些塊是嵌套的,因此將文本轉(zhuǎn)換設(shè)計(jì)為一個遞歸過程。
(3)字典操作:是本程序的重頭,鑒于面向?qū)ο蟮膬?yōu)越性,通過構(gòu)造一 個字典類來實(shí)現(xiàn)對數(shù)據(jù)的維護(hù)和操作, 從而把與字典有關(guān)的操作全部集中到字典類上。它包含以下內(nèi)容:常數(shù):
dicmax——定義字典允許的最大的詞條數(shù),根據(jù)運(yùn)行效率、內(nèi)存占用和實(shí)際需求設(shè)定其數(shù)值;屬性:Count——字典實(shí)際詞條數(shù),data——詞條;方法:
Clear——清空字典,Add——添加詞條,Update——更新詞條,Search——查找,Cov——實(shí)現(xiàn)文字翻譯,L o a d——裝入字典,Save——保存字典。
(4)系統(tǒng)設(shè)置:主要指定系統(tǒng)工作路 徑、字體文件路徑、字典文件路徑,并 保存在Windows注冊表中。
三、詳細(xì)設(shè)計(jì)
詳細(xì)設(shè)計(jì)是對概要設(shè)計(jì)的內(nèi)容進(jìn)行編碼,具備有一定的編程能力且熟悉V B A 和AutoCAD模型對象就可順利完成,其中 字典類的代碼如下。
‘數(shù)據(jù)
Const dicMAX = 1000 ‘ 定義最大詞條數(shù),根據(jù)實(shí)際需要和系統(tǒng)性能定#p#分頁標(biāo)題#e#
Private DicData() As String ‘詞條數(shù)組
Private dicCount As Integer ‘詞條總數(shù)
‘只讀屬性data
Property Get data() As Variant data = DicData
End Property
‘只讀屬性count
Property Get count() As Integer count = dicCount
End Property
‘A d d操作,成功返回T r u e,e n g— 原文,chn—譯文
Function Add(eng As String, chn
As String) As Boolean
If dicCount >= dicMAX Then Add = False: Exit Function ‘如果詞條數(shù)超過 最大值則添加失敗
R e D i m P r e s e r v e D i c D a t a ( 1 , dicCount) ‘重定義詞條數(shù)組大小
DicData(0, dicCount) = eng DicData(1, dicCount) = chn dicCount = dicCount + 1
Add = True
End Function
‘ Update 操作,成功返回True,eng—原文,chn—譯文,Index—索引
Function Update(index As Integer,
eng As St ring, chn As St ring) As
Boolean
If index >= dicMAX Or index < 0
Then Update = False: Exit Function DicData(index, 0) = eng DicData(index, 1) = chn
Update = True
End Function
‘Search操作,成功返回查到的詞 條索引,失敗返回0
Function Search(eng AsString, ByRef chn As String) As Integer
For i = 0 To dicCount – 1
‘通過一個循環(huán)逐條比較
If DicData(i, 0) = eng Then
If DicData(i, 1) = "" Then
Search = 1 ‘ 查到原文,沒有對應(yīng)譯文,返回1
Else
Search = 2 ‘ 查到原文且有對應(yīng)譯文,返回2
chn = DicData(i, 1) End If
Exit Function
End If
Next
Search = 0‘沒有查到原文,返回0
End Function
‘內(nèi)部過程MyReplace,是Cov的 主過程,提取出來方便以后修改或升級
Private Function MyReplace(source As String, find As String, replace As String, op As Integer) As String
ls = Len(source)
lf = Len(find)
Dim k As Integer
k = I n S t r ( 1 , s o u r c e , f i n d , vbTextCompare) ‘在原文本中查找要查找的子串
While (k > 0)
Select Case op ‘ 按op的值
替換查找的子串
Case 1:
MyReplace = Left(source, k - 1) &replace ‘直接替換 Case 2:
MyReplace = Left(source, k - 1) &"(" & replace & ")"言之‘替換并在兩邊加 注括號
Case 3:
MyReplace = Left(source, k + lf - 1)& "(" & replace & ")" ‘保留原文并加括號 End Select
source = Right(source, ls - k + 1 - lf)
k= In Str(k+lf, source, find, vbTextCompare) 繼續(xù)查找下一處
Wend
MyReplace = MyReplace & source
End Function
‘Cov操作,s—原文本,op—翻譯選 項(xiàng);返回譯文,沒有翻譯時譯文=原文本
Function Cov(s As String, op As
Integer) As String
Cov = s
For i = 0 To dicCount - 1
Cov = MyReplace(Cov, DicData(0, i), DicData(1, i), op)
Next
End Function
‘Load操作,讀入字典文件,fn— 字典文件的全路徑和名稱
Function Load(fn As String) As
Boolean
On Error GoTo l1
Open fn For Input As #1
‘打開文件
Dim e As String, c As String
While Not EOF(1)#p#分頁標(biāo)題#e#
Input #1, e, c‘讀入詞條 Add e, c ‘加入字典 Wend
Close 1 ‘關(guān)閉文件 Load = True
Exit Function l1:
Load = False ‘如遇錯誤,返 回失敗
End Function
‘S a v e操作,寫出字典文件,f n— 字典文件的全路徑和名稱
Function Save(fn As String) As
Boolean
On Error GoTo l1
Open fn For Output As #1
‘打開文件,準(zhǔn)備寫入
For i = 0 To dicCount - 1
Write #1, DicData(0, i), DicData(1, i)
‘寫詞條 Next
Close 1 關(guān)閉文件 Save = True
Exit Function l1:
Save = False ‘ 如 遇 錯 誤,返回失敗
End Function
‘Clear操作,清空
Sub Clear()
dicCount = 0
‘詞條計(jì)數(shù)值勤0
ReDim DicData(1, 0)
‘詞條數(shù)組清空 End Sub
‘ 初 始 操 作 , 將 dicCount值0,(在VB中 可省略)
Private Sub Class_
Initialize()
dicCount = 0
End Sub
四、軟件測試
這個軟件是筆者設(shè)計(jì)的一個小軟件,通過調(diào)試,軟件能正常運(yùn)行實(shí)現(xiàn)工程圖樣轉(zhuǎn)換。
五、結(jié)論
軟件完成后,試用的效果實(shí)用、方便、快捷,維護(hù)方便。由此可以得出以下體會:
◎個人進(jìn)行C A D二次開發(fā)來創(chuàng)建一 個簡單實(shí)用的圖形工具是完全能夠?qū)?現(xiàn)的;
◎個人用V B A進(jìn)行C A D二次開發(fā)效率 高,可維護(hù)性強(qiáng),不存在與AutoCAD各版 本不兼容的問題;
◎通過對話框的形式實(shí)現(xiàn)軟件與用 戶的交互很直觀,也很方便。
相關(guān)文章
- 2021-08-23零基礎(chǔ)學(xué)AutoCAD 2012電氣制圖工程應(yīng)用 [張立富,陳剛,彭
- 2021-08-23輕松學(xué)AutoCAD 2015電氣工程制圖升級版 [李波 編著] 2
- 2021-08-19十天成為繪圖高手AutoCAD 工程繪圖禁忌與技巧 [劉朝暉
- 2021-08-18土木工程CAD基礎(chǔ)AutoCAD 軟件基礎(chǔ)教程 第二版 [鄧芃
- 2021-08-05中文版AutoCAD 工程制圖213版 [崔曉利 編著] 2013年P(guān)D
- 2021-08-05中文版AutoCAD 工程制圖2014版 [崔曉利,賈立紅,陳國治
- 2021-08-05中文版AutoCAD 工程制圖上機(jī)練習(xí)與指導(dǎo)2013版 [崔曉利
- 2021-08-04中文版AutoCAD工程制圖(2011版)PDF下載
- 2021-08-01Visual Basic與AutoCAD二次開發(fā)PDF下載
- 2021-08-01Mastering AutoCAD Civil 3D 2010PDF下載