我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網(wǎng)站首頁(yè) > CAD新聞

CAD中實(shí)現(xiàn)工程圖樣自動(dòng)化轉(zhuǎn)換的研究

時(shí)間:2009-12-24 13:49:22 來(lái)源:
 工程技術(shù)人員在相互交流過(guò)程中因所使用的評(píng)議和標(biāo)準(zhǔn)不同,彼此傳遞 的圖樣必須經(jīng)過(guò)轉(zhuǎn)換才能使用。其中絕大部分工作是對(duì)其中的標(biāo)注和注釋進(jìn)行 轉(zhuǎn)換,簡(jiǎn)單說(shuō)來(lái)就是把其中的文字做一 個(gè)替換。如果圖樣較多,人工操作很繁瑣,而且由于人工操作時(shí)個(gè)人水平和習(xí) 慣的不同,也會(huì)導(dǎo)致轉(zhuǎn)換結(jié)果不一致的問(wèn)題。因此有必要開(kāi)發(fā)一個(gè)圖樣轉(zhuǎn)換工具來(lái)替代人工操作。

  一、總體設(shè)計(jì)

  此圖形工具主要針對(duì)圖形中的文字做轉(zhuǎn)換,但涉及到圖形文字字體選擇和設(shè)置的問(wèn)題。另外,為了達(dá)到準(zhǔn)確一致的要求,還必須對(duì)替換的標(biāo)準(zhǔn)字典進(jìn)行管理。因此,這個(gè)軟件的總體結(jié)構(gòu)如圖1所示。主要功能模塊的定義如下。

  (1)圖形設(shè)置:通過(guò)樣式管理器、字體設(shè)置和標(biāo)注設(shè)置這三種方式對(duì)圖形定義的字體和標(biāo)注形式進(jìn)行管理,以保 證圖樣能顯示中文、字體和標(biāo)注符合相關(guān)標(biāo)準(zhǔn)。

  ( 2 ) 圖形轉(zhuǎn)換:實(shí)現(xiàn)對(duì)圖形中 文字的替換。可選擇不同的字典,按 字典中的條目對(duì)字字進(jìn)行“翻譯”。

  (3)字典管理:用以創(chuàng)建、修改字典。用戶(hù)創(chuàng)建英漢字典、標(biāo)準(zhǔn)對(duì)照、材 料對(duì)照字典后,就可通過(guò)“圖形轉(zhuǎn)換” 操作對(duì)圖樣進(jìn)行轉(zhuǎn)換。

  (4)系統(tǒng)設(shè)置:主要方便用戶(hù)對(duì)系統(tǒng) 相關(guān)文件的管理。

  此圖形工具插入到AutoCAD環(huán)境中, 用戶(hù)界面是在C A D中加入菜單(如圖2所 示),再通過(guò)對(duì)話框的形式進(jìn)行操作。

  二、概要設(shè)計(jì)

  (1)圖形設(shè)置模塊;主要利用VBA與AutoCAD模型對(duì)象之間的良好接口,通過(guò)對(duì)話框的形式與用戶(hù)交互,方便實(shí)現(xiàn)圖形的文本樣式和標(biāo)注樣式。按照總體設(shè)計(jì)規(guī)劃并結(jié)合用戶(hù)操作習(xí)慣設(shè)計(jì)出如下幾個(gè)對(duì)話框(見(jiàn)圖3),即可進(jìn)入詳細(xì)設(shè)計(jì)階段。

  (2)文本轉(zhuǎn)換模塊:主要完成對(duì)圖形中所有文字的替換,如圖4所示。這些文字可能是單行文本、多行文本、屬性和標(biāo)注文字,為了程序的結(jié)構(gòu)清晰,設(shè)計(jì)Get Text和Set Text兩個(gè)通用過(guò)程處理。 另外,圖形中還含有塊參照且可能這些塊是嵌套的,因此將文本轉(zhuǎn)換設(shè)計(jì)為一個(gè)遞歸過(guò)程。

  (3)字典操作:是本程序的重頭,鑒于面向?qū)ο蟮膬?yōu)越性,通過(guò)構(gòu)造一 個(gè)字典類(lèi)來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的維護(hù)和操作, 從而把與字典有關(guān)的操作全部集中到字典類(lèi)上。它包含以下內(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注冊(cè)表中。

  三、詳細(xì)設(shè)計(jì)

  詳細(xì)設(shè)計(jì)是對(duì)概要設(shè)計(jì)的內(nèi)容進(jìn)行編碼,具備有一定的編程能力且熟悉V B A 和AutoCAD模型對(duì)象就可順利完成,其中 字典類(lèi)的代碼如下。

  ‘數(shù)據(jù)

  Const dicMAX = 1000 ‘ 定義最大詞條數(shù),根據(jù)實(shí)際需要和系統(tǒng)性能定#p#分頁(yè)標(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ù)超過(guò) 最大值則添加失敗

  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

  ‘通過(guò)一個(gè)循環(huán)逐條比較

  If DicData(i, 0) = eng Then

  If DicData(i, 1) = "" Then

  Search = 1 ‘ 查到原文,沒(méi)有對(duì)應(yīng)譯文,返回1

  Else

  Search = 2 ‘ 查到原文且有對(duì)應(yīng)譯文,返回2

  chn = DicData(i, 1) End If

  Exit Function

  End If

  Next

  Search = 0‘沒(méi)有查到原文,返回0

  End Function

  ‘內(nèi)部過(guò)程MyReplace,是Cov的 主過(guò)程,提取出來(lái)方便以后修改或升級(jí)

  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 & ")"言之‘替換并在兩邊加 注括號(hào)

  Case 3:

  MyReplace = Left(source, k + lf - 1)& "(" & replace & ")" ‘保留原文并加括號(hào) 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);返回譯文,沒(méi)有翻譯時(shí)譯文=原文本

  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— 字典文件的全路徑和名稱(chēng)

  Function Load(fn As String) As

  Boolean

  On Error GoTo l1

  Open fn For Input As #1

  ‘打開(kāi)文件

  Dim e As String, c As String

  While Not EOF(1)#p#分頁(yè)標(biāo)題#e#

  Input #1, e, c‘讀入詞條 Add e, c ‘加入字典 Wend

  Close 1 ‘關(guān)閉文件 Load = True

  Exit Function l1:

  Load = False ‘如遇錯(cuò)誤,返 回失敗

  End Function

  ‘S a v e操作,寫(xiě)出字典文件,f n— 字典文件的全路徑和名稱(chēng)

  Function Save(fn As String) As

  Boolean

  On Error GoTo l1

  Open fn For Output As #1

  ‘打開(kāi)文件,準(zhǔn)備寫(xiě)入

  For i = 0 To dicCount - 1

  Write #1, DicData(0, i), DicData(1, i)

  ‘寫(xiě)詞條 Next

  Close 1 關(guān)閉文件 Save = True

  Exit Function l1:

  Save = False ‘ 如 遇 錯(cuò) 誤,返回失敗

  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

  四、軟件測(cè)試

  這個(gè)軟件是筆者設(shè)計(jì)的一個(gè)小軟件,通過(guò)調(diào)試,軟件能正常運(yùn)行實(shí)現(xiàn)工程圖樣轉(zhuǎn)換。

  五、結(jié)論

  軟件完成后,試用的效果實(shí)用、方便、快捷,維護(hù)方便。由此可以得出以下體會(huì):

  ◎個(gè)人進(jìn)行C A D二次開(kāi)發(fā)來(lái)創(chuàng)建一 個(gè)簡(jiǎn)單實(shí)用的圖形工具是完全能夠?qū)?現(xiàn)的;

  ◎個(gè)人用V B A進(jìn)行C A D二次開(kāi)發(fā)效率 高,可維護(hù)性強(qiáng),不存在與AutoCAD各版 本不兼容的問(wèn)題;

  ◎通過(guò)對(duì)話框的形式實(shí)現(xiàn)軟件與用 戶(hù)的交互很直觀,也很方便。