?

淺談AUTOCAD二次開發在工程中的應用

2008-03-30 09:46
建筑科技與管理 2008年10期
關鍵詞:二次開發應用

孟 魁

【摘 要】本文主要介紹當今流行輔助設計軟件AutoCAD二次開發的主要工具及方法,簡單的介紹了難為一般用戶所掌握的ObjectARX,針對其中的能夠在短時間內為非計算專業所掌握的ActiveX作了主要介紹,并結合實際工作對有關功能作出了細致地分析。

【關鍵詞】AutoCAD;二次開發;應用

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是美國AUTODESK公司生產的功能強大的繪圖軟件,和它齊名的還有著名的MICROSTATION等軟件。但是在設計行業,AUTOCAD能夠一枝獨秀,其原因在于AutoCAD有著完善的二次開發環境,有高級語言為其提供專門的定制、開發功能,使其能夠適應各種需要,在不太復雜的開發工作下,迅速的成為各行各業的專門軟件。作為一個工程技術人員,不能只把AutoCAD當成一個繪圖板來使用,那是資源上的浪費,AutoCAD的目標是使繪圖、出圖自動化,用戶的手工工作只是一些簡單的編輯美化工作!要達到這一點就必須要利用AutoCAD的二次開發功能。

從AutoCAD的發展來看,它的二次開發主要有如下發展階段:AUTOLISP、ADS、ARX和VBA?,F就它們的發展過程難易程度和優劣一一說明。

1. Autolisp

Autolisp是AUTOCAD最古老的一個開發語言,到現在仍然保留。早期的Autolisp是一個內嵌式語言,用其它如記事本等工具書寫,在AUTOCAD內部調入使用,沒有自己的單獨開發環境,學習起來不很容易。但是它能夠利用AutoCAD的內部函數,定制工具欄和啟動組,缺點是是一門解釋性的語言,要和AutoCAD系統之間利用IPC機制進行通訊,運行速度較慢。到現在的AUTOCAD版本仍然保留了這門語言,并且有所發展。在AutoCAD2000版以后,改名叫作Visual Lisp,有了自己的開發平臺,可以脫離開發環境獨立運行,可以編譯,運行速度有了很大的提高。筆者早期用它開發過符號庫,但是因為類似商業軟件的出現,現在已經不再使用了!下面是生成坎類符號的源程序,筆者已經調試通過。

(defun c:kz()

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

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

(setq di(distance start end))

(command “line” 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 “line”

(polar start 0 0)

(polar start c 1.5)

()

)

(command “line”

(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以后出現的一種開發方式,在AutoCAD R11以后出現。它是以C語言編寫程序的設計環境,除了可以使用標準的C函數以外,還可以使用對AUTOCAD進行操作ADS函數,可以編譯成EXE文件以后被Autolisp作為一組外部函數裝入和調用。對于AutoCAD來說,Ads程序等價于Autolisp程序。優點是保密性強,有自己的開發環境,好調試,易加載。缺點是根子里還是一門解釋性語言,需要和AutoCAD進行通訊,運行速度較慢!在AutoCAD2000版以后,Ads已被ARX所淘汰。故在此不做太多介紹!

3. ARX

ARX目前最先進的的一種開發方式,它的實質一個動態連接庫,和AutoCAD在同一地址空間運行,所以運行速度很快。ARX能夠直接利用AutoCAD的內核代碼,直接訪問AutoCAD的數據庫、圖形系統和幾何造型中心 ,在運行期間實時擴展AutoCAD具有的類及其功能,建立和AutoCAD本身固有的命令操作方式相同的新命令,它是一種全新的運行模式。ARX需要Visual C++作為開發環境,隨著AutoCAD版本的改進Visual C++的編譯版本也要隨之提高。因為函數名和頭文件的不同,一種版本AUTOCAD的SDK 開發包開發的程序只能在該版本下運行。

ARX應用程序的基本結構包括頭文件,函數說明部分,調用ARX應用程序,初始化函數,卸載函數定義,入口點函數定義和用戶程序主體函數定義等幾個部分,當然這只是簡單的程序,如果要用到用戶窗體等將要用到MFC編程技術,使得程序界面更加漂亮,能夠支持數據庫的訪問,程序組成將更加復雜。

要做ARX應用程序,必須掌握Visual C++,這是一門非常難學的語言,指針是整個語言的核心,這就使得ARX在非專業領域的發展非常難。另外ARX應用程序開發周期長,調試困難,使得一些中小用戶盡量避免用它來做應用程序。但是它非常專業,能夠利用Visual C++的MFC類庫,做出的程序界面漂亮,所以大部分基于AutoCAD的專業軟件都是利用ARX來開發的!在我們公路上著名的緯地程序和專業地形圖成圖軟件cass就是利用這種開發模式作出來的,它的拖動技術就是典型的對AutoCAD功能和命令的擴展!

4. VBA開發

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

使用VBA開發環境時每個實體均需要定義,即實例化,它可以直接訪問acad數據庫,得到實體的所有屬性,可以實時修改實例對象的顏色、線寬、起點、終點、字體、字型等表現形式,可以使用數據庫編程。在VBA環境中開發的程序所生成的實體都是有名字的實體,這就便于在程序中調用和修改實體本身的屬性,下面是筆者在公路征地宗地圖開發中的一段程序,定義了INSERTPT無模式變量來得到屏幕選擇坐標和zhcirc這個實例化圓變量、tl實例化直線變量:

Dim insertpt As Variant'圖形插入點

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 & “請輸入插入點:”)

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

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

mjs.Alignment = acAlignmentCenter

mjs.TextAlignmentPoint = st

mjs.StyleName = “mkroman”

mjs.ScaleFactor = 0.75

mjs.Update

程序運行后首先提問基礎數據文件夾位置,在問文本段數據文件夾位置,最后程序自動讀出控制文件,確定土地權屬,然后求出征地路段面積(如圖1所示)。接著程序要求用戶在屏幕上指定生成圖形的位置,用鼠標指定輸出位置即可,程序可根據數據多少確定是否自動分表,最后在指定位置繪制表格和圖形(如圖2所示)。根據在實際工作中的應用,本程序使用方便,計算迅速,界面美觀,生成圖形易于編輯和保存,比原來用其他語言編寫的程序具有無可比擬的優越性。

5. 結束語

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

參考文獻

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

[2] 劉良華 朱東海著,清華大學出版社《AutoCAD 2000 ARX開發技術》

[3] 中國鐵道出版社,《AutoCAD VBA函數庫查詢辭典》

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

猜你喜歡
二次開發應用
例談對高中數學教材中習題的二次開發
淺談CAD軟件二次開發的方法及工具
例談課本習題的“二次開發”
GM(1,1)白化微分優化方程預測模型建模過程應用分析
煤礦井下坑道鉆機人機工程學應用分析
氣體分離提純應用變壓吸附技術的分析
會計與統計的比較研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合