国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談AUTOCAD二次開(kāi)發(fā)在工程中的應(yīng)用

2008-03-30 09:46
建筑科技與管理 2008年10期
關(guān)鍵詞:二次開(kāi)發(fā)應(yīng)用

孟 魁

【摘 要】本文主要介紹當(dāng)今流行輔助設(shè)計(jì)軟件AutoCAD二次開(kāi)發(fā)的主要工具及方法,簡(jiǎn)單的介紹了難為一般用戶(hù)所掌握的ObjectARX,針對(duì)其中的能夠在短時(shí)間內(nèi)為非計(jì)算專(zhuān)業(yè)所掌握的ActiveX作了主要介紹,并結(jié)合實(shí)際工作對(duì)有關(guān)功能作出了細(xì)致地分析。

【關(guān)鍵詞】AutoCAD;二次開(kāi)發(fā);應(yīng)用

Discuss application of AUTOCAD 2ne development in engineering

Meng Kui

(Shaanxi province highway investigateion and design institute Xi'an Shaanxi 710068)

【Abstract】The article mainly introduced nowadays main tool and method of spreading the software two developments in AutoCAD of the assistance design and in brief introduced difficult is Object ARX that the general customer controls, aim at among them of can control for doing not compute profession at the in a short time of ActiveX made main introduction, and combine actual work to relevant the function made delicately analytical.

【Key words】AutoCAD; 2nd development; Application

AutoCAD是美國(guó)AUTODESK公司生產(chǎn)的功能強(qiáng)大的繪圖軟件,和它齊名的還有著名的MICROSTATION等軟件。但是在設(shè)計(jì)行業(yè),AUTOCAD能夠一枝獨(dú)秀,其原因在于AutoCAD有著完善的二次開(kāi)發(fā)環(huán)境,有高級(jí)語(yǔ)言為其提供專(zhuān)門(mén)的定制、開(kāi)發(fā)功能,使其能夠適應(yīng)各種需要,在不太復(fù)雜的開(kāi)發(fā)工作下,迅速的成為各行各業(yè)的專(zhuān)門(mén)軟件。作為一個(gè)工程技術(shù)人員,不能只把AutoCAD當(dāng)成一個(gè)繪圖板來(lái)使用,那是資源上的浪費(fèi),AutoCAD的目標(biāo)是使繪圖、出圖自動(dòng)化,用戶(hù)的手工工作只是一些簡(jiǎn)單的編輯美化工作!要達(dá)到這一點(diǎn)就必須要利用AutoCAD的二次開(kāi)發(fā)功能。

從AutoCAD的發(fā)展來(lái)看,它的二次開(kāi)發(fā)主要有如下發(fā)展階段:AUTOLISP、ADS、ARX和VBA?,F(xiàn)就它們的發(fā)展過(guò)程難易程度和優(yōu)劣一一說(shuō)明。

1. Autolisp

Autolisp是AUTOCAD最古老的一個(gè)開(kāi)發(fā)語(yǔ)言,到現(xiàn)在仍然保留。早期的Autolisp是一個(gè)內(nèi)嵌式語(yǔ)言,用其它如記事本等工具書(shū)寫(xiě),在AUTOCAD內(nèi)部調(diào)入使用,沒(méi)有自己的單獨(dú)開(kāi)發(fā)環(huán)境,學(xué)習(xí)起來(lái)不很容易。但是它能夠利用AutoCAD的內(nèi)部函數(shù),定制工具欄和啟動(dòng)組,缺點(diǎn)是是一門(mén)解釋性的語(yǔ)言,要和AutoCAD系統(tǒng)之間利用IPC機(jī)制進(jìn)行通訊,運(yùn)行速度較慢。到現(xiàn)在的AUTOCAD版本仍然保留了這門(mén)語(yǔ)言,并且有所發(fā)展。在AutoCAD2000版以后,改名叫作Visual Lisp,有了自己的開(kāi)發(fā)平臺(tái),可以脫離開(kāi)發(fā)環(huán)境獨(dú)立運(yùn)行,可以編譯,運(yùn)行速度有了很大的提高。筆者早期用它開(kāi)發(fā)過(guò)符號(hào)庫(kù),但是因?yàn)轭?lèi)似商業(yè)軟件的出現(xiàn),現(xiàn)在已經(jīng)不再使用了!下面是生成坎類(lèi)符號(hào)的源程序,筆者已經(jīng)調(diào)試通過(guò)。

(defun c:kz()

(setq start(getpoint “\n選擇起點(diǎn):”))

(setq end(getpoint “\n選擇終點(diǎn):”))

(setq di(distance start end))

(command “l(fā)ine” start end “”)

(setq a(angle start end))

(setq b(/ pi 2))

(setq c(+ a b))

(setq total 0)

(setq km 0)

(while (< km di)

(command “l(fā)ine”

(polar start 0 0)

(polar start c 1.5)

()

)

(command “l(fā)ine”

(setq start(polar start a 2))

(polar start 0 0)

()

)

(setq total(+ total 1))

(setq km(* total 2))

)

(command “redraw”)

(princ)

)

