AutoCAD二次開發(fā)全文-大學課件-在線文檔_第1頁
AutoCAD二次開發(fā)全文-大學課件-在線文檔_第2頁
AutoCAD二次開發(fā)全文-大學課件-在線文檔_第3頁
AutoCAD二次開發(fā)全文-大學課件-在線文檔_第4頁
AutoCAD二次開發(fā)全文-大學課件-在線文檔_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

1.二次開發(fā)概述二次開發(fā)可以實現(xiàn)的功能及其工程應(yīng)用二次開發(fā)工具的選擇關(guān)于二次開發(fā)工具的學習對軟件如何實現(xiàn)的一些構(gòu)想?yún)峭轙el次開發(fā)的含義CAD軟件的二次開發(fā)是指在現(xiàn)有的軟件基礎(chǔ)上,為了提高和完善軟件功能,使之更加符合用戶需求,而對軟件做的開發(fā)工作。其目的是提高設(shè)計質(zhì)量和效率,充分發(fā)揮通用CAD軟件的價值。二次開發(fā)將應(yīng)用對象的設(shè)計規(guī)范、構(gòu)造描述、設(shè)計方法等以約束關(guān)系的形式集成到通用CAD平臺中去,以使應(yīng)用對象的設(shè)計智能化、集成化。對土木工程軟件而言,基于AutoCAD平臺來開發(fā),有以下幾個優(yōu)點:(l)不用自己開發(fā)圖形平臺,可充分利用AutoCAD強大的圖形功能,大大縮短了研發(fā)時間;AutoCAD是一個被廣泛使用的通用平臺,提供了強大的繪圖編輯功能,可供各專業(yè)繪圖使用,大部分工程計算人員對此比較熟悉,在該平臺上開發(fā)軟件更具親和力;AutoCAD屬于開放性平臺,用戶如對AutoCAD二次開發(fā)比較熱悉,也可以加入自己的擴充程序。一、菜單專業(yè)軟件的菜單一定要有鮮明的專業(yè)特點。很多軟件只是在AutoCAD的原來菜單后加上一個菜單項或者將AutoCAD的屏幕菜單替換掉。這類軟件盡量對

AutoCAD不做修改,避免許多熟悉AutoCAD的用戶產(chǎn)生不習慣的感覺。其實,

AutoCAD只是提供了一個基本繪圖環(huán)境,它涉及各行各業(yè),沒有任何偏重,由于沒有較好的二次開發(fā)軟件,廣大用戶才不得不去適應(yīng)AutoCAD的菜單。就土木專業(yè)而言,其菜單項只有文件、設(shè)定兩項以及一些繪圖、修改命令經(jīng)常用到,大部分菜單項平時都用不上。對AutoCAD菜單進行重新組合,增加一些實用工具菜單項,讓菜單具有鮮明的專業(yè)特點,這樣才能讓設(shè)計人員繪圖時得心應(yīng)手,擁有一個良好的設(shè)計環(huán)境。二、圖庫土木專業(yè)需要大量的節(jié)點詳圖,如框架、剪力墻構(gòu)造節(jié)點,拉墻筋大樣,基礎(chǔ)詳圖等等。每個設(shè)計師手頭都會保留或多或少這樣的節(jié)點圖。直接調(diào)入或者調(diào)入后稍加修改,就能運用于不同的項目設(shè)計,這樣可以大大減輕設(shè)計師的負擔。如果沒有專業(yè)圖庫,制圖時要用到某個大樣時,結(jié)構(gòu)師只能憑著記憶打開其它圖形文件去搜尋,然后用BLOCK命令制作成圖塊,再用INSERT命令插入本圖。而且,不同的項目設(shè)計,不同的圖形文件,可能會有不同的輸出比例,弄不清比例會使得插入的圖塊大小失調(diào),嚴重影響圖面質(zhì)量。因此,建立圖庫是二次開發(fā)的一項重要內(nèi)容。三、應(yīng)用程序作為最強大的圖形支撐系統(tǒng),AutoCAD提供了豐富的圖形編輯命令,但對于專業(yè)人員,還遠遠不夠。舉例來說:在結(jié)構(gòu)平面圖中畫一根鋼筋,一級鋼筋的彎鉤是很難畫的,畫起來不但很費時間,而且掌握不好要么太大,要么太小,影響圖面質(zhì)量。又如:要把所有的字高由2.5mm改為3mm,用

