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