2. Ads

Ads是繼Autolisp以后出現(xiàn)的一種開(kāi)發(fā)方式,在AutoCAD R11以后出現(xiàn)。它是以C語(yǔ)言編寫(xiě)程序的設(shè)計(jì)環(huán)境,除了可以使用標(biāo)準(zhǔn)的C函數(shù)以外,還可以使用對(duì)AUTOCAD進(jìn)行操作ADS函數(shù),可以編譯成EXE文件以后被Autolisp作為一組外部函數(shù)裝入和調(diào)用。對(duì)于AutoCAD來(lái)說(shuō),Ads程序等價(jià)于Autolisp程序。優(yōu)點(diǎn)是保密性強(qiáng),有自己的開(kāi)發(fā)環(huán)境,好調(diào)試,易加載。缺點(diǎn)是根子里還是一門(mén)解釋性語(yǔ)言,需要和AutoCAD進(jìn)行通訊,運(yùn)行速度較慢!在AutoCAD2000版以后,Ads已被ARX所淘汰。故在此不做太多介紹!

3. ARX

ARX目前最先進(jìn)的的一種開(kāi)發(fā)方式,它的實(shí)質(zhì)一個(gè)動(dòng)態(tài)連接庫(kù),和AutoCAD在同一地址空間運(yùn)行,所以運(yùn)行速度很快。ARX能夠直接利用AutoCAD的內(nèi)核代碼,直接訪(fǎng)問(wèn)AutoCAD的數(shù)據(jù)庫(kù)、圖形系統(tǒng)和幾何造型中心 ,在運(yùn)行期間實(shí)時(shí)擴(kuò)展AutoCAD具有的類(lèi)及其功能,建立和AutoCAD本身固有的命令操作方式相同的新命令,它是一種全新的運(yùn)行模式。ARX需要Visual C++作為開(kāi)發(fā)環(huán)境,隨著AutoCAD版本的改進(jìn)Visual C++的編譯版本也要隨之提高。因?yàn)楹瘮?shù)名和頭文件的不同,一種版本AUTOCAD的SDK 開(kāi)發(fā)包開(kāi)發(fā)的程序只能在該版本下運(yùn)行。

ARX應(yīng)用程序的基本結(jié)構(gòu)包括頭文件,函數(shù)說(shuō)明部分,調(diào)用ARX應(yīng)用程序,初始化函數(shù),卸載函數(shù)定義,入口點(diǎn)函數(shù)定義和用戶(hù)程序主體函數(shù)定義等幾個(gè)部分,當(dāng)然這只是簡(jiǎn)單的程序,如果要用到用戶(hù)窗體等將要用到MFC編程技術(shù),使得程序界面更加漂亮,能夠支持?jǐn)?shù)據(jù)庫(kù)的訪(fǎng)問(wèn),程序組成將更加復(fù)雜。

要做ARX應(yīng)用程序,必須掌握Visual C++,這是一門(mén)非常難學(xué)的語(yǔ)言,指針是整個(gè)語(yǔ)言的核心,這就使得ARX在非專(zhuān)業(yè)領(lǐng)域的發(fā)展非常難。另外ARX應(yīng)用程序開(kāi)發(fā)周期長(zhǎng),調(diào)試?yán)щy,使得一些中小用戶(hù)盡量避免用它來(lái)做應(yīng)用程序。但是它非常專(zhuān)業(yè),能夠利用Visual C++的MFC類(lèi)庫(kù),做出的程序界面漂亮,所以大部分基于AutoCAD的專(zhuān)業(yè)軟件都是利用ARX來(lái)開(kāi)發(fā)的!在我們公路上著名的緯地程序和專(zhuān)業(yè)地形圖成圖軟件cass就是利用這種開(kāi)發(fā)模式作出來(lái)的,它的拖動(dòng)技術(shù)就是典型的對(duì)AutoCAD功能和命令的擴(kuò)展!

4. VBA開(kāi)發(fā)

VBA技術(shù)是在AutoCAD R14以后作為標(biāo)準(zhǔn)安裝組件的。利用AutoCAD對(duì)VBA的支持,用戶(hù)可以開(kāi)發(fā)VBA應(yīng)用程序,使用ActiveX對(duì)象。但是VBA畢竟不是VB,它只是使用VB的語(yǔ)法和算法,對(duì)于實(shí)體的定義及擴(kuò)展又有自己的底層實(shí)體庫(kù)。VB語(yǔ)言簡(jiǎn)單,易于推廣,而VBA功能強(qiáng)大,代碼利用率高,運(yùn)行迅速,作為專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō),VBA的確是適合我們的一個(gè)很好利用AutoCAD的開(kāi)發(fā)工具!它的缺點(diǎn)就是不能編譯(在VB環(huán)境下開(kāi)發(fā)的可以編譯,但運(yùn)行速度明顯降低),每次運(yùn)行都需要加載,一個(gè)開(kāi)發(fā)環(huán)境只能運(yùn)行于一種版本的autocad之下,不能兼容其他版本。