CHANGE命令一個一個去修改,將使人無法忍受。其實用程序?qū)崿F(xiàn)這些功能是很簡單的。其它如批量修改文本的高度、字型、寬高比,炸開、連接文本,將兩根直線連接為一根直線,給一根PLINE線加上鋼筋彎頭,畫鋼筋點、箍筋等等,都可以用程序?qū)崿F(xiàn)。編寫這些實用程序,可以用簡單的操作完成許多復雜的工序,能為結(jié)構(gòu)設(shè)計人員完成許多瑣碎的工作,從而盡量將設(shè)計人員解放出來,使他們有更多的時間去進行創(chuàng)造性勞動。四、簡化命令,自定義命令A(yù)CAD.PGP中提供的簡化命令較少,有些還不是特別簡捷。例如將“C”定義為CIRCLE,而將“CP”定義為COPY。其實COPY命令遠遠比CIRCLE命令應(yīng)用得頻繁。為何不將“C”定義為COPY,而將“CI”定義為CIRCLE呢?其它如將“O”定義為OFFSET,“F”定義為FILLET,“D”定義為DDEDIT等等。應(yīng)該形成一個標準,讓大家統(tǒng)一起來,避免因習慣上的差異導致使用不便。五、用AutoCAD作為結(jié)構(gòu)分析軟件的前后處理工具結(jié)構(gòu)計算分析軟件最初都是通過填寫數(shù)據(jù)文件的方式來輸入數(shù)據(jù)的。這種方法很不直觀,而且容易出錯,很可能由于錯誤的輸入數(shù)據(jù)導致錯誤的計算結(jié)果。因為如此,許多結(jié)構(gòu)分析軟件都推出了自己的圖形支撐系。如PMPK,

TBSA系列,都有自己的圖形前處理部分。通過人機交互式輸入,不僅更直觀,大大提高工作效率,也更容易對工程進行直接修改。由于計算分析軟件的重點在計算分析上,在圖形前后處理上不可能有太大投入,其圖形處理部分往往比較簡單,與AutoCAD這樣強大的圖形支撐系統(tǒng)相比,功能和界面都相差很多。所以,用AutoCAD作為前處理工具,可以說是節(jié)省了一大筆不必的開銷。而且,AutoCAD經(jīng)過多年發(fā)展,其核心內(nèi)容已基本公開,這就更容易提供出多個計算分析軟件的數(shù)據(jù)接口,使得一個工程用幾個不同的計算軟件進行結(jié)構(gòu)分析成為可能。在后處理方面,AutoCAD強大的圖形編輯功能也使其它圖形支撐系統(tǒng)望塵莫及。預(yù)應(yīng)力鋼結(jié)構(gòu)的非線性分析及CAD實現(xiàn)基于AutoCAD平臺的鋼結(jié)構(gòu)軟件前處理設(shè)計鋼塔架CAD系統(tǒng)的研制和開發(fā)基于面向?qū)ο蟮膽冶酆蛦沃蔚叵逻B續(xù)墻CAD開發(fā)基于ARX平臺的鋼結(jié)構(gòu)實體建模及施工圖繪制基于ObjectARX的橋梁施工圖繪制研究基于ObjectARX的索膜結(jié)構(gòu)形態(tài)分析CAD系統(tǒng)開發(fā)基于ObjectARX的擋土墻繪圖系統(tǒng)的研究與開發(fā)基于ObjectARX門式剛架輕鋼CAD軟件開發(fā)基于ObjectARX的無粘結(jié)預(yù)應(yīng)力樓蓋CAD系統(tǒng)的開發(fā)AutoCAD提供了以下幾種主要的開發(fā)工具:以C/C++為基礎(chǔ)的ObjectARX簡稱ARX基于ActiveX技術(shù)的VBA開發(fā)簡稱VBAAutoLISP/VisualLISP開發(fā)工具 簡稱VLISP基于C#、VB.NET、托管C++等.NET技術(shù)開發(fā)LISP:LISP語言是

期的人工智能語言之一,為更好地開發(fā)AutoCAD,自

AutoCAD2.18版以后均內(nèi)嵌了AUTOLISP程序,是第一種能對AutoCAD進行二次開發(fā)的語言,在我國有相當多的軟件都是采用AUTOLISP程序編寫的。到2000版發(fā)展為Visual

