autocad二次開(kāi)發(fā)在鋼結(jié)構(gòu)深化設(shè)計(jì)中的應(yīng)用_第1頁(yè)
已閱讀1頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  Autocad二次開(kāi)發(fā)在鋼結(jié)構(gòu)深化設(shè)計(jì)中的應(yīng)用</p><p>  摘要:目前,在廠房等鋼結(jié)構(gòu)的細(xì)化過(guò)程中廣泛采用Autocad進(jìn)行繪圖。本文在Autocad基礎(chǔ)上,利用其自帶的擴(kuò)展模塊Autolisp對(duì)其進(jìn)行二次開(kāi)發(fā),在AutoCAD的繪圖環(huán)境中建立零件的數(shù)據(jù)庫(kù)。重點(diǎn)介紹了開(kāi)發(fā)的過(guò)程,數(shù)據(jù)的存儲(chǔ)格式,以及與數(shù)據(jù)相關(guān)的操作函數(shù),給出了關(guān)鍵代碼等。 </p><p> 

2、 關(guān)鍵詞: 鋼結(jié)構(gòu)深化設(shè)計(jì) 二次開(kāi)發(fā)鏈表DCL </p><p>  中圖分類(lèi)號(hào):TU291 文獻(xiàn)標(biāo)識(shí)碼:A </p><p><b>  前言 </b></p><p>  Autocad是美國(guó)歐特克公司開(kāi)發(fā)的大型繪圖軟件,該軟件因其強(qiáng)大的圖形繪制及圖形編輯功能而廣泛的應(yīng)用于建筑,機(jī)械,化工等各個(gè)行業(yè)。在廠房等鋼結(jié)構(gòu)的深化設(shè)計(jì)過(guò)程中,也廣泛采

3、用該軟件進(jìn)行放樣。但是,該軟件屬于通用的繪圖軟件,并非專(zhuān)業(yè)為鋼結(jié)構(gòu)放樣設(shè)計(jì)。通過(guò)對(duì)其進(jìn)行二次開(kāi)發(fā),可以在AutoCAD中形成有利于深化設(shè)計(jì)的環(huán)境。如在對(duì)鋼結(jié)構(gòu)完成深化設(shè)計(jì)后,經(jīng)常有生成材料明細(xì)表,材料的統(tǒng)計(jì)(如統(tǒng)計(jì)某種型號(hào)鋼材的使用量)等工作。以上過(guò)程都會(huì)涉及零件信息的錄入、整理、列表,零件圖形的繪圖等的內(nèi)容。由于AutoCAD中沒(méi)有相應(yīng)的模塊,人工操作起來(lái)費(fèi)時(shí)費(fèi)力,效率低,并且容易出錯(cuò)。解決辦法是,在AutoCAD中建立統(tǒng)一的零件數(shù)據(jù)

4、庫(kù),當(dāng)需要時(shí)可以直接的調(diào)用。 </p><p>  Autolisp 是Autocad自帶的二次開(kāi)發(fā)軟件。LISP語(yǔ)言具有語(yǔ)法簡(jiǎn)單,編寫(xiě)程序便捷、靈活,數(shù)據(jù)類(lèi)型豐富等特點(diǎn),適用于大多數(shù)初學(xué)者。利用Autolisp可對(duì)Autocad的數(shù)據(jù)庫(kù)進(jìn)行修改,也可用于繪制復(fù)雜的圖形。本文利用Autolisp對(duì)Autocad進(jìn)行二次開(kāi)發(fā),在Autocad中形成一個(gè)零件的數(shù)據(jù)庫(kù)。以這個(gè)數(shù)據(jù)庫(kù)為基礎(chǔ),可以完成零件清單的自動(dòng)生成,零

5、件圖形的自動(dòng)繪制等工作。 </p><p><b>  關(guān)鍵技術(shù) </b></p><p>  Autocad 圖元 </p><p>  在Autocad中,最基本的圖形對(duì)象叫圖元,圖元是以圖元表的形式存在于進(jìn)程中。圖元表記錄著圖元的名字、類(lèi)型、幾何數(shù)據(jù)、圖層、顏色等信息。如直線在內(nèi)存中存儲(chǔ)的格式為:((-1 . )(0 . "LI

6、NE") (330 . ) (5 . "4E6F")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0") (100 . "AcDbLine") (10 -14068.7 18786.4 0.0) (11 -2194.93 21807.6 0.0) (210 0.0 0.0 1.

7、0))。其中,代碼8表示圖元位于0圖層,代碼10和11分別給出了直線的起點(diǎn)及終點(diǎn)信息,代碼100表示圖元的類(lèi)型為直線。關(guān)于各個(gè)組碼所代表的意義,可以在AutoCAD DXF參考手冊(cè)查到。通過(guò)修改或創(chuàng)建圖元表,可以實(shí)現(xiàn)編輯或生成圖元。 </p><p>  Xrecord數(shù)據(jù) </p><p>  Xrecord是Autocad提供給用戶(hù)的另外一種圖元形式,和其他類(lèi)型的圖元相同,該類(lèi)型的圖元