使用VBA開(kāi)發(fā)環(huán)境時(shí)每個(gè)實(shí)體均需要定義,即實(shí)例化,它可以直接訪(fǎng)問(wèn)acad數(shù)據(jù)庫(kù),得到實(shí)體的所有屬性,可以實(shí)時(shí)修改實(shí)例對(duì)象的顏色、線(xiàn)寬、起點(diǎn)、終點(diǎn)、字體、字型等表現(xiàn)形式,可以使用數(shù)據(jù)庫(kù)編程。在VBA環(huán)境中開(kāi)發(fā)的程序所生成的實(shí)體都是有名字的實(shí)體,這就便于在程序中調(diào)用和修改實(shí)體本身的屬性,下面是筆者在公路征地宗地圖開(kāi)發(fā)中的一段程序,定義了INSERTPT無(wú)模式變量來(lái)得到屏幕選擇坐標(biāo)和zhcirc這個(gè)實(shí)例化圓變量、tl實(shí)例化直線(xiàn)變量:

Dim insertpt As Variant'圖形插入點(diǎn)

Dim zhcirc As AcadCircle

Dim tl As AcadLine

Dim st(0 To 2) As Double

Dim et(0 To 2) As Double

Dim i As Single

Open “控制文件.txt” For Input As #1

Input #1, bt$

Input #1, jsdw$

Input #1, dq$

Input #1, dat$

Close #1

ThisDrawing.WindowState = acMaxinsertpt= ThisDrawing.Utility.GetPoint(, vbCrLf & “請(qǐng)輸入插入點(diǎn):”)

qqy$=ThisDrawing.Utility.GetString(1, vbCrLf & “請(qǐng)輸入起始頁(yè)碼:”)

Set mjs = ThisDrawing.ModelSpace.AddText(SS$, st, 4)

mjs.Alignment = acAlignmentCenter

mjs.TextAlignmentPoint = st

mjs.StyleName = “mkroman”

mjs.ScaleFactor = 0.75

mjs.Update

程序運(yùn)行后首先提問(wèn)基礎(chǔ)數(shù)據(jù)文件夾位置,在問(wèn)文本段數(shù)據(jù)文件夾位置,最后程序自動(dòng)讀出控制文件,確定土地權(quán)屬,然后求出征地路段面積(如圖1所示)。接著程序要求用戶(hù)在屏幕上指定生成圖形的位置,用鼠標(biāo)指定輸出位置即可,程序可根據(jù)數(shù)據(jù)多少確定是否自動(dòng)分表,最后在指定位置繪制表格和圖形(如圖2所示)。根據(jù)在實(shí)際工作中的應(yīng)用,本程序使用方便,計(jì)算迅速,界面美觀(guān),生成圖形易于編輯和保存,比原來(lái)用其他語(yǔ)言編寫(xiě)的程序具有無(wú)可比擬的優(yōu)越性。

5. 結(jié)束語(yǔ)

AUTOCAD是一個(gè)開(kāi)放的軟件,其二次開(kāi)發(fā)博大精深,而且還在不停的發(fā)展。隨著新一代開(kāi)發(fā)語(yǔ)言VS.NET的普及應(yīng)用,肯定還會(huì)有更方便的開(kāi)發(fā)工具。作為一個(gè)工程技術(shù)人員,能夠熟練使用AUTOCAD是最基本的,能夠讓AUTOCAD更加專(zhuān)業(yè)化,能夠最大程度上批處理和定制一些常用功能才是最重要的。筆者水平所限,文中不妥之處敬請(qǐng)專(zhuān)家批評(píng)指正。

參考文獻(xiàn)

[1] 張帆主編,鄭立楷、盧擇臨、王成煌 編著,清華大學(xué)出版社《AutoCAD VBA 二次開(kāi)發(fā)教程》

[2] 劉良華 朱東海著,清華大學(xué)出版社《AutoCAD 2000 ARX開(kāi)發(fā)技術(shù)》

[3] 中國(guó)鐵道出版社,《AutoCAD VBA函數(shù)庫(kù)查詢(xún)辭典》

[文章編號(hào)]1006-7619(2008)09-17-533

猜你喜歡
二次開(kāi)發(fā)應(yīng)用
例談對(duì)高中數(shù)學(xué)教材中習(xí)題的二次開(kāi)發(fā)
淺談CAD軟件二次開(kāi)發(fā)的方法及工具
例談?wù)n本習(xí)題的“二次開(kāi)發(fā)”
GM(1,1)白化微分優(yōu)化方程預(yù)測(cè)模型建模過(guò)程應(yīng)用分析
煤礦井下坑道鉆機(jī)人機(jī)工程學(xué)應(yīng)用分析
氣體分離提純應(yīng)用變壓吸附技術(shù)的分析
會(huì)計(jì)與統(tǒng)計(jì)的比較研究