LISP程序。LISP語言語法上最大的特點就是表+函數(shù)的結(jié)構(gòu)。就連最基本的+運算都需利用函數(shù)的概念執(zhí)行。LISP用表來描述一切,并不能很好地反映現(xiàn)實世界和過程,跟人的思維方式不一致。雖然有很多專家認為語言規(guī)則易學易用是LISP的一大優(yōu)點,但是由于現(xiàn)在我們普遍具備一定的編程能力,轉(zhuǎn)換到LISP的語法會產(chǎn)生不適應(yīng),需要一定時間的適應(yīng),所以我個人覺得花大力氣研究VLISP不值得。LISP程序?qū)嵗河嬎阆旅婀剑海╠efun

fx1(

)(+

(

*

a

b)

(*

2

x

x)

(expt

2

(*

3

x)

)

)

)VBA:這種工具對初學者來說非常友好,VisualBasic的代碼閱讀起來簡單易懂。如果你對VBA非常精通,可以通過再對AutoCAD命令行進行仔細研究和分類,這樣你就能實現(xiàn)LISP所能完成的所有功能!對VBA來說,最大的遺憾就是不能向AutoCAD注冊命令,必須先用各種加載應(yīng)用程序的方法將其對應(yīng)的dvb文件加載,然后通過“工具/宏/宏”菜單項執(zhí)行,或者在菜單項和自定義的工具欄按鈕中執(zhí)行。其一大優(yōu)點是可以很容易地使用windows系統(tǒng)資源,使AutoCAD能較好地

與其他windows下的應(yīng)用軟件交互。最典型的例子就是利用Excel進行數(shù)據(jù)操作。VBA對話框設(shè)計能力也十分突出。VBA是以對象作為數(shù)據(jù)處理的基本單元,在AutoCAD中堪稱特色的CAGD技術(shù)在VBA中則無法實現(xiàn)。如Trim、Extend、Dim-Diameter之類的命令都不能真正實施,要想完成這樣的操作,相關(guān)數(shù)據(jù)只能在程序中自己計算。ARX:ARX程序本質(zhì)上是Windows動態(tài)連接庫(DLL)程序,與AutoCAD共

享地址空間,直接調(diào)用AutoCAD的核心函數(shù),可直接訪問AutoCAD數(shù)據(jù)庫的核心數(shù)據(jù)結(jié)構(gòu)和代碼,以便能夠在運行期間擴展AutoCAD固有的類及其功能,創(chuàng)建能夠全面享受AutoCAD固有命令特權(quán)的新命令。由于ARX是使用VisualC++作為基本程序設(shè)計語言,無論其效率、數(shù)據(jù)處理和軟硬件的控制能力都是最好的,是唯一能針對多圖檔環(huán)境的程序設(shè)計方法,是從根本上拓展VLISP和VBA的程序設(shè)計方法。此外,這也是唯一一種能夠確保你的代碼安全(不被別人閱讀或非法復制)的開發(fā)工具。在三種開發(fā)工具中,這種工具擁有對AutoCAD最深入的控制能力。這種便利的代價就是編制ARX程序比VBA和LISP程序需要花費更多的時間,因此用來編制簡單的繪圖工具有點浪費了。要掌握ARX的前提是你對C和C++比較熟悉。1.AutoCAD二次開發(fā)和一般的程序設(shè)計有何不同?從之前對三種開發(fā)工具特點的描述中可以看出,三種開發(fā)工具分別用了不同的技術(shù)手段,這就導致它們在代碼上會有很大的不同。VBA通過ActiveXAutomation接口將消息發(fā)送到AutoCAD,對象是所有ActiveX應(yīng)用程序的主要構(gòu)造塊。Public

Sub

SimpleCreateLine()Dim

startPoint(0

to

2)

As

Double,

endPoint(0

to

2)

As

DoubleSetPoint3d

startPoint,0

,0

,0SetPoint3d

endPoint,100,

100,

0Dim

line

As

AcadLineSet

Line=