8、在內(nèi)存中也是以數(shù)據(jù)表的形式進(jìn)行存儲(chǔ)。但是該類(lèi)型的數(shù)據(jù)不依附于任何圖形對(duì)象,獨(dú)立的存在于當(dāng)前DWG進(jìn)程中。用戶(hù)可以根據(jù)自己的需要,借助Xrecord數(shù)據(jù),描述自己需要的數(shù)據(jù)類(lèi)型。創(chuàng)建這樣的Xrecord需要有兩部分:規(guī)范部分和用戶(hù)部分。規(guī)范結(jié)構(gòu)部分,必須是AutoCAD能夠接受的內(nèi)容,一般來(lái)說(shuō)要有對(duì)象名和數(shù)據(jù)子集名。例如:(0 . "XRECORD")(100 . "AcDbXrecord") 用戶(hù)

9、數(shù)據(jù)部分就比較隨意了,可以是任何VLISP能夠處理的數(shù)據(jù)。為了能夠用函數(shù)建立這些數(shù)據(jù),又能被順利提取和編輯,應(yīng)當(dāng)按照AutoCAD對(duì)象數(shù)據(jù)表的結(jié)構(gòu)組建,并按照DXF組碼以及配套的數(shù)據(jù)類(lèi)型填寫(xiě)。DXF組碼的可用范圍是1-369,原則上一個(gè)組碼只能出現(xiàn)一次。 </p><p>  AutoCAD詞典對(duì)象 </p><p>  AutoCAD詞典對(duì)象(AcDbDictionary)是另外一種不依

10、附于任何圖形的圖元對(duì)象,Xrecord數(shù)據(jù)必須托付于某個(gè)詞典對(duì)象才能存在于進(jìn)程中,因此AutoCAD詞典對(duì)象可以看作Xrecord數(shù)據(jù)的集合。和Xrecord數(shù)據(jù)不同,AutoCAD詞典對(duì)象沒(méi)有用戶(hù)數(shù)據(jù)部分,用戶(hù)可以創(chuàng)建或根據(jù)名稱(chēng)找到某個(gè)AutoCAD詞典對(duì)象,但是不能加入任何的用戶(hù)數(shù)據(jù)。 </p><p><b>  數(shù)據(jù)架構(gòu)的提出 </b></p><p>  鋼

11、結(jié)構(gòu)的生產(chǎn)主要由下料、組立和拼裝等步驟組成,即利用剪板機(jī)、切割機(jī)等將原料(如鋼板、角鋼、工字鋼等)加工成所需規(guī)格后,再到拼裝平臺(tái)上組裝成鋼構(gòu)件。根據(jù)生產(chǎn)的實(shí)際需要,在圖紙完成分解后,要將零件的加工圖、鋼架圖(零件的組裝圖)交由不同的工段。為了便于以后的生產(chǎn),通常要將零件進(jìn)行編號(hào)。零件的編號(hào)主要由零件號(hào)碼及鋼架號(hào)碼(零件的歸屬,可以看作零件的集合)組成。根據(jù)兩種數(shù)據(jù)的不同特點(diǎn),零件宜采用Xrecord數(shù)據(jù),鋼架宜采用AutoCAD詞典對(duì)象

12、。 </p><p><b>  建立鋼架的詞典。 </b></p><p>  本程序?qū)槔L圖中的每一榀鋼架建立單獨(dú)的Autocad詞典對(duì)象,該詞典對(duì)象采用鋼架的名稱(chēng)進(jìn)行命名。不同的鋼架詞典之間采用單向鏈表形式相聯(lián)系,通過(guò)在上一個(gè)詞典中記錄鏈表中下一詞典對(duì)象的句柄建立鏈表。鏈表的起始單元為Frame_list_start,終止單元為Frame_list_end,鏈表

13、中除了表頭及表尾以外的其余元素均按字母的ASCII碼進(jìn)行排列。 </p><p>  由于Autocad詞典對(duì)象本身不具備數(shù)據(jù)擴(kuò)展的功能,鋼架的名稱(chēng)、數(shù)量,以及指向下一鏈表單元的指針(即下一詞典對(duì)象的句柄)均存在于以“index”為索引的Xrecord數(shù)據(jù)中。鏈表的結(jié)構(gòu)如圖一所示。 </p><p><b>  圖 1 </b></p><p>

14、;  建立零件信息的Xrecord數(shù)據(jù) </p><p>  鋼結(jié)構(gòu)加工中的零件一般由各種型鋼(如鋼板、角鋼、槽鋼,工字鋼等)經(jīng)切割、鉆孔等工藝加工而成,因此形狀一般比較簡(jiǎn)單,用原料的規(guī)格、零件的長(zhǎng)度,零件的厚度等參數(shù)即可完成表述。在本程序中,每個(gè)Xrecord數(shù)據(jù)代表一個(gè)零件。通過(guò)對(duì)DXF組碼設(shè)定不同的意義,完成零件信息的表述。關(guān)于不同DXF組碼在本程序中代表的意義,可以在圖表一中詳細(xì)的查到。 為了便于零件的查

15、詢(xún)、刪除等操作, 不同的零件在Autocad詞典中采用單向鏈表相聯(lián)系。其中表頭元素part_list_start,及表尾元素part_list_end在建立鋼架詞典的時(shí)候同時(shí)建立。指向指針存在于組碼為105的表中。 </p><p><b>  表格 1 </b></p><p>  數(shù)據(jù)類(lèi)型 代表意義 </p><p>  0 字符串 子類(lèi)標(biāo)

16、記 </p><p>  1 字符串 零件名稱(chēng) </p><p>  2 字符串 材料類(lèi)型 </p><p>  3 字符串 零件規(guī)格 </p><p>  5 字符串 圖元句柄 </p><p>  40 雙精度浮點(diǎn)值 長(zhǎng)度 </p><p>  41 雙精度浮點(diǎn)值 寬度 </p>

17、<p>  42 雙精度浮點(diǎn)值 厚度 </p><p>  60 整數(shù)值 數(shù)量 </p><p>  105 句柄值的字符串 指向指針 </p><p><b>  關(guān)鍵代碼 </b></p><p>  在本程序中,不同的鋼架詞典之間以及不同零件(在同一鋼架中的)之間采用鏈表相互聯(lián)系,因此程序的核心在于鏈

18、表的操作。本文將重點(diǎn)對(duì)如何在鏈表中插入、刪除元素進(jìn)行說(shuō)明。 </p><p>  將新建鋼架詞典加入鏈表中 </p><p>  (defun insert_frame_to_frame_list(obj_name/ )(setq this_beam "frame_list_start")(setq next_beam (get_next_frame_name this

19、_beam))(while (not (or (< obj_name next_beam)(= next_beam"frame_list_end")))(setq this_beam next_beam)(setq next_beam (get_next_frame_name this_beam))) ; 獲取鋼架名稱(chēng)在鏈表中的位置 </p><p>  (if (= obj_name

20、this_beam)(princ "該鋼架已存在列表中!/n") (prong(seq obj_handel(cdr(assoc5(dictsearch(namedobjdict) obj_name))));獲取鏈表前一元素的句柄(setq next_beam_handel (cdr(assoc 5 (dictsearch (namedobjdict)next_beam))));獲取鏈表后一元素的句柄(change_

21、handel_next obj_name next_beam_handel)(change_handel_next this_beam obj_handel ) ) </p><p><b>  ) </b></p><p><b>  ) </b></p><p>  獲取下一鏈表單元的名稱(chēng) </p>&l

22、t;p>  (defun get_next_frame_name(name_of_this / )(vla-get-name(vlax-ename->vla-object(handent (cdr (assoc 105 (dictsearch(cdr (assoc -1 (dictsearch (namedobjdict) name_of_this))) "index" )))) ))) </p&g

23、t;<p><b>  從鏈表中刪除鋼架 </b></p><p>  (defun delete_frame_from_list( obj_name/)(setq x1 "frame_list_start")(setq x(get_next_frame_name x1))(while (not (or (= x obj_name) (= x "f

24、rame_list_end")))(setq x1 x)(setq x(get_next_frame_name x)) ) </p><p>  (if (= x "frame_list_end")(princ"未在列表中找到要?jiǎng)h除的元素!\n")(prong(setq x1_handel_next(get_next_frame_handel x))(change

25、_handel_next x1 x1_handel_next)(dictremove (namedobjdict) x) </p><p><b>  ) ) </b></p><p><b>  ) </b></p><p><b>  建立用戶(hù)界面 </b></p><p>

26、;  為了方便用戶(hù)建立和修改數(shù)據(jù),本程序采用了對(duì)話框的形式。對(duì)話框可以采用DCL語(yǔ)言進(jìn)行書(shū)寫(xiě)。由于篇幅有限,關(guān)于對(duì)話框的相關(guān)代碼就不在給出。用戶(hù)可在對(duì)話框中完成鋼架、零件等信息的建立和修改,以及表格的繪制等操作。圖二,和圖三給出了主要的對(duì)話框。 </p><p><b>  圖 2 </b></p><p><b>  圖 3 </b></

27、p><p><b>  結(jié)束語(yǔ) </b></p><p>  本文通過(guò)在AutoCAD中建立零件數(shù)據(jù)庫(kù),提出相關(guān)的操作函數(shù),實(shí)現(xiàn)了生成零件的明細(xì)表等其他功能。通過(guò)實(shí)踐中的應(yīng)用表明,在使用本程序后,大大提高了數(shù)據(jù)操作的準(zhǔn)確性,提升了工作的效率,并取得良好的經(jīng)濟(jì)效益。 </p><p><b>  參考文獻(xiàn) </b></p&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論