ThisDrawing.ModelSpace.Addline(startPoint,

endPoint)然而在編寫一個ARX程序的過程中,必須對AutoCAD的數(shù)據(jù)庫有一定的了解。要創(chuàng)建一個圖形對象,需要遵循下面的基本步驟:確定要創(chuàng)建對象的圖形數(shù)據(jù)庫;獲得圖形數(shù)據(jù)庫的塊表;獲得一個存儲實體的塊表記錄,所有模型空間的實體都存儲在模型空間的特定記錄中。創(chuàng)建實體類的一個對象,將該對象附加到特定的塊表記錄中。void

WWGCreateLine(){//在內(nèi)存上創(chuàng)建一個新的AcDbLine對象AcGePoint3d

ptStart(0,0,0);AcGePoint3d

ptEnd(100,100,0);AcDbLine

*pLine

=

new

AcDbLine(ptStart,

ptEnd);//獲得指向塊表的指針AcDbBlockTable

*pBlockTable;acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable,

AcDb::kForRead);//獲得指向特定的塊表記錄(模型空間)的指針AcDbBlockTableRecord

*pBlockTableRecord;pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);//將AcDbLine類的對象添加到塊表記錄中AcDbObjectId

lineId;pBlockTableRecord->appendAcDbEntity(lineId,

pLine);//關(guān)閉圖形數(shù)據(jù)庫的各種對象pBlockTable->close();pBlockTableRecord->close();pLine->close();}2.三種工具并不是完全獨立的前面介紹AutoCAD三種二次開發(fā)工具的特點,并不是讓大家比較選擇一種最喜歡的工具來編程。在實際開發(fā)的過程中,完全可以把程序分塊使用不同開發(fā)工具進行編程。最后可以通過AutoCAD的加載和開發(fā)工具之間的接口完成程序功能的整合。這樣更有利于合作分工?,F(xiàn)在比較可行的方案就是利用VBA進行一些簡單淺層的開發(fā)、交互對話框的制作、與Excel數(shù)據(jù)交換。利用ARX進行命令的注冊和高級功能的拓展。3.學習需要指出的是,ObjectARX并不等于C++,VBA并不等于VB,所以熟悉上述兩種語言的人,在使用時也需要學習大量的新知識。圖書:綜述:AutoCAD應(yīng)用開發(fā)技術(shù)瞿震主編中國電力出版社VLISP:Visual

LISP程序設(shè)計(AutoCAD

2006)李學志主編清華大學出版社VBA:AutoCAD

VBA&VB.NET開發(fā)基礎(chǔ)與實例教程張帆等主編中國電力出版社ARX:ObjectARX開發(fā)實例教程張帆主編未出版(電子書)網(wǎng)絡(luò)資源:CAD大觀園()

ObjectARX編程站(

http://www.ObjectARX.net)明經(jīng)通道(.)曉東CAD

()主要靠自學,遇到問題大家互相討論。充分利用圖書、網(wǎng)絡(luò)資源由于Visual

LISP和VBA編輯器內(nèi)嵌于AutoCAD軟件中,所以只要安裝了AutoCAD程序,上述兩項工具的開發(fā)環(huán)境就已經(jīng)搭建完成。出于學習的需要,建議安裝AutoCAD2009。ObjectARX的開發(fā)環(huán)境的建立就復雜得多首先需要ObjectARX

SDK應(yīng)用程序可以從/objectarx下載。需要注意的是:一個AutoCAD版本對應(yīng)一個程序版本。例如:AutoCAD2008對應(yīng)于ObjectARX

2008。另外需要編輯器。AutoCAD2004以下的版本使用的VC++6.0,而現(xiàn)在比較新的AutoCAD版本則需要Visual

Studio

2005。這里遇到了一個問題。由于現(xiàn)在市面的教材比較陳舊,大多都是基于AutoCAD2000的開發(fā)教材。包括前面推薦的《ObjectARX開發(fā)實例教程》,它是針對AutoCAD2002版,使用VC++6.0作為編譯工具。由于版本原因,在此平臺上能夠成功運行的程序在高版本的AutoCAD中需要修改代碼重新編譯。我的建議是在學習的過程中還是選用VC++6.0+AutoCAD2002+ObjectARX2002的配置由于AutoCAD2002對現(xiàn)在新的操作系統(tǒng)如VISTA,WIN7不兼容。對于上述兩大操作系統(tǒng),可以安裝windows

xp虛擬機,這樣就可以順利安裝AutoCAD2002了。以O(shè)bjec

溫馨提示

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

評論

0/150

提